diff --git a/ChangeLog b/ChangeLog
index cf9c96c..781f0ca 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,17 +1,3 @@
-2011-04-18: Version 3.3.0
-
-        Fixed bug in floating point rounding in Crankshaft on ARM
-        (issue 958)
-
-        Fixed a number of issues with running without VFPv3 support on ARM
-        (issue 1315)
-
-        Introduced v8Locale.Collator, a partial implementation of Collator
-        per last ECMAScript meeting + mailing list.
-
-        Minor performance improvements and bug fixes.
-
-
 2011-04-13: Version 3.2.10
 
         Fixed bug in external float arrays on ARM (issue 1323).
diff --git a/src/SConscript b/src/SConscript
index 417e283..a68ee3e 100755
--- a/src/SConscript
+++ b/src/SConscript
@@ -297,11 +297,6 @@
 '''.split()
 
 
-EXPERIMENTAL_LIBRARY_FILES = '''
-proxy.js
-'''.split()
-
-
 def Abort(message):
   print message
   sys.exit(1)
@@ -329,16 +324,9 @@
   # compile it.
   library_files = [s for s in LIBRARY_FILES]
   library_files.append('macros.py')
-  libraries_src = env.JS2C(['libraries.cc'], library_files, TYPE='CORE')
+  libraries_src, libraries_empty_src = env.JS2C(['libraries.cc', 'libraries-empty.cc'], library_files, TYPE='CORE')
   libraries_obj = context.ConfigureObject(env, libraries_src, CPPPATH=['.'])
 
-  # Combine the experimental JavaScript library files into a C++ file
-  # and compile it.
-  experimental_library_files = [ s for s in EXPERIMENTAL_LIBRARY_FILES ]
-  experimental_library_files.append('macros.py')
-  experimental_libraries_src = env.JS2C(['experimental-libraries.cc'], experimental_library_files, TYPE='EXPERIMENTAL')
-  experimental_libraries_obj = context.ConfigureObject(env, experimental_libraries_src, CPPPATH=['.'])
-
   source_objs = context.ConfigureObject(env, source_files)
   non_snapshot_files = [source_objs]
 
@@ -355,7 +343,7 @@
   mksnapshot_env = env.Copy()
   mksnapshot_env.Replace(**context.flags['mksnapshot'])
   mksnapshot_src = 'mksnapshot.cc'
-  mksnapshot = mksnapshot_env.Program('mksnapshot', [mksnapshot_src, libraries_obj, experimental_libraries_obj,  non_snapshot_files, empty_snapshot_obj], PDB='mksnapshot.exe.pdb')
+  mksnapshot = mksnapshot_env.Program('mksnapshot', [mksnapshot_src, libraries_obj, non_snapshot_files, empty_snapshot_obj], PDB='mksnapshot.exe.pdb')
   if context.use_snapshot:
     if context.build_snapshot:
       snapshot_cc = env.Snapshot('snapshot.cc', mksnapshot, LOGFILE=File('snapshot.log').abspath)
@@ -364,7 +352,7 @@
     snapshot_obj = context.ConfigureObject(env, snapshot_cc, CPPPATH=['.'])
   else:
     snapshot_obj = empty_snapshot_obj
-  library_objs = [non_snapshot_files, libraries_obj, experimental_libraries_obj, snapshot_obj]
+  library_objs = [non_snapshot_files, libraries_obj, snapshot_obj]
   return (library_objs, d8_objs, [mksnapshot], preparser_objs)
 
 
diff --git a/src/api.cc b/src/api.cc
index c3684f7..247507f 100644
--- a/src/api.cc
+++ b/src/api.cc
@@ -3709,7 +3709,6 @@
 
     // Create the environment.
     env = isolate->bootstrapper()->CreateEnvironment(
-        isolate,
         Utils::OpenHandle(*global_object),
         proxy_template,
         extensions);
diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc
index d66daea..8c147f9 100644
--- a/src/arm/code-stubs-arm.cc
+++ b/src/arm/code-stubs-arm.cc
@@ -1817,9 +1817,6 @@
     case TRBinaryOpIC::ODDBALL:
       GenerateOddballStub(masm);
       break;
-    case TRBinaryOpIC::BOTH_STRING:
-      GenerateBothStringStub(masm);
-      break;
     case TRBinaryOpIC::STRING:
       GenerateStringStub(masm);
       break;
@@ -2260,36 +2257,6 @@
 }
 
 
-void TypeRecordingBinaryOpStub::GenerateBothStringStub(MacroAssembler* masm) {
-  Label call_runtime;
-  ASSERT(operands_type_ == TRBinaryOpIC::BOTH_STRING);
-  ASSERT(op_ == Token::ADD);
-  // If both arguments are strings, call the string add stub.
-  // Otherwise, do a transition.
-
-  // Registers containing left and right operands respectively.
-  Register left = r1;
-  Register right = r0;
-
-  // Test if left operand is a string.
-  __ JumpIfSmi(left, &call_runtime);
-  __ CompareObjectType(left, r2, r2, FIRST_NONSTRING_TYPE);
-  __ b(ge, &call_runtime);
-
-  // Test if right operand is a string.
-  __ JumpIfSmi(right, &call_runtime);
-  __ CompareObjectType(right, r2, r2, FIRST_NONSTRING_TYPE);
-  __ b(ge, &call_runtime);
-
-  StringAddStub string_add_stub(NO_STRING_CHECK_IN_STUB);
-  GenerateRegisterArgsPush(masm);
-  __ TailCallStub(&string_add_stub);
-
-  __ bind(&call_runtime);
-  GenerateTypeTransition(masm);
-}
-
-
 void TypeRecordingBinaryOpStub::GenerateInt32Stub(MacroAssembler* masm) {
   ASSERT(operands_type_ == TRBinaryOpIC::INT32);
 
@@ -2440,6 +2407,8 @@
         // Save the left value on the stack.
         __ Push(r5, r4);
 
+        Label pop_and_call_runtime;
+
         // Allocate a heap number to store the result.
         heap_number_result = r5;
         GenerateHeapResultAllocation(masm,
@@ -2447,7 +2416,7 @@
                                      heap_number_map,
                                      scratch1,
                                      scratch2,
-                                     &call_runtime);
+                                     &pop_and_call_runtime);
 
         // Load the left value from the value saved on the stack.
         __ Pop(r1, r0);
@@ -2458,6 +2427,10 @@
         if (FLAG_debug_code) {
           __ stop("Unreachable code.");
         }
+
+        __ bind(&pop_and_call_runtime);
+        __ Drop(2);
+        __ b(&call_runtime);
       }
 
       break;
@@ -3468,11 +3441,20 @@
 
 #ifdef ENABLE_LOGGING_AND_PROFILING
   // If this is the outermost JS call, set js_entry_sp value.
+  Label non_outermost_js;
   ExternalReference js_entry_sp(Isolate::k_js_entry_sp_address, isolate);
   __ mov(r5, Operand(ExternalReference(js_entry_sp)));
   __ ldr(r6, MemOperand(r5));
-  __ cmp(r6, Operand(0, RelocInfo::NONE));
-  __ str(fp, MemOperand(r5), eq);
+  __ cmp(r6, Operand(0));
+  __ b(ne, &non_outermost_js);
+  __ str(fp, MemOperand(r5));
+  __ mov(ip, Operand(Smi::FromInt(StackFrame::OUTERMOST_JSENTRY_FRAME)));
+  Label cont;
+  __ b(&cont);
+  __ bind(&non_outermost_js);
+  __ mov(ip, Operand(Smi::FromInt(StackFrame::INNER_JSENTRY_FRAME)));
+  __ bind(&cont);
+  __ push(ip);
 #endif
 
   // Call a faked try-block that does the invoke.
@@ -3530,27 +3512,22 @@
   __ mov(lr, Operand(pc));
   masm->add(pc, ip, Operand(Code::kHeaderSize - kHeapObjectTag));
 
-  // Unlink this frame from the handler chain. When reading the
-  // address of the next handler, there is no need to use the address
-  // displacement since the current stack pointer (sp) points directly
-  // to the stack handler.
-  __ ldr(r3, MemOperand(sp, StackHandlerConstants::kNextOffset));
-  __ mov(ip, Operand(ExternalReference(Isolate::k_handler_address, isolate)));
-  __ str(r3, MemOperand(ip));
-  // No need to restore registers
-  __ add(sp, sp, Operand(StackHandlerConstants::kSize));
-
-#ifdef ENABLE_LOGGING_AND_PROFILING
-  // If current FP value is the same as js_entry_sp value, it means that
-  // the current function is the outermost.
-  __ mov(r5, Operand(ExternalReference(js_entry_sp)));
-  __ ldr(r6, MemOperand(r5));
-  __ cmp(fp, Operand(r6));
-  __ mov(r6, Operand(0, RelocInfo::NONE), LeaveCC, eq);
-  __ str(r6, MemOperand(r5), eq);
-#endif
+  // Unlink this frame from the handler chain.
+  __ PopTryHandler();
 
   __ bind(&exit);  // r0 holds result
+#ifdef ENABLE_LOGGING_AND_PROFILING
+  // Check if the current stack frame is marked as the outermost JS frame.
+  Label non_outermost_js_2;
+  __ pop(r5);
+  __ cmp(r5, Operand(Smi::FromInt(StackFrame::OUTERMOST_JSENTRY_FRAME)));
+  __ b(ne, &non_outermost_js_2);
+  __ mov(r6, Operand(0));
+  __ mov(r5, Operand(ExternalReference(js_entry_sp)));
+  __ str(r6, MemOperand(r5));
+  __ bind(&non_outermost_js_2);
+#endif
+
   // Restore the top frame descriptors from the stack.
   __ pop(r3);
   __ mov(ip,
@@ -3711,7 +3688,7 @@
   __ b(ne, &slow);
 
   // Null is not instance of anything.
-  __ cmp(scratch, Operand(masm->isolate()->factory()->null_value()));
+  __ cmp(scratch, Operand(FACTORY->null_value()));
   __ b(ne, &object_not_null);
   __ mov(r0, Operand(Smi::FromInt(1)));
   __ Ret(HasArgsInRegisters() ? 0 : 2);
@@ -4209,7 +4186,7 @@
 
   __ bind(&failure);
   // For failure and exception return null.
-  __ mov(r0, Operand(masm->isolate()->factory()->null_value()));
+  __ mov(r0, Operand(FACTORY->null_value()));
   __ add(sp, sp, Operand(4 * kPointerSize));
   __ Ret();
 
@@ -4280,8 +4257,6 @@
   const int kMaxInlineLength = 100;
   Label slowcase;
   Label done;
-  Factory* factory = masm->isolate()->factory();
-
   __ ldr(r1, MemOperand(sp, kPointerSize * 2));
   STATIC_ASSERT(kSmiTag == 0);
   STATIC_ASSERT(kSmiTagSize == 1);
@@ -4316,7 +4291,7 @@
   // Interleave operations for better latency.
   __ ldr(r2, ContextOperand(cp, Context::GLOBAL_INDEX));
   __ add(r3, r0, Operand(JSRegExpResult::kSize));
-  __ mov(r4, Operand(factory->empty_fixed_array()));
+  __ mov(r4, Operand(FACTORY->empty_fixed_array()));
   __ ldr(r2, FieldMemOperand(r2, GlobalObject::kGlobalContextOffset));
   __ str(r3, FieldMemOperand(r0, JSObject::kElementsOffset));
   __ ldr(r2, ContextOperand(r2, Context::REGEXP_RESULT_MAP_INDEX));
@@ -4337,13 +4312,13 @@
   // r5: Number of elements in array, untagged.
 
   // Set map.
-  __ mov(r2, Operand(factory->fixed_array_map()));
+  __ mov(r2, Operand(FACTORY->fixed_array_map()));
   __ str(r2, FieldMemOperand(r3, HeapObject::kMapOffset));
   // Set FixedArray length.
   __ mov(r6, Operand(r5, LSL, kSmiTagSize));
   __ str(r6, FieldMemOperand(r3, FixedArray::kLengthOffset));
   // Fill contents of fixed-array with the-hole.
-  __ mov(r2, Operand(factory->the_hole_value()));
+  __ mov(r2, Operand(FACTORY->the_hole_value()));
   __ add(r3, r3, Operand(FixedArray::kHeaderSize - kHeapObjectTag));
   // Fill fixed array elements with hole.
   // r0: JSArray, tagged.
diff --git a/src/arm/code-stubs-arm.h b/src/arm/code-stubs-arm.h
index 0bb0025..d82afc7 100644
--- a/src/arm/code-stubs-arm.h
+++ b/src/arm/code-stubs-arm.h
@@ -158,7 +158,6 @@
   void GenerateHeapNumberStub(MacroAssembler* masm);
   void GenerateOddballStub(MacroAssembler* masm);
   void GenerateStringStub(MacroAssembler* masm);
-  void GenerateBothStringStub(MacroAssembler* masm);
   void GenerateGenericStub(MacroAssembler* masm);
   void GenerateAddStrings(MacroAssembler* masm);
   void GenerateCallRuntime(MacroAssembler* masm);
diff --git a/src/arm/full-codegen-arm.cc b/src/arm/full-codegen-arm.cc
index 85e4262..871b453 100644
--- a/src/arm/full-codegen-arm.cc
+++ b/src/arm/full-codegen-arm.cc
@@ -3161,14 +3161,15 @@
 void FullCodeGenerator::EmitCallFunction(ZoneList<Expression*>* args) {
   ASSERT(args->length() >= 2);
 
-  int arg_count = args->length() - 2;  // 2 ~ receiver and function.
-  for (int i = 0; i < arg_count + 1; i++) {
-    VisitForStackValue(args->at(i));
+  int arg_count = args->length() - 2;  // For receiver and function.
+  VisitForStackValue(args->at(0));  // Receiver.
+  for (int i = 0; i < arg_count; i++) {
+    VisitForStackValue(args->at(i + 1));
   }
-  VisitForAccumulatorValue(args->last());  // Function.
+  VisitForAccumulatorValue(args->at(arg_count + 1));  // Function.
 
-  // InvokeFunction requires the function in r1. Move it in there.
-  __ mov(r1, result_register());
+  // InvokeFunction requires function in r1. Move it in there.
+  if (!result_register().is(r1)) __ mov(r1, result_register());
   ParameterCount count(arg_count);
   __ InvokeFunction(r1, count, CALL_FUNCTION);
   __ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
@@ -4294,6 +4295,7 @@
     default:
       break;
   }
+
   __ Call(ic, mode);
 }
 
@@ -4315,6 +4317,7 @@
     default:
       break;
   }
+
   __ Call(ic, RelocInfo::CODE_TARGET);
   if (patch_site != NULL && patch_site->is_bound()) {
     patch_site->EmitPatchInfo();
diff --git a/src/arm/ic-arm.cc b/src/arm/ic-arm.cc
index db04f33..8acf7c2 100644
--- a/src/arm/ic-arm.cc
+++ b/src/arm/ic-arm.cc
@@ -926,6 +926,217 @@
   __ TailCallExternalReference(ref, 2, 1);
 }
 
+// Returns the code marker, or the 0 if the code is not marked.
+static inline int InlinedICSiteMarker(Address address,
+                                      Address* inline_end_address) {
+  if (V8::UseCrankshaft()) return false;
+
+  // If the instruction after the call site is not the pseudo instruction nop1
+  // then this is not related to an inlined in-object property load. The nop1
+  // instruction is located just after the call to the IC in the deferred code
+  // handling the miss in the inlined code. After the nop1 instruction there is
+  // a branch instruction for jumping back from the deferred code.
+  Address address_after_call = address + Assembler::kCallTargetAddressOffset;
+  Instr instr_after_call = Assembler::instr_at(address_after_call);
+  int code_marker = MacroAssembler::GetCodeMarker(instr_after_call);
+
+  // A negative result means the code is not marked.
+  if (code_marker <= 0) return 0;
+
+  Address address_after_nop = address_after_call + Assembler::kInstrSize;
+  Instr instr_after_nop = Assembler::instr_at(address_after_nop);
+  // There may be some reg-reg move and frame merging code to skip over before
+  // the branch back from the DeferredReferenceGetKeyedValue code to the inlined
+  // code.
+  while (!Assembler::IsBranch(instr_after_nop)) {
+    address_after_nop += Assembler::kInstrSize;
+    instr_after_nop = Assembler::instr_at(address_after_nop);
+  }
+
+  // Find the end of the inlined code for handling the load.
+  int b_offset =
+      Assembler::GetBranchOffset(instr_after_nop) + Assembler::kPcLoadDelta;
+  ASSERT(b_offset < 0);  // Jumping back from deferred code.
+  *inline_end_address = address_after_nop + b_offset;
+
+  return code_marker;
+}
+
+
+bool LoadIC::PatchInlinedLoad(Address address, Object* map, int offset) {
+  if (V8::UseCrankshaft()) return false;
+
+  // Find the end of the inlined code for handling the load if this is an
+  // inlined IC call site.
+  Address inline_end_address = 0;
+  if (InlinedICSiteMarker(address, &inline_end_address)
+      != Assembler::PROPERTY_ACCESS_INLINED) {
+    return false;
+  }
+
+  // Patch the offset of the property load instruction (ldr r0, [r1, #+XXX]).
+  // The immediate must be representable in 12 bits.
+  ASSERT((JSObject::kMaxInstanceSize - JSObject::kHeaderSize) < (1 << 12));
+  Address ldr_property_instr_address =
+      inline_end_address - Assembler::kInstrSize;
+  ASSERT(Assembler::IsLdrRegisterImmediate(
+      Assembler::instr_at(ldr_property_instr_address)));
+  Instr ldr_property_instr = Assembler::instr_at(ldr_property_instr_address);
+  ldr_property_instr = Assembler::SetLdrRegisterImmediateOffset(
+      ldr_property_instr, offset - kHeapObjectTag);
+  Assembler::instr_at_put(ldr_property_instr_address, ldr_property_instr);
+
+  // Indicate that code has changed.
+  CPU::FlushICache(ldr_property_instr_address, 1 * Assembler::kInstrSize);
+
+  // Patch the map check.
+  // For PROPERTY_ACCESS_INLINED, the load map instruction is generated
+  // 4 instructions before the end of the inlined code.
+  // See codgen-arm.cc CodeGenerator::EmitNamedLoad.
+  int ldr_map_offset = -4;
+  Address ldr_map_instr_address =
+      inline_end_address + ldr_map_offset * Assembler::kInstrSize;
+  Assembler::set_target_address_at(ldr_map_instr_address,
+                                   reinterpret_cast<Address>(map));
+  return true;
+}
+
+
+bool LoadIC::PatchInlinedContextualLoad(Address address,
+                                        Object* map,
+                                        Object* cell,
+                                        bool is_dont_delete) {
+  // Find the end of the inlined code for handling the contextual load if
+  // this is inlined IC call site.
+  Address inline_end_address = 0;
+  int marker = InlinedICSiteMarker(address, &inline_end_address);
+  if (!((marker == Assembler::PROPERTY_ACCESS_INLINED_CONTEXT) ||
+        (marker == Assembler::PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE))) {
+    return false;
+  }
+  // On ARM we don't rely on the is_dont_delete argument as the hint is already
+  // embedded in the code marker.
+  bool marker_is_dont_delete =
+      marker == Assembler::PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE;
+
+  // These are the offsets from the end of the inlined code.
+  // See codgen-arm.cc CodeGenerator::EmitNamedLoad.
+  int ldr_map_offset = marker_is_dont_delete ? -5: -8;
+  int ldr_cell_offset = marker_is_dont_delete ? -2: -5;
+  if (FLAG_debug_code && marker_is_dont_delete) {
+    // Three extra instructions were generated to check for the_hole_value.
+    ldr_map_offset -= 3;
+    ldr_cell_offset -= 3;
+  }
+  Address ldr_map_instr_address =
+      inline_end_address + ldr_map_offset * Assembler::kInstrSize;
+  Address ldr_cell_instr_address =
+      inline_end_address + ldr_cell_offset * Assembler::kInstrSize;
+
+  // Patch the map check.
+  Assembler::set_target_address_at(ldr_map_instr_address,
+                                   reinterpret_cast<Address>(map));
+  // Patch the cell address.
+  Assembler::set_target_address_at(ldr_cell_instr_address,
+                                   reinterpret_cast<Address>(cell));
+
+  return true;
+}
+
+
+bool StoreIC::PatchInlinedStore(Address address, Object* map, int offset) {
+  if (V8::UseCrankshaft()) return false;
+
+  // Find the end of the inlined code for the store if there is an
+  // inlined version of the store.
+  Address inline_end_address = 0;
+  if (InlinedICSiteMarker(address, &inline_end_address)
+      != Assembler::PROPERTY_ACCESS_INLINED) {
+    return false;
+  }
+
+  // Compute the address of the map load instruction.
+  Address ldr_map_instr_address =
+      inline_end_address -
+      (CodeGenerator::GetInlinedNamedStoreInstructionsAfterPatch() *
+       Assembler::kInstrSize);
+
+  // Update the offsets if initializing the inlined store. No reason
+  // to update the offsets when clearing the inlined version because
+  // it will bail out in the map check.
+  if (map != HEAP->null_value()) {
+    // Patch the offset in the actual store instruction.
+    Address str_property_instr_address =
+        ldr_map_instr_address + 3 * Assembler::kInstrSize;
+    Instr str_property_instr = Assembler::instr_at(str_property_instr_address);
+    ASSERT(Assembler::IsStrRegisterImmediate(str_property_instr));
+    str_property_instr = Assembler::SetStrRegisterImmediateOffset(
+        str_property_instr, offset - kHeapObjectTag);
+    Assembler::instr_at_put(str_property_instr_address, str_property_instr);
+
+    // Patch the offset in the add instruction that is part of the
+    // write barrier.
+    Address add_offset_instr_address =
+        str_property_instr_address + Assembler::kInstrSize;
+    Instr add_offset_instr = Assembler::instr_at(add_offset_instr_address);
+    ASSERT(Assembler::IsAddRegisterImmediate(add_offset_instr));
+    add_offset_instr = Assembler::SetAddRegisterImmediateOffset(
+        add_offset_instr, offset - kHeapObjectTag);
+    Assembler::instr_at_put(add_offset_instr_address, add_offset_instr);
+
+    // Indicate that code has changed.
+    CPU::FlushICache(str_property_instr_address, 2 * Assembler::kInstrSize);
+  }
+
+  // Patch the map check.
+  Assembler::set_target_address_at(ldr_map_instr_address,
+                                   reinterpret_cast<Address>(map));
+
+  return true;
+}
+
+
+bool KeyedLoadIC::PatchInlinedLoad(Address address, Object* map) {
+  if (V8::UseCrankshaft()) return false;
+
+  Address inline_end_address = 0;
+  if (InlinedICSiteMarker(address, &inline_end_address)
+      != Assembler::PROPERTY_ACCESS_INLINED) {
+    return false;
+  }
+
+  // Patch the map check.
+  Address ldr_map_instr_address =
+      inline_end_address -
+      (CodeGenerator::GetInlinedKeyedLoadInstructionsAfterPatch() *
+      Assembler::kInstrSize);
+  Assembler::set_target_address_at(ldr_map_instr_address,
+                                   reinterpret_cast<Address>(map));
+  return true;
+}
+
+
+bool KeyedStoreIC::PatchInlinedStore(Address address, Object* map) {
+  if (V8::UseCrankshaft()) return false;
+
+  // Find the end of the inlined code for handling the store if this is an
+  // inlined IC call site.
+  Address inline_end_address = 0;
+  if (InlinedICSiteMarker(address, &inline_end_address)
+      != Assembler::PROPERTY_ACCESS_INLINED) {
+    return false;
+  }
+
+  // Patch the map check.
+  Address ldr_map_instr_address =
+      inline_end_address -
+      (CodeGenerator::kInlinedKeyedStoreInstructionsAfterPatch *
+      Assembler::kInstrSize);
+  Assembler::set_target_address_at(ldr_map_instr_address,
+                                   reinterpret_cast<Address>(map));
+  return true;
+}
+
 
 Object* KeyedLoadIC_Miss(Arguments args);
 
diff --git a/src/arm/lithium-arm.cc b/src/arm/lithium-arm.cc
index faf6404..3f1d15b 100644
--- a/src/arm/lithium-arm.cc
+++ b/src/arm/lithium-arm.cc
@@ -61,21 +61,22 @@
 
 #ifdef DEBUG
 void LInstruction::VerifyCall() {
-  // Call instructions can use only fixed registers as temporaries and
-  // outputs because all registers are blocked by the calling convention.
-  // Inputs operands must use a fixed register or use-at-start policy or
-  // a non-register policy.
+  // Call instructions can use only fixed registers as
+  // temporaries and outputs because all registers
+  // are blocked by the calling convention.
+  // Inputs must use a fixed register.
   ASSERT(Output() == NULL ||
          LUnallocated::cast(Output())->HasFixedPolicy() ||
          !LUnallocated::cast(Output())->HasRegisterPolicy());
   for (UseIterator it(this); it.HasNext(); it.Advance()) {
-    LUnallocated* operand = LUnallocated::cast(it.Next());
-    ASSERT(operand->HasFixedPolicy() ||
-           operand->IsUsedAtStart());
+    LOperand* operand = it.Next();
+    ASSERT(LUnallocated::cast(operand)->HasFixedPolicy() ||
+           !LUnallocated::cast(operand)->HasRegisterPolicy());
   }
   for (TempIterator it(this); it.HasNext(); it.Advance()) {
-    LUnallocated* operand = LUnallocated::cast(it.Next());
-    ASSERT(operand->HasFixedPolicy() ||!operand->HasRegisterPolicy());
+    LOperand* operand = it.Next();
+    ASSERT(LUnallocated::cast(operand)->HasFixedPolicy() ||
+           !LUnallocated::cast(operand)->HasRegisterPolicy());
   }
 }
 #endif
@@ -300,13 +301,6 @@
 }
 
 
-void LInvokeFunction::PrintDataTo(StringStream* stream) {
-  stream->Add("= ");
-  InputAt(0)->PrintTo(stream);
-  stream->Add(" #%d / ", arity());
-}
-
-
 void LCallKeyed::PrintDataTo(StringStream* stream) {
   stream->Add("[r2] #%d / ", arity());
 }
@@ -1218,14 +1212,6 @@
 }
 
 
-LInstruction* LChunkBuilder::DoInvokeFunction(HInvokeFunction* instr) {
-  LOperand* function = UseFixed(instr->function(), r1);
-  argument_count_ -= instr->argument_count();
-  LInvokeFunction* result = new LInvokeFunction(function);
-  return MarkAsCall(DefineFixed(result, r0), instr, CANNOT_DEOPTIMIZE_EAGERLY);
-}
-
-
 LInstruction* LChunkBuilder::DoUnaryMathOperation(HUnaryMathOperation* instr) {
   BuiltinFunctionId op = instr->op();
   if (op == kMathLog || op == kMathSin || op == kMathCos) {
@@ -1960,13 +1946,6 @@
 }
 
 
-LInstruction* LChunkBuilder::DoStringAdd(HStringAdd* instr) {
-  LOperand* left = UseRegisterAtStart(instr->left());
-  LOperand* right = UseRegisterAtStart(instr->right());
-  return MarkAsCall(DefineFixed(new LStringAdd(left, right), r0), instr);
-}
-
-
 LInstruction* LChunkBuilder::DoStringCharCodeAt(HStringCharCodeAt* instr) {
   LOperand* string = UseRegister(instr->string());
   LOperand* index = UseRegisterOrConstant(instr->index());
diff --git a/src/arm/lithium-arm.h b/src/arm/lithium-arm.h
index 4add6bf..6da7c86 100644
--- a/src/arm/lithium-arm.h
+++ b/src/arm/lithium-arm.h
@@ -106,7 +106,6 @@
   V(InstanceOfAndBranch)                        \
   V(InstanceOfKnownGlobal)                      \
   V(Integer32ToDouble)                          \
-  V(InvokeFunction)                             \
   V(IsNull)                                     \
   V(IsNullAndBranch)                            \
   V(IsObject)                                   \
@@ -153,7 +152,6 @@
   V(StoreKeyedSpecializedArrayElement)          \
   V(StoreNamedField)                            \
   V(StoreNamedGeneric)                          \
-  V(StringAdd)                                  \
   V(StringCharCodeAt)                           \
   V(StringCharFromCode)                         \
   V(StringLength)                               \
@@ -1414,23 +1412,6 @@
 };
 
 
-class LInvokeFunction: public LTemplateInstruction<1, 1, 0> {
- public:
-  explicit LInvokeFunction(LOperand* function) {
-    inputs_[0] = function;
-  }
-
-  DECLARE_CONCRETE_INSTRUCTION(InvokeFunction, "invoke-function")
-  DECLARE_HYDROGEN_ACCESSOR(InvokeFunction)
-
-  LOperand* function() { return inputs_[0]; }
-
-  virtual void PrintDataTo(StringStream* stream);
-
-  int arity() const { return hydrogen()->argument_count() - 1; }
-};
-
-
 class LCallKeyed: public LTemplateInstruction<1, 1, 0> {
  public:
   explicit LCallKeyed(LOperand* key) {
@@ -1725,22 +1706,6 @@
 };
 
 
-class LStringAdd: public LTemplateInstruction<1, 2, 0> {
- public:
-  LStringAdd(LOperand* left, LOperand* right) {
-    inputs_[0] = left;
-    inputs_[1] = right;
-  }
-
-  DECLARE_CONCRETE_INSTRUCTION(StringAdd, "string-add")
-  DECLARE_HYDROGEN_ACCESSOR(StringAdd)
-
-  LOperand* left() { return inputs_[0]; }
-  LOperand* right() { return inputs_[1]; }
-};
-
-
-
 class LStringCharCodeAt: public LTemplateInstruction<1, 2, 0> {
  public:
   LStringCharCodeAt(LOperand* string, LOperand* index) {
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc
index 2d415cb..4912449 100644
--- a/src/arm/lithium-codegen-arm.cc
+++ b/src/arm/lithium-codegen-arm.cc
@@ -91,7 +91,7 @@
 
 void LCodeGen::FinishCode(Handle<Code> code) {
   ASSERT(is_done());
-  code->set_stack_slots(GetStackSlotCount());
+  code->set_stack_slots(StackSlotCount());
   code->set_safepoint_table_offset(safepoints_.GetCodeOffset());
   PopulateDeoptimizationData(code);
   Deoptimizer::EnsureRelocSpaceForLazyDeoptimization(code);
@@ -149,7 +149,7 @@
   __ add(fp, sp, Operand(2 * kPointerSize));  // Adjust FP to point to saved FP.
 
   // Reserve space for the stack slots needed by the code.
-  int slots = GetStackSlotCount();
+  int slots = StackSlotCount();
   if (slots > 0) {
     if (FLAG_debug_code) {
       __ mov(r0, Operand(slots));
@@ -263,7 +263,7 @@
 
 bool LCodeGen::GenerateSafepointTable() {
   ASSERT(is_done());
-  safepoints_.Emit(masm(), GetStackSlotCount());
+  safepoints_.Emit(masm(), StackSlotCount());
   return !is_aborted();
 }
 
@@ -459,7 +459,7 @@
     translation->StoreDoubleStackSlot(op->index());
   } else if (op->IsArgument()) {
     ASSERT(is_tagged);
-    int src_index = GetStackSlotCount() + op->index();
+    int src_index = StackSlotCount() + op->index();
     translation->StoreStackSlot(src_index);
   } else if (op->IsRegister()) {
     Register reg = ToRegister(op);
@@ -2180,7 +2180,7 @@
     __ push(r0);
     __ CallRuntime(Runtime::kTraceExit, 1);
   }
-  int32_t sp_delta = (GetParameterCount() + 1) * kPointerSize;
+  int32_t sp_delta = (ParameterCount() + 1) * kPointerSize;
   __ mov(sp, fp);
   __ ldm(ia_w, sp, fp.bit() | lr.bit());
   __ add(sp, sp, Operand(sp_delta));
@@ -2861,49 +2861,9 @@
 void LCodeGen::DoMathRound(LUnaryMathOperation* instr) {
   DoubleRegister input = ToDoubleRegister(instr->InputAt(0));
   Register result = ToRegister(instr->result());
-  Register scratch1 = result;
-  Register scratch2 = scratch0();
-  Label done, check_sign_on_zero;
-
-  // Extract exponent bits.
-  __ vmov(scratch1, input.high());
-  __ ubfx(scratch2,
-          scratch1,
-          HeapNumber::kExponentShift,
-          HeapNumber::kExponentBits);
-
-  // If the number is in ]-0.5, +0.5[, the result is +/- 0.
-  __ cmp(scratch2, Operand(HeapNumber::kExponentBias - 2));
-  __ mov(result, Operand(0), LeaveCC, le);
-  if (instr->hydrogen()->CheckFlag(HValue::kBailoutOnMinusZero)) {
-    __ b(le, &check_sign_on_zero);
-  } else {
-    __ b(le, &done);
-  }
-
-  // The following conversion will not work with numbers
-  // outside of ]-2^32, 2^32[.
-  __ cmp(scratch2, Operand(HeapNumber::kExponentBias + 32));
-  DeoptimizeIf(ge, instr->environment());
-
-  // Save the original sign for later comparison.
-  __ and_(scratch2, scratch1, Operand(HeapNumber::kSignMask));
-
-  __ vmov(double_scratch0(), 0.5);
-  __ vadd(input, input, double_scratch0());
-
-  // Check sign of the result: if the sign changed, the input
-  // value was in ]0.5, 0[ and the result should be -0.
-  __ vmov(scratch1, input.high());
-  __ eor(scratch1, scratch1, Operand(scratch2), SetCC);
-  if (instr->hydrogen()->CheckFlag(HValue::kBailoutOnMinusZero)) {
-    DeoptimizeIf(mi, instr->environment());
-  } else {
-    __ mov(result, Operand(0), LeaveCC, mi);
-    __ b(mi, &done);
-  }
-
-  __ EmitVFPTruncate(kRoundToMinusInf,
+  Register scratch1 = scratch0();
+  Register scratch2 = result;
+  __ EmitVFPTruncate(kRoundToNearest,
                      double_scratch0().low(),
                      input,
                      scratch1,
@@ -2913,14 +2873,14 @@
 
   if (instr->hydrogen()->CheckFlag(HValue::kBailoutOnMinusZero)) {
     // Test for -0.
+    Label done;
     __ cmp(result, Operand(0));
     __ b(ne, &done);
-    __ bind(&check_sign_on_zero);
     __ vmov(scratch1, input.high());
     __ tst(scratch1, Operand(HeapNumber::kSignMask));
     DeoptimizeIf(ne, instr->environment());
+    __ bind(&done);
   }
-  __ bind(&done);
 }
 
 
@@ -3065,21 +3025,6 @@
 }
 
 
-void LCodeGen::DoInvokeFunction(LInvokeFunction* instr) {
-  ASSERT(ToRegister(instr->function()).is(r1));
-  ASSERT(instr->HasPointerMap());
-  ASSERT(instr->HasDeoptimizationEnvironment());
-  LPointerMap* pointers = instr->pointer_map();
-  LEnvironment* env = instr->deoptimization_environment();
-  RecordPosition(pointers->position());
-  RegisterEnvironmentForDeoptimization(env);
-  SafepointGenerator generator(this, pointers, env->deoptimization_index());
-  ParameterCount count(instr->arity());
-  __ InvokeFunction(r1, count, CALL_FUNCTION, &generator);
-  __ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
-}
-
-
 void LCodeGen::DoCallKeyed(LCallKeyed* instr) {
   ASSERT(ToRegister(instr->result()).is(r0));
 
@@ -3278,14 +3223,6 @@
 }
 
 
-void LCodeGen::DoStringAdd(LStringAdd* instr) {
-  __ push(ToRegister(instr->left()));
-  __ push(ToRegister(instr->right()));
-  StringAddStub stub(NO_STRING_CHECK_IN_STUB);
-  CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
-}
-
-
 void LCodeGen::DoStringCharCodeAt(LStringCharCodeAt* instr) {
   class DeferredStringCharCodeAt: public LDeferredCode {
    public:
diff --git a/src/arm/lithium-codegen-arm.h b/src/arm/lithium-codegen-arm.h
index 1110ea6..8a4ea27 100644
--- a/src/arm/lithium-codegen-arm.h
+++ b/src/arm/lithium-codegen-arm.h
@@ -158,8 +158,8 @@
                        Register temporary,
                        Register temporary2);
 
-  int GetStackSlotCount() const { return chunk()->spill_slot_count(); }
-  int GetParameterCount() const { return scope()->num_parameters(); }
+  int StackSlotCount() const { return chunk()->spill_slot_count(); }
+  int ParameterCount() const { return scope()->num_parameters(); }
 
   void Abort(const char* format, ...);
   void Comment(const char* format, ...);
diff --git a/src/arm/regexp-macro-assembler-arm.cc b/src/arm/regexp-macro-assembler-arm.cc
index 4bd8c80..1c59823 100644
--- a/src/arm/regexp-macro-assembler-arm.cc
+++ b/src/arm/regexp-macro-assembler-arm.cc
@@ -605,7 +605,7 @@
 }
 
 
-Handle<Object> RegExpMacroAssemblerARM::GetCode(Handle<String> source) {
+Handle<HeapObject> RegExpMacroAssemblerARM::GetCode(Handle<String> source) {
   // Finalize code - write the entry point code now we know how many
   // registers we need.
 
@@ -813,7 +813,7 @@
                                        Code::ComputeFlags(Code::REGEXP),
                                        masm_->CodeObject());
   PROFILE(Isolate::Current(), RegExpCodeCreateEvent(*code, *source));
-  return Handle<Object>::cast(code);
+  return Handle<HeapObject>::cast(code);
 }
 
 
diff --git a/src/arm/regexp-macro-assembler-arm.h b/src/arm/regexp-macro-assembler-arm.h
index b57d0eb..d771e40 100644
--- a/src/arm/regexp-macro-assembler-arm.h
+++ b/src/arm/regexp-macro-assembler-arm.h
@@ -82,7 +82,7 @@
   virtual bool CheckSpecialCharacterClass(uc16 type,
                                           Label* on_no_match);
   virtual void Fail();
-  virtual Handle<Object> GetCode(Handle<String> source);
+  virtual Handle<HeapObject> GetCode(Handle<String> source);
   virtual void GoTo(Label* label);
   virtual void IfRegisterGE(int reg, int comparand, Label* if_ge);
   virtual void IfRegisterLT(int reg, int comparand, Label* if_lt);
diff --git a/src/assembler.cc b/src/assembler.cc
index ca30e19..bfecc77 100644
--- a/src/assembler.cc
+++ b/src/assembler.cc
@@ -74,6 +74,18 @@
 const char* RelocInfo::kFillerCommentString = "DEOPTIMIZATION PADDING";
 
 // -----------------------------------------------------------------------------
+// Implementation of AssemblerBase
+
+AssemblerBase::AssemblerBase(Isolate* isolate)
+    : isolate_(isolate),
+      jit_cookie_(0) {
+  if (FLAG_mask_constants_with_cookie && isolate != NULL)  {
+    jit_cookie_ = V8::RandomPrivate(isolate);
+  }
+}
+
+
+// -----------------------------------------------------------------------------
 // Implementation of Label
 
 int Label::pos() const {
diff --git a/src/assembler.h b/src/assembler.h
index e8cecc3..395bbd5 100644
--- a/src/assembler.h
+++ b/src/assembler.h
@@ -48,12 +48,14 @@
 
 class AssemblerBase: public Malloced {
  public:
-  explicit AssemblerBase(Isolate* isolate) : isolate_(isolate) {}
+  explicit AssemblerBase(Isolate* isolate);
 
   Isolate* isolate() const { return isolate_; }
+  int jit_cookie() { return jit_cookie_; }
 
  private:
   Isolate* isolate_;
+  int jit_cookie_;
 };
 
 // -----------------------------------------------------------------------------
diff --git a/src/ast.cc b/src/ast.cc
index 303189d..7ae0f34 100644
--- a/src/ast.cc
+++ b/src/ast.cc
@@ -413,7 +413,8 @@
 
 
 bool Throw::IsInlineable() const {
-  return true;
+  // TODO(1143): Make functions containing throw inlineable.
+  return false;
 }
 
 
diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc
index 0800714..a30ffc0 100644
--- a/src/bootstrapper.cc
+++ b/src/bootstrapper.cc
@@ -1,4 +1,4 @@
-// Copyright 2011 the V8 project authors. All rights reserved.
+// Copyright 2006-2008 the V8 project authors. All rights reserved.
 // Redistribution and use in source and binary forms, with or without
 // modification, are permitted provided that the following conditions are
 // met:
@@ -141,8 +141,7 @@
 
 class Genesis BASE_EMBEDDED {
  public:
-  Genesis(Isolate* isolate,
-          Handle<Object> global_object,
+  Genesis(Handle<Object> global_object,
           v8::Handle<v8::ObjectTemplate> global_template,
           v8::ExtensionConfiguration* extensions);
   ~Genesis() { }
@@ -151,13 +150,8 @@
 
   Genesis* previous() { return previous_; }
 
-  Isolate* isolate() const { return isolate_; }
-  Factory* factory() const { return isolate_->factory(); }
-  Heap* heap() const { return isolate_->heap(); }
-
  private:
   Handle<Context> global_context_;
-  Isolate* isolate_;
 
   // There may be more than one active genesis object: When GC is
   // triggered during environment creation there may be weak handle
@@ -169,7 +163,7 @@
   // Creates some basic objects. Used for creating a context from scratch.
   void CreateRoots();
   // Creates the empty function.  Used for creating a context from scratch.
-  Handle<JSFunction> CreateEmptyFunction(Isolate* isolate);
+  Handle<JSFunction> CreateEmptyFunction();
   // Creates the ThrowTypeError function. ECMA 5th Ed. 13.2.3
   Handle<JSFunction> CreateThrowTypeErrorFunction(Builtins::Name builtin);
 
@@ -200,7 +194,6 @@
   // Used for creating a context from scratch.
   void InstallNativeFunctions();
   bool InstallNatives();
-  bool InstallExperimentalNatives();
   void InstallBuiltinFunctionIds();
   void InstallJSFunctionResultCaches();
   void InitializeNormalizedMapCaches();
@@ -246,8 +239,7 @@
       Handle<FixedArray> arguments,
       Handle<FixedArray> caller);
 
-  static bool CompileBuiltin(Isolate* isolate, int index);
-  static bool CompileExperimentalBuiltin(Isolate* isolate, int index);
+  static bool CompileBuiltin(int index);
   static bool CompileNative(Vector<const char> name, Handle<String> source);
   static bool CompileScriptCached(Vector<const char> name,
                                   Handle<String> source,
@@ -277,13 +269,12 @@
 
 
 Handle<Context> Bootstrapper::CreateEnvironment(
-    Isolate* isolate,
     Handle<Object> global_object,
     v8::Handle<v8::ObjectTemplate> global_template,
     v8::ExtensionConfiguration* extensions) {
   HandleScope scope;
   Handle<Context> env;
-  Genesis genesis(isolate, global_object, global_template, extensions);
+  Genesis genesis(global_object, global_template, extensions);
   env = genesis.result();
   if (!env.is_null()) {
     if (InstallExtensions(env, extensions)) {
@@ -296,16 +287,15 @@
 
 static void SetObjectPrototype(Handle<JSObject> object, Handle<Object> proto) {
   // object.__proto__ = proto;
-  Factory* factory = object->GetIsolate()->factory();
   Handle<Map> old_to_map = Handle<Map>(object->map());
-  Handle<Map> new_to_map = factory->CopyMapDropTransitions(old_to_map);
+  Handle<Map> new_to_map = FACTORY->CopyMapDropTransitions(old_to_map);
   new_to_map->set_prototype(*proto);
   object->set_map(*new_to_map);
 }
 
 
 void Bootstrapper::DetachGlobal(Handle<Context> env) {
-  Factory* factory = env->GetIsolate()->factory();
+  Factory* factory = Isolate::Current()->factory();
   JSGlobalProxy::cast(env->global_proxy())->set_context(*factory->null_value());
   SetObjectPrototype(Handle<JSObject>(env->global_proxy()),
                      factory->null_value());
@@ -332,7 +322,7 @@
                                           Handle<JSObject> prototype,
                                           Builtins::Name call,
                                           bool is_ecma_native) {
-  Isolate* isolate = target->GetIsolate();
+  Isolate* isolate = Isolate::Current();
   Factory* factory = isolate->factory();
   Handle<String> symbol = factory->LookupAsciiSymbol(name);
   Handle<Code> call_code = Handle<Code>(isolate->builtins()->builtin(call));
@@ -354,31 +344,30 @@
 
 Handle<DescriptorArray> Genesis::ComputeFunctionInstanceDescriptor(
     PrototypePropertyMode prototypeMode) {
+  Factory* factory = Isolate::Current()->factory();
   Handle<DescriptorArray> descriptors =
-      factory()->NewDescriptorArray(prototypeMode == DONT_ADD_PROTOTYPE
-                                    ? 4
-                                    : 5);
+      factory->NewDescriptorArray(prototypeMode == DONT_ADD_PROTOTYPE ? 4 : 5);
   PropertyAttributes attributes =
       static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY);
 
   {  // Add length.
-    Handle<Proxy> proxy = factory()->NewProxy(&Accessors::FunctionLength);
-    CallbacksDescriptor d(*factory()->length_symbol(), *proxy, attributes);
+    Handle<Proxy> proxy = factory->NewProxy(&Accessors::FunctionLength);
+    CallbacksDescriptor d(*factory->length_symbol(), *proxy, attributes);
     descriptors->Set(0, &d);
   }
   {  // Add name.
-    Handle<Proxy> proxy = factory()->NewProxy(&Accessors::FunctionName);
-    CallbacksDescriptor d(*factory()->name_symbol(), *proxy, attributes);
+    Handle<Proxy> proxy = factory->NewProxy(&Accessors::FunctionName);
+    CallbacksDescriptor d(*factory->name_symbol(), *proxy, attributes);
     descriptors->Set(1, &d);
   }
   {  // Add arguments.
-    Handle<Proxy> proxy = factory()->NewProxy(&Accessors::FunctionArguments);
-    CallbacksDescriptor d(*factory()->arguments_symbol(), *proxy, attributes);
+    Handle<Proxy> proxy = factory->NewProxy(&Accessors::FunctionArguments);
+    CallbacksDescriptor d(*factory->arguments_symbol(), *proxy, attributes);
     descriptors->Set(2, &d);
   }
   {  // Add caller.
-    Handle<Proxy> proxy = factory()->NewProxy(&Accessors::FunctionCaller);
-    CallbacksDescriptor d(*factory()->caller_symbol(), *proxy, attributes);
+    Handle<Proxy> proxy = factory->NewProxy(&Accessors::FunctionCaller);
+    CallbacksDescriptor d(*factory->caller_symbol(), *proxy, attributes);
     descriptors->Set(3, &d);
   }
   if (prototypeMode != DONT_ADD_PROTOTYPE) {
@@ -386,8 +375,8 @@
     if (prototypeMode == ADD_WRITEABLE_PROTOTYPE) {
       attributes = static_cast<PropertyAttributes>(attributes & ~READ_ONLY);
     }
-    Handle<Proxy> proxy = factory()->NewProxy(&Accessors::FunctionPrototype);
-    CallbacksDescriptor d(*factory()->prototype_symbol(), *proxy, attributes);
+    Handle<Proxy> proxy = factory->NewProxy(&Accessors::FunctionPrototype);
+    CallbacksDescriptor d(*factory->prototype_symbol(), *proxy, attributes);
     descriptors->Set(4, &d);
   }
   descriptors->Sort();
@@ -396,7 +385,7 @@
 
 
 Handle<Map> Genesis::CreateFunctionMap(PrototypePropertyMode prototype_mode) {
-  Handle<Map> map = factory()->NewMap(JS_FUNCTION_TYPE, JSFunction::kSize);
+  Handle<Map> map = FACTORY->NewMap(JS_FUNCTION_TYPE, JSFunction::kSize);
   Handle<DescriptorArray> descriptors =
       ComputeFunctionInstanceDescriptor(prototype_mode);
   map->set_instance_descriptors(*descriptors);
@@ -405,7 +394,7 @@
 }
 
 
-Handle<JSFunction> Genesis::CreateEmptyFunction(Isolate* isolate) {
+Handle<JSFunction> Genesis::CreateEmptyFunction() {
   // Allocate the map for function instances. Maps are allocated first and their
   // prototypes patched later, once empty function is created.
 
@@ -433,6 +422,7 @@
   function_instance_map_writable_prototype_ =
       CreateFunctionMap(ADD_WRITEABLE_PROTOTYPE);
 
+  Isolate* isolate = Isolate::Current();
   Factory* factory = isolate->factory();
   Heap* heap = isolate->heap();
 
@@ -501,31 +491,28 @@
     PrototypePropertyMode prototypeMode,
     Handle<FixedArray> arguments,
     Handle<FixedArray> caller) {
+  Factory* factory = Isolate::Current()->factory();
   Handle<DescriptorArray> descriptors =
-      factory()->NewDescriptorArray(prototypeMode == DONT_ADD_PROTOTYPE
-                                    ? 4
-                                    : 5);
+      factory->NewDescriptorArray(prototypeMode == DONT_ADD_PROTOTYPE ? 4 : 5);
   PropertyAttributes attributes = static_cast<PropertyAttributes>(
       DONT_ENUM | DONT_DELETE | READ_ONLY);
 
   {  // length
-    Handle<Proxy> proxy = factory()->NewProxy(&Accessors::FunctionLength);
-    CallbacksDescriptor d(*factory()->length_symbol(), *proxy, attributes);
+    Handle<Proxy> proxy = factory->NewProxy(&Accessors::FunctionLength);
+    CallbacksDescriptor d(*factory->length_symbol(), *proxy, attributes);
     descriptors->Set(0, &d);
   }
   {  // name
-    Handle<Proxy> proxy = factory()->NewProxy(&Accessors::FunctionName);
-    CallbacksDescriptor d(*factory()->name_symbol(), *proxy, attributes);
+    Handle<Proxy> proxy = factory->NewProxy(&Accessors::FunctionName);
+    CallbacksDescriptor d(*factory->name_symbol(), *proxy, attributes);
     descriptors->Set(1, &d);
   }
   {  // arguments
-    CallbacksDescriptor d(*factory()->arguments_symbol(),
-                          *arguments,
-                          attributes);
+    CallbacksDescriptor d(*factory->arguments_symbol(), *arguments, attributes);
     descriptors->Set(2, &d);
   }
   {  // caller
-    CallbacksDescriptor d(*factory()->caller_symbol(), *caller, attributes);
+    CallbacksDescriptor d(*factory->caller_symbol(), *caller, attributes);
     descriptors->Set(3, &d);
   }
 
@@ -534,8 +521,8 @@
     if (prototypeMode == ADD_WRITEABLE_PROTOTYPE) {
       attributes = static_cast<PropertyAttributes>(attributes & ~READ_ONLY);
     }
-    Handle<Proxy> proxy = factory()->NewProxy(&Accessors::FunctionPrototype);
-    CallbacksDescriptor d(*factory()->prototype_symbol(), *proxy, attributes);
+    Handle<Proxy> proxy = factory->NewProxy(&Accessors::FunctionPrototype);
+    CallbacksDescriptor d(*factory->prototype_symbol(), *proxy, attributes);
     descriptors->Set(4, &d);
   }
 
@@ -547,11 +534,14 @@
 // ECMAScript 5th Edition, 13.2.3
 Handle<JSFunction> Genesis::CreateThrowTypeErrorFunction(
     Builtins::Name builtin) {
-  Handle<String> name = factory()->LookupAsciiSymbol("ThrowTypeError");
+  Isolate* isolate = Isolate::Current();
+  Factory* factory = isolate->factory();
+
+  Handle<String> name = factory->LookupAsciiSymbol("ThrowTypeError");
   Handle<JSFunction> throw_type_error =
-      factory()->NewFunctionWithoutPrototype(name, kStrictMode);
+      factory->NewFunctionWithoutPrototype(name, kStrictMode);
   Handle<Code> code = Handle<Code>(
-      isolate()->builtins()->builtin(builtin));
+      isolate->builtins()->builtin(builtin));
 
   throw_type_error->set_map(global_context()->strict_mode_function_map());
   throw_type_error->set_code(*code);
@@ -569,7 +559,7 @@
     Handle<JSFunction> empty_function,
     Handle<FixedArray> arguments_callbacks,
     Handle<FixedArray> caller_callbacks) {
-  Handle<Map> map = factory()->NewMap(JS_FUNCTION_TYPE, JSFunction::kSize);
+  Handle<Map> map = FACTORY->NewMap(JS_FUNCTION_TYPE, JSFunction::kSize);
   Handle<DescriptorArray> descriptors =
       ComputeStrictFunctionInstanceDescriptor(prototype_mode,
                                               arguments_callbacks,
@@ -584,7 +574,7 @@
 void Genesis::CreateStrictModeFunctionMaps(Handle<JSFunction> empty) {
   // Create the callbacks arrays for ThrowTypeError functions.
   // The get/set callacks are filled in after the maps are created below.
-  Factory* factory = empty->GetIsolate()->factory();
+  Factory* factory = Isolate::Current()->factory();
   Handle<FixedArray> arguments = factory->NewFixedArray(2, TENURED);
   Handle<FixedArray> caller = factory->NewFixedArray(2, TENURED);
 
@@ -633,7 +623,7 @@
 
 static void AddToWeakGlobalContextList(Context* context) {
   ASSERT(context->IsGlobalContext());
-  Heap* heap = context->GetIsolate()->heap();
+  Heap* heap = Isolate::Current()->heap();
 #ifdef DEBUG
   { // NOLINT
     ASSERT(context->get(Context::NEXT_CONTEXT_LINK)->IsUndefined());
@@ -651,14 +641,15 @@
 
 
 void Genesis::CreateRoots() {
+  Isolate* isolate = Isolate::Current();
   // Allocate the global context FixedArray first and then patch the
   // closure and extension object later (we need the empty function
   // and the global object, but in order to create those, we need the
   // global context).
-  global_context_ = Handle<Context>::cast(isolate()->global_handles()->Create(
-              *factory()->NewGlobalContext()));
+  global_context_ = Handle<Context>::cast(isolate->global_handles()->Create(
+              *isolate->factory()->NewGlobalContext()));
   AddToWeakGlobalContextList(*global_context_);
-  isolate()->set_context(*global_context());
+  isolate->set_context(*global_context());
 
   // Allocate the message listeners object.
   {
@@ -701,13 +692,17 @@
     }
   }
 
+  Isolate* isolate = Isolate::Current();
+  Factory* factory = isolate->factory();
+  Heap* heap = isolate->heap();
+
   if (js_global_template.is_null()) {
-    Handle<String> name = Handle<String>(heap()->empty_symbol());
-    Handle<Code> code = Handle<Code>(isolate()->builtins()->builtin(
+    Handle<String> name = Handle<String>(heap->empty_symbol());
+    Handle<Code> code = Handle<Code>(isolate->builtins()->builtin(
         Builtins::kIllegal));
     js_global_function =
-        factory()->NewFunction(name, JS_GLOBAL_OBJECT_TYPE,
-                               JSGlobalObject::kSize, code, true);
+        factory->NewFunction(name, JS_GLOBAL_OBJECT_TYPE,
+                             JSGlobalObject::kSize, code, true);
     // Change the constructor property of the prototype of the
     // hidden global function to refer to the Object function.
     Handle<JSObject> prototype =
@@ -715,20 +710,20 @@
             JSObject::cast(js_global_function->instance_prototype()));
     SetLocalPropertyNoThrow(
         prototype,
-        factory()->constructor_symbol(),
-        isolate()->object_function(),
+        factory->constructor_symbol(),
+        isolate->object_function(),
         NONE);
   } else {
     Handle<FunctionTemplateInfo> js_global_constructor(
         FunctionTemplateInfo::cast(js_global_template->constructor()));
     js_global_function =
-        factory()->CreateApiFunction(js_global_constructor,
-                                     factory()->InnerGlobalObject);
+        factory->CreateApiFunction(js_global_constructor,
+                                   factory->InnerGlobalObject);
   }
 
   js_global_function->initial_map()->set_is_hidden_prototype();
   Handle<GlobalObject> inner_global =
-      factory()->NewGlobalObject(js_global_function);
+      factory->NewGlobalObject(js_global_function);
   if (inner_global_out != NULL) {
     *inner_global_out = inner_global;
   }
@@ -736,23 +731,23 @@
   // Step 2: create or re-initialize the global proxy object.
   Handle<JSFunction> global_proxy_function;
   if (global_template.IsEmpty()) {
-    Handle<String> name = Handle<String>(heap()->empty_symbol());
-    Handle<Code> code = Handle<Code>(isolate()->builtins()->builtin(
+    Handle<String> name = Handle<String>(heap->empty_symbol());
+    Handle<Code> code = Handle<Code>(isolate->builtins()->builtin(
         Builtins::kIllegal));
     global_proxy_function =
-        factory()->NewFunction(name, JS_GLOBAL_PROXY_TYPE,
-                               JSGlobalProxy::kSize, code, true);
+        factory->NewFunction(name, JS_GLOBAL_PROXY_TYPE,
+                             JSGlobalProxy::kSize, code, true);
   } else {
     Handle<ObjectTemplateInfo> data =
         v8::Utils::OpenHandle(*global_template);
     Handle<FunctionTemplateInfo> global_constructor(
             FunctionTemplateInfo::cast(data->constructor()));
     global_proxy_function =
-        factory()->CreateApiFunction(global_constructor,
-                                     factory()->OuterGlobalObject);
+        factory->CreateApiFunction(global_constructor,
+                                   factory->OuterGlobalObject);
   }
 
-  Handle<String> global_name = factory()->LookupAsciiSymbol("global");
+  Handle<String> global_name = factory->LookupAsciiSymbol("global");
   global_proxy_function->shared()->set_instance_class_name(*global_name);
   global_proxy_function->initial_map()->set_is_access_check_needed(true);
 
@@ -766,7 +761,7 @@
         Handle<JSGlobalProxy>::cast(global_object));
   } else {
     return Handle<JSGlobalProxy>::cast(
-        factory()->NewJSObject(global_proxy_function, TENURED));
+        factory->NewJSObject(global_proxy_function, TENURED));
   }
 }
 
@@ -791,7 +786,7 @@
   static const PropertyAttributes attributes =
       static_cast<PropertyAttributes>(READ_ONLY | DONT_DELETE);
   ForceSetProperty(builtins_global,
-                   factory()->LookupAsciiSymbol("global"),
+                   FACTORY->LookupAsciiSymbol("global"),
                    inner_global,
                    attributes);
   // Setup the reference from the global object to the builtins object.
@@ -819,7 +814,7 @@
   // object reinitialization.
   global_context()->set_security_token(*inner_global);
 
-  Isolate* isolate = inner_global->GetIsolate();
+  Isolate* isolate = Isolate::Current();
   Factory* factory = isolate->factory();
   Heap* heap = isolate->heap();
 
@@ -1169,26 +1164,17 @@
 }
 
 
-bool Genesis::CompileBuiltin(Isolate* isolate, int index) {
+bool Genesis::CompileBuiltin(int index) {
   Vector<const char> name = Natives::GetScriptName(index);
   Handle<String> source_code =
-      isolate->bootstrapper()->NativesSourceLookup(index);
-  return CompileNative(name, source_code);
-}
-
-
-bool Genesis::CompileExperimentalBuiltin(Isolate* isolate, int index) {
-  Vector<const char> name = ExperimentalNatives::GetScriptName(index);
-  Factory* factory = isolate->factory();
-  Handle<String> source_code =
-      factory->NewStringFromAscii(ExperimentalNatives::GetScriptSource(index));
+      Isolate::Current()->bootstrapper()->NativesSourceLookup(index);
   return CompileNative(name, source_code);
 }
 
 
 bool Genesis::CompileNative(Vector<const char> name, Handle<String> source) {
   HandleScope scope;
-  Isolate* isolate = source->GetIsolate();
+  Isolate* isolate = Isolate::Current();
 #ifdef ENABLE_DEBUGGER_SUPPORT
   isolate->debugger()->set_compiling_natives(true);
 #endif
@@ -1213,7 +1199,7 @@
                                   v8::Extension* extension,
                                   Handle<Context> top_context,
                                   bool use_runtime_context) {
-  Factory* factory = source->GetIsolate()->factory();
+  Factory* factory = Isolate::Current()->factory();
   HandleScope scope;
   Handle<SharedFunctionInfo> function_info;
 
@@ -1260,15 +1246,15 @@
 }
 
 
-#define INSTALL_NATIVE(Type, name, var)                                       \
-  Handle<String> var##_name = factory()->LookupAsciiSymbol(name);             \
-  Object* var##_native =                                                      \
-      global_context()->builtins()->GetPropertyNoExceptionThrown(             \
-           *var##_name);                                                      \
+#define INSTALL_NATIVE(Type, name, var)                                        \
+  Handle<String> var##_name = factory->LookupAsciiSymbol(name);                \
+  Object* var##_native =                                                       \
+      global_context()->builtins()->GetPropertyNoExceptionThrown(*var##_name); \
   global_context()->set_##var(Type::cast(var##_native));
 
 
 void Genesis::InstallNativeFunctions() {
+  Factory* factory = Isolate::Current()->factory();
   HandleScope scope;
   INSTALL_NATIVE(JSFunction, "CreateDate", create_date_fun);
   INSTALL_NATIVE(JSFunction, "ToNumber", to_number_fun);
@@ -1291,23 +1277,25 @@
 
 bool Genesis::InstallNatives() {
   HandleScope scope;
+  Isolate* isolate = Isolate::Current();
+  Factory* factory = isolate->factory();
+  Heap* heap = isolate->heap();
 
   // Create a function for the builtins object. Allocate space for the
   // JavaScript builtins, a reference to the builtins object
   // (itself) and a reference to the global_context directly in the object.
   Handle<Code> code = Handle<Code>(
-      isolate()->builtins()->builtin(Builtins::kIllegal));
+      isolate->builtins()->builtin(Builtins::kIllegal));
   Handle<JSFunction> builtins_fun =
-      factory()->NewFunction(factory()->empty_symbol(),
-                             JS_BUILTINS_OBJECT_TYPE,
-                             JSBuiltinsObject::kSize, code, true);
+      factory->NewFunction(factory->empty_symbol(), JS_BUILTINS_OBJECT_TYPE,
+                           JSBuiltinsObject::kSize, code, true);
 
-  Handle<String> name = factory()->LookupAsciiSymbol("builtins");
+  Handle<String> name = factory->LookupAsciiSymbol("builtins");
   builtins_fun->shared()->set_instance_class_name(*name);
 
   // Allocate the builtins object.
   Handle<JSBuiltinsObject> builtins =
-      Handle<JSBuiltinsObject>::cast(factory()->NewGlobalObject(builtins_fun));
+      Handle<JSBuiltinsObject>::cast(factory->NewGlobalObject(builtins_fun));
   builtins->set_builtins(*builtins);
   builtins->set_global_context(*global_context());
   builtins->set_global_receiver(*builtins);
@@ -1318,7 +1306,7 @@
   // global object.
   static const PropertyAttributes attributes =
       static_cast<PropertyAttributes>(READ_ONLY | DONT_DELETE);
-  Handle<String> global_symbol = factory()->LookupAsciiSymbol("global");
+  Handle<String> global_symbol = factory->LookupAsciiSymbol("global");
   Handle<Object> global_obj(global_context()->global());
   SetLocalPropertyNoThrow(builtins, global_symbol, global_obj, attributes);
 
@@ -1327,13 +1315,12 @@
 
   // Create a bridge function that has context in the global context.
   Handle<JSFunction> bridge =
-      factory()->NewFunction(factory()->empty_symbol(),
-                             factory()->undefined_value());
-  ASSERT(bridge->context() == *isolate()->global_context());
+      factory->NewFunction(factory->empty_symbol(), factory->undefined_value());
+  ASSERT(bridge->context() == *isolate->global_context());
 
   // Allocate the builtins context.
   Handle<Context> context =
-    factory()->NewFunctionContext(Context::MIN_CONTEXT_SLOTS, bridge);
+    factory->NewFunctionContext(Context::MIN_CONTEXT_SLOTS, bridge);
   context->set_global(*builtins);  // override builtins global object
 
   global_context()->set_runtime_context(*context);
@@ -1342,113 +1329,113 @@
     // Builtin functions for Script.
     Handle<JSFunction> script_fun =
         InstallFunction(builtins, "Script", JS_VALUE_TYPE, JSValue::kSize,
-                        isolate()->initial_object_prototype(),
+                        isolate->initial_object_prototype(),
                         Builtins::kIllegal, false);
     Handle<JSObject> prototype =
-        factory()->NewJSObject(isolate()->object_function(), TENURED);
+        factory->NewJSObject(isolate->object_function(), TENURED);
     SetPrototype(script_fun, prototype);
     global_context()->set_script_function(*script_fun);
 
     // Add 'source' and 'data' property to scripts.
     PropertyAttributes common_attributes =
         static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY);
-    Handle<Proxy> proxy_source = factory()->NewProxy(&Accessors::ScriptSource);
+    Handle<Proxy> proxy_source = factory->NewProxy(&Accessors::ScriptSource);
     Handle<DescriptorArray> script_descriptors =
-        factory()->CopyAppendProxyDescriptor(
-            factory()->empty_descriptor_array(),
-            factory()->LookupAsciiSymbol("source"),
+        factory->CopyAppendProxyDescriptor(
+            factory->empty_descriptor_array(),
+            factory->LookupAsciiSymbol("source"),
             proxy_source,
             common_attributes);
-    Handle<Proxy> proxy_name = factory()->NewProxy(&Accessors::ScriptName);
+    Handle<Proxy> proxy_name = factory->NewProxy(&Accessors::ScriptName);
     script_descriptors =
-        factory()->CopyAppendProxyDescriptor(
+        factory->CopyAppendProxyDescriptor(
             script_descriptors,
-            factory()->LookupAsciiSymbol("name"),
+            factory->LookupAsciiSymbol("name"),
             proxy_name,
             common_attributes);
-    Handle<Proxy> proxy_id = factory()->NewProxy(&Accessors::ScriptId);
+    Handle<Proxy> proxy_id = factory->NewProxy(&Accessors::ScriptId);
     script_descriptors =
-        factory()->CopyAppendProxyDescriptor(
+        factory->CopyAppendProxyDescriptor(
             script_descriptors,
-            factory()->LookupAsciiSymbol("id"),
+            factory->LookupAsciiSymbol("id"),
             proxy_id,
             common_attributes);
     Handle<Proxy> proxy_line_offset =
-        factory()->NewProxy(&Accessors::ScriptLineOffset);
+        factory->NewProxy(&Accessors::ScriptLineOffset);
     script_descriptors =
-        factory()->CopyAppendProxyDescriptor(
+        factory->CopyAppendProxyDescriptor(
             script_descriptors,
-            factory()->LookupAsciiSymbol("line_offset"),
+            factory->LookupAsciiSymbol("line_offset"),
             proxy_line_offset,
             common_attributes);
     Handle<Proxy> proxy_column_offset =
-        factory()->NewProxy(&Accessors::ScriptColumnOffset);
+        factory->NewProxy(&Accessors::ScriptColumnOffset);
     script_descriptors =
-        factory()->CopyAppendProxyDescriptor(
+        factory->CopyAppendProxyDescriptor(
             script_descriptors,
-            factory()->LookupAsciiSymbol("column_offset"),
+            factory->LookupAsciiSymbol("column_offset"),
             proxy_column_offset,
             common_attributes);
-    Handle<Proxy> proxy_data = factory()->NewProxy(&Accessors::ScriptData);
+    Handle<Proxy> proxy_data = factory->NewProxy(&Accessors::ScriptData);
     script_descriptors =
-        factory()->CopyAppendProxyDescriptor(
+        factory->CopyAppendProxyDescriptor(
             script_descriptors,
-            factory()->LookupAsciiSymbol("data"),
+            factory->LookupAsciiSymbol("data"),
             proxy_data,
             common_attributes);
-    Handle<Proxy> proxy_type = factory()->NewProxy(&Accessors::ScriptType);
+    Handle<Proxy> proxy_type = factory->NewProxy(&Accessors::ScriptType);
     script_descriptors =
-        factory()->CopyAppendProxyDescriptor(
+        factory->CopyAppendProxyDescriptor(
             script_descriptors,
-            factory()->LookupAsciiSymbol("type"),
+            factory->LookupAsciiSymbol("type"),
             proxy_type,
             common_attributes);
     Handle<Proxy> proxy_compilation_type =
-        factory()->NewProxy(&Accessors::ScriptCompilationType);
+        factory->NewProxy(&Accessors::ScriptCompilationType);
     script_descriptors =
-        factory()->CopyAppendProxyDescriptor(
+        factory->CopyAppendProxyDescriptor(
             script_descriptors,
-            factory()->LookupAsciiSymbol("compilation_type"),
+            factory->LookupAsciiSymbol("compilation_type"),
             proxy_compilation_type,
             common_attributes);
     Handle<Proxy> proxy_line_ends =
-        factory()->NewProxy(&Accessors::ScriptLineEnds);
+        factory->NewProxy(&Accessors::ScriptLineEnds);
     script_descriptors =
-        factory()->CopyAppendProxyDescriptor(
+        factory->CopyAppendProxyDescriptor(
             script_descriptors,
-            factory()->LookupAsciiSymbol("line_ends"),
+            factory->LookupAsciiSymbol("line_ends"),
             proxy_line_ends,
             common_attributes);
     Handle<Proxy> proxy_context_data =
-        factory()->NewProxy(&Accessors::ScriptContextData);
+        factory->NewProxy(&Accessors::ScriptContextData);
     script_descriptors =
-        factory()->CopyAppendProxyDescriptor(
+        factory->CopyAppendProxyDescriptor(
             script_descriptors,
-            factory()->LookupAsciiSymbol("context_data"),
+            factory->LookupAsciiSymbol("context_data"),
             proxy_context_data,
             common_attributes);
     Handle<Proxy> proxy_eval_from_script =
-        factory()->NewProxy(&Accessors::ScriptEvalFromScript);
+        factory->NewProxy(&Accessors::ScriptEvalFromScript);
     script_descriptors =
-        factory()->CopyAppendProxyDescriptor(
+        factory->CopyAppendProxyDescriptor(
             script_descriptors,
-            factory()->LookupAsciiSymbol("eval_from_script"),
+            factory->LookupAsciiSymbol("eval_from_script"),
             proxy_eval_from_script,
             common_attributes);
     Handle<Proxy> proxy_eval_from_script_position =
-        factory()->NewProxy(&Accessors::ScriptEvalFromScriptPosition);
+        factory->NewProxy(&Accessors::ScriptEvalFromScriptPosition);
     script_descriptors =
-        factory()->CopyAppendProxyDescriptor(
+        factory->CopyAppendProxyDescriptor(
             script_descriptors,
-            factory()->LookupAsciiSymbol("eval_from_script_position"),
+            factory->LookupAsciiSymbol("eval_from_script_position"),
             proxy_eval_from_script_position,
             common_attributes);
     Handle<Proxy> proxy_eval_from_function_name =
-        factory()->NewProxy(&Accessors::ScriptEvalFromFunctionName);
+        factory->NewProxy(&Accessors::ScriptEvalFromFunctionName);
     script_descriptors =
-        factory()->CopyAppendProxyDescriptor(
+        factory->CopyAppendProxyDescriptor(
             script_descriptors,
-            factory()->LookupAsciiSymbol("eval_from_function_name"),
+            factory->LookupAsciiSymbol("eval_from_function_name"),
             proxy_eval_from_function_name,
             common_attributes);
 
@@ -1456,9 +1443,9 @@
     script_map->set_instance_descriptors(*script_descriptors);
 
     // Allocate the empty script.
-    Handle<Script> script = factory()->NewScript(factory()->empty_string());
+    Handle<Script> script = factory->NewScript(factory->empty_string());
     script->set_type(Smi::FromInt(Script::TYPE_NATIVE));
-    heap()->public_set_empty_script(*script);
+    heap->public_set_empty_script(*script);
   }
   {
     // Builtin function for OpaqueReference -- a JSValue-based object,
@@ -1467,10 +1454,10 @@
     Handle<JSFunction> opaque_reference_fun =
         InstallFunction(builtins, "OpaqueReference", JS_VALUE_TYPE,
                         JSValue::kSize,
-                        isolate()->initial_object_prototype(),
+                        isolate->initial_object_prototype(),
                         Builtins::kIllegal, false);
     Handle<JSObject> prototype =
-        factory()->NewJSObject(isolate()->object_function(), TENURED);
+        factory->NewJSObject(isolate->object_function(), TENURED);
     SetPrototype(opaque_reference_fun, prototype);
     global_context()->set_opaque_reference_function(*opaque_reference_fun);
   }
@@ -1489,23 +1476,23 @@
                         "InternalArray",
                         JS_ARRAY_TYPE,
                         JSArray::kSize,
-                        isolate()->initial_object_prototype(),
+                        isolate->initial_object_prototype(),
                         Builtins::kArrayCode,
                         true);
     Handle<JSObject> prototype =
-        factory()->NewJSObject(isolate()->object_function(), TENURED);
+        factory->NewJSObject(isolate->object_function(), TENURED);
     SetPrototype(array_function, prototype);
 
     array_function->shared()->set_construct_stub(
-        isolate()->builtins()->builtin(Builtins::kArrayConstructCode));
+        isolate->builtins()->builtin(Builtins::kArrayConstructCode));
     array_function->shared()->DontAdaptArguments();
 
     // Make "length" magic on instances.
     Handle<DescriptorArray> array_descriptors =
-        factory()->CopyAppendProxyDescriptor(
-            factory()->empty_descriptor_array(),
-            factory()->length_symbol(),
-            factory()->NewProxy(&Accessors::ArrayLength),
+        factory->CopyAppendProxyDescriptor(
+            factory->empty_descriptor_array(),
+            factory->length_symbol(),
+            factory->NewProxy(&Accessors::ArrayLength),
             static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE));
 
     array_function->initial_map()->set_instance_descriptors(
@@ -1521,7 +1508,8 @@
   for (int i = Natives::GetDebuggerCount();
        i < Natives::GetBuiltinsCount();
        i++) {
-    if (!CompileBuiltin(isolate(), i)) return false;
+    Vector<const char> name = Natives::GetScriptName(i);
+    if (!CompileBuiltin(i)) return false;
     // TODO(ager): We really only need to install the JS builtin
     // functions on the builtins object after compiling and running
     // runtime.js.
@@ -1541,9 +1529,9 @@
   InstallBuiltinFunctionIds();
 
   // Install Function.prototype.call and apply.
-  { Handle<String> key = factory()->function_class_symbol();
+  { Handle<String> key = factory->function_class_symbol();
     Handle<JSFunction> function =
-        Handle<JSFunction>::cast(GetProperty(isolate()->global(), key));
+        Handle<JSFunction>::cast(GetProperty(isolate->global(), key));
     Handle<JSObject> proto =
         Handle<JSObject>(JSObject::cast(function->instance_prototype()));
 
@@ -1585,7 +1573,7 @@
 
     // Add initial map.
     Handle<Map> initial_map =
-        factory()->NewMap(JS_ARRAY_TYPE, JSRegExpResult::kSize);
+        factory->NewMap(JS_ARRAY_TYPE, JSRegExpResult::kSize);
     initial_map->set_constructor(*array_constructor);
 
     // Set prototype on map.
@@ -1599,13 +1587,13 @@
     ASSERT_EQ(1, array_descriptors->number_of_descriptors());
 
     Handle<DescriptorArray> reresult_descriptors =
-        factory()->NewDescriptorArray(3);
+        factory->NewDescriptorArray(3);
 
     reresult_descriptors->CopyFrom(0, *array_descriptors, 0);
 
     int enum_index = 0;
     {
-      FieldDescriptor index_field(heap()->index_symbol(),
+      FieldDescriptor index_field(heap->index_symbol(),
                                   JSRegExpResult::kIndexIndex,
                                   NONE,
                                   enum_index++);
@@ -1613,7 +1601,7 @@
     }
 
     {
-      FieldDescriptor input_field(heap()->input_symbol(),
+      FieldDescriptor input_field(heap->input_symbol(),
                                   JSRegExpResult::kInputIndex,
                                   NONE,
                                   enum_index++);
@@ -1638,22 +1626,10 @@
 }
 
 
-bool Genesis::InstallExperimentalNatives() {
-  if (FLAG_harmony_proxies) {
-    for (int i = ExperimentalNatives::GetDebuggerCount();
-         i < ExperimentalNatives::GetBuiltinsCount();
-         i++) {
-      if (!CompileExperimentalBuiltin(isolate(), i)) return false;
-    }
-  }
-  return true;
-}
-
-
 static Handle<JSObject> ResolveBuiltinIdHolder(
     Handle<Context> global_context,
     const char* holder_expr) {
-  Factory* factory = global_context->GetIsolate()->factory();
+  Factory* factory = Isolate::Current()->factory();
   Handle<GlobalObject> global(global_context->global());
   const char* period_pos = strchr(holder_expr, '.');
   if (period_pos == NULL) {
@@ -1672,8 +1648,7 @@
 static void InstallBuiltinFunctionId(Handle<JSObject> holder,
                                      const char* function_name,
                                      BuiltinFunctionId id) {
-  Factory* factory = holder->GetIsolate()->factory();
-  Handle<String> name = factory->LookupAsciiSymbol(function_name);
+  Handle<String> name = FACTORY->LookupAsciiSymbol(function_name);
   Object* function_object = holder->GetProperty(*name)->ToObjectUnchecked();
   Handle<JSFunction> function(JSFunction::cast(function_object));
   function->shared()->set_function_data(Smi::FromInt(id));
@@ -1700,14 +1675,13 @@
   F(16, global_context()->regexp_function())
 
 
-static FixedArray* CreateCache(int size, JSFunction* factory_function) {
-  Factory* factory = factory_function->GetIsolate()->factory();
+static FixedArray* CreateCache(int size, JSFunction* factory) {
   // Caches are supposed to live for a long time, allocate in old space.
   int array_size = JSFunctionResultCache::kEntriesIndex + 2 * size;
   // Cannot use cast as object is not fully initialized yet.
   JSFunctionResultCache* cache = reinterpret_cast<JSFunctionResultCache*>(
-      *factory->NewFixedArrayWithHoles(array_size, TENURED));
-  cache->set(JSFunctionResultCache::kFactoryIndex, factory_function);
+      *FACTORY->NewFixedArrayWithHoles(array_size, TENURED));
+  cache->set(JSFunctionResultCache::kFactoryIndex, factory);
   cache->MakeZeroSize();
   return cache;
 }
@@ -1746,7 +1720,7 @@
 
 bool Bootstrapper::InstallExtensions(Handle<Context> global_context,
                                      v8::ExtensionConfiguration* extensions) {
-  Isolate* isolate = global_context->GetIsolate();
+  Isolate* isolate = Isolate::Current();
   BootstrapperActive active;
   SaveContext saved_context(isolate);
   isolate->set_context(*global_context);
@@ -1757,7 +1731,7 @@
 
 
 void Genesis::InstallSpecialObjects(Handle<Context> global_context) {
-  Factory* factory = global_context->GetIsolate()->factory();
+  Factory* factory = Isolate::Current()->factory();
   HandleScope scope;
   Handle<JSGlobalObject> js_global(
       JSGlobalObject::cast(global_context->global()));
@@ -1893,10 +1867,9 @@
 
 bool Genesis::InstallJSBuiltins(Handle<JSBuiltinsObject> builtins) {
   HandleScope scope;
-  Factory* factory = builtins->GetIsolate()->factory();
   for (int i = 0; i < Builtins::NumberOfJavaScriptBuiltins(); i++) {
     Builtins::JavaScript id = static_cast<Builtins::JavaScript>(i);
-    Handle<String> name = factory->LookupAsciiSymbol(Builtins::GetName(id));
+    Handle<String> name = FACTORY->LookupAsciiSymbol(Builtins::GetName(id));
     Object* function_object = builtins->GetPropertyNoExceptionThrown(*name);
     Handle<JSFunction> function
         = Handle<JSFunction>(JSFunction::cast(function_object));
@@ -1945,12 +1918,13 @@
   ASSERT(object->IsInstanceOf(
       FunctionTemplateInfo::cast(object_template->constructor())));
 
+  Isolate* isolate = Isolate::Current();
   bool pending_exception = false;
   Handle<JSObject> obj =
       Execution::InstantiateObject(object_template, &pending_exception);
   if (pending_exception) {
-    ASSERT(isolate()->has_pending_exception());
-    isolate()->clear_pending_exception();
+    ASSERT(isolate->has_pending_exception());
+    isolate->clear_pending_exception();
     return false;
   }
   TransferObject(obj, object);
@@ -2049,7 +2023,6 @@
 
 void Genesis::TransferObject(Handle<JSObject> from, Handle<JSObject> to) {
   HandleScope outer;
-  Factory* factory = from->GetIsolate()->factory();
 
   ASSERT(!from->IsJSArray());
   ASSERT(!to->IsJSArray());
@@ -2059,7 +2032,7 @@
 
   // Transfer the prototype (new map is needed).
   Handle<Map> old_to_map = Handle<Map>(to->map());
-  Handle<Map> new_to_map = factory->CopyMapDropTransitions(old_to_map);
+  Handle<Map> new_to_map = FACTORY->CopyMapDropTransitions(old_to_map);
   new_to_map->set_prototype(from->map()->prototype());
   to->set_map(*new_to_map);
 }
@@ -2080,10 +2053,10 @@
 }
 
 
-Genesis::Genesis(Isolate* isolate,
-                 Handle<Object> global_object,
+Genesis::Genesis(Handle<Object> global_object,
                  v8::Handle<v8::ObjectTemplate> global_template,
-                 v8::ExtensionConfiguration* extensions) : isolate_(isolate) {
+                 v8::ExtensionConfiguration* extensions) {
+  Isolate* isolate = Isolate::Current();
   result_ = Handle<Context>::null();
   // If V8 isn't running and cannot be initialized, just return.
   if (!V8::IsRunning() && !V8::Initialize(NULL)) return;
@@ -2113,7 +2086,7 @@
   } else {
     // We get here if there was no context snapshot.
     CreateRoots();
-    Handle<JSFunction> empty_function = CreateEmptyFunction(isolate);
+    Handle<JSFunction> empty_function = CreateEmptyFunction();
     CreateStrictModeFunctionMaps(empty_function);
     Handle<GlobalObject> inner_global;
     Handle<JSGlobalProxy> global_proxy =
@@ -2130,9 +2103,6 @@
     isolate->counters()->contexts_created_from_scratch()->Increment();
   }
 
-  // Install experimental natives.
-  if (!InstallExperimentalNatives()) return;
-
   result_ = global_context_;
 }
 
diff --git a/src/bootstrapper.h b/src/bootstrapper.h
index 018ceef..3e158d6 100644
--- a/src/bootstrapper.h
+++ b/src/bootstrapper.h
@@ -93,7 +93,6 @@
   // Creates a JavaScript Global Context with initial object graph.
   // The returned value is a global handle casted to V8Environment*.
   Handle<Context> CreateEnvironment(
-      Isolate* isolate,
       Handle<Object> global_object,
       v8::Handle<v8::ObjectTemplate> global_template,
       v8::ExtensionConfiguration* extensions);
diff --git a/src/builtins.cc b/src/builtins.cc
index ae3dab4..1846590 100644
--- a/src/builtins.cc
+++ b/src/builtins.cc
@@ -378,8 +378,7 @@
   array_proto = JSObject::cast(proto);
   if (array_proto != global_context->initial_object_prototype()) return false;
   if (array_proto->elements() != heap->empty_fixed_array()) return false;
-  ASSERT(array_proto->GetPrototype()->IsNull());
-  return true;
+  return array_proto->GetPrototype()->IsNull();
 }
 
 
@@ -838,8 +837,8 @@
       const int delta = actual_delete_count - item_count;
 
       if (actual_start > 0) {
-        Object** start = elms->data_start();
-        memmove(start + delta, start, actual_start * kPointerSize);
+        AssertNoAllocation no_gc;
+        MoveElements(heap, &no_gc, elms, delta, elms, 0, actual_start);
       }
 
       elms = LeftTrimFixedArray(heap, elms, delta);
diff --git a/src/cpu-profiler.cc b/src/cpu-profiler.cc
index 3894748..10a3360 100644
--- a/src/cpu-profiler.cc
+++ b/src/cpu-profiler.cc
@@ -244,7 +244,7 @@
       // A paranoid check to make sure that we don't get a memory overrun
       // in case of frames_count having a wild value.
       if (record.sample.frames_count < 0
-          || record.sample.frames_count >= TickSample::kMaxFramesCount)
+          || record.sample.frames_count > TickSample::kMaxFramesCount)
         record.sample.frames_count = 0;
       generator_->RecordTickSample(record.sample);
       ticks_buffer_.FinishDequeue();
diff --git a/src/d8.gyp b/src/d8.gyp
index 29212dd..901fd65 100644
--- a/src/d8.gyp
+++ b/src/d8.gyp
@@ -61,7 +61,6 @@
       'variables': {
         'js_files': [
           'd8.js',
-          'macros.py',
         ],
       },
       'actions': [
@@ -73,6 +72,7 @@
           ],
           'outputs': [
             '<(SHARED_INTERMEDIATE_DIR)/d8-js.cc',
+            '<(SHARED_INTERMEDIATE_DIR)/d8-js-empty.cc',
           ],
           'action': [
             'python',
diff --git a/src/data-flow.cc b/src/data-flow.cc
index 6a3b05c..79339ed 100644
--- a/src/data-flow.cc
+++ b/src/data-flow.cc
@@ -63,4 +63,477 @@
   current_value_ = val >> 1;
 }
 
+
+bool AssignedVariablesAnalyzer::Analyze(CompilationInfo* info) {
+  Scope* scope = info->scope();
+  int size = scope->num_parameters() + scope->num_stack_slots();
+  if (size == 0) return true;
+  AssignedVariablesAnalyzer analyzer(info, size);
+  return analyzer.Analyze();
+}
+
+
+AssignedVariablesAnalyzer::AssignedVariablesAnalyzer(CompilationInfo* info,
+                                                     int size)
+    : info_(info), av_(size) {
+}
+
+
+bool AssignedVariablesAnalyzer::Analyze() {
+  ASSERT(av_.length() > 0);
+  VisitStatements(info_->function()->body());
+  return !HasStackOverflow();
+}
+
+
+Variable* AssignedVariablesAnalyzer::FindSmiLoopVariable(ForStatement* stmt) {
+  // The loop must have all necessary parts.
+  if (stmt->init() == NULL || stmt->cond() == NULL || stmt->next() == NULL) {
+    return NULL;
+  }
+  // The initialization statement has to be a simple assignment.
+  Assignment* init = stmt->init()->StatementAsSimpleAssignment();
+  if (init == NULL) return NULL;
+
+  // We only deal with local variables.
+  Variable* loop_var = init->target()->AsVariableProxy()->AsVariable();
+  if (loop_var == NULL || !loop_var->IsStackAllocated()) return NULL;
+
+  // Don't try to get clever with const or dynamic variables.
+  if (loop_var->mode() != Variable::VAR) return NULL;
+
+  // The initial value has to be a smi.
+  Literal* init_lit = init->value()->AsLiteral();
+  if (init_lit == NULL || !init_lit->handle()->IsSmi()) return NULL;
+  int init_value = Smi::cast(*init_lit->handle())->value();
+
+  // The condition must be a compare of variable with <, <=, >, or >=.
+  CompareOperation* cond = stmt->cond()->AsCompareOperation();
+  if (cond == NULL) return NULL;
+  if (cond->op() != Token::LT
+      && cond->op() != Token::LTE
+      && cond->op() != Token::GT
+      && cond->op() != Token::GTE) return NULL;
+
+  // The lhs must be the same variable as in the init expression.
+  if (cond->left()->AsVariableProxy()->AsVariable() != loop_var) return NULL;
+
+  // The rhs must be a smi.
+  Literal* term_lit = cond->right()->AsLiteral();
+  if (term_lit == NULL || !term_lit->handle()->IsSmi()) return NULL;
+  int term_value = Smi::cast(*term_lit->handle())->value();
+
+  // The count operation updates the same variable as in the init expression.
+  CountOperation* update = stmt->next()->StatementAsCountOperation();
+  if (update == NULL) return NULL;
+  if (update->expression()->AsVariableProxy()->AsVariable() != loop_var) {
+    return NULL;
+  }
+
+  // The direction of the count operation must agree with the start and the end
+  // value. We currently do not allow the initial value to be the same as the
+  // terminal value. This _would_ be ok as long as the loop body never executes
+  // or executes exactly one time.
+  if (init_value == term_value) return NULL;
+  if (init_value < term_value && update->op() != Token::INC) return NULL;
+  if (init_value > term_value && update->op() != Token::DEC) return NULL;
+
+  // Check that the update operation cannot overflow the smi range. This can
+  // occur in the two cases where the loop bound is equal to the largest or
+  // smallest smi.
+  if (update->op() == Token::INC && term_value == Smi::kMaxValue) return NULL;
+  if (update->op() == Token::DEC && term_value == Smi::kMinValue) return NULL;
+
+  // Found a smi loop variable.
+  return loop_var;
+}
+
+int AssignedVariablesAnalyzer::BitIndex(Variable* var) {
+  ASSERT(var != NULL);
+  ASSERT(var->IsStackAllocated());
+  Slot* slot = var->AsSlot();
+  if (slot->type() == Slot::PARAMETER) {
+    return slot->index();
+  } else {
+    return info_->scope()->num_parameters() + slot->index();
+  }
+}
+
+
+void AssignedVariablesAnalyzer::RecordAssignedVar(Variable* var) {
+  ASSERT(var != NULL);
+  if (var->IsStackAllocated()) {
+    av_.Add(BitIndex(var));
+  }
+}
+
+
+void AssignedVariablesAnalyzer::MarkIfTrivial(Expression* expr) {
+  Variable* var = expr->AsVariableProxy()->AsVariable();
+  if (var != NULL &&
+      var->IsStackAllocated() &&
+      !var->is_arguments() &&
+      var->mode() != Variable::CONST &&
+      (var->is_this() || !av_.Contains(BitIndex(var)))) {
+    expr->AsVariableProxy()->MarkAsTrivial();
+  }
+}
+
+
+void AssignedVariablesAnalyzer::ProcessExpression(Expression* expr) {
+  BitVector saved_av(av_);
+  av_.Clear();
+  Visit(expr);
+  av_.Union(saved_av);
+}
+
+void AssignedVariablesAnalyzer::VisitBlock(Block* stmt) {
+  VisitStatements(stmt->statements());
+}
+
+
+void AssignedVariablesAnalyzer::VisitExpressionStatement(
+    ExpressionStatement* stmt) {
+  ProcessExpression(stmt->expression());
+}
+
+
+void AssignedVariablesAnalyzer::VisitEmptyStatement(EmptyStatement* stmt) {
+  // Do nothing.
+}
+
+
+void AssignedVariablesAnalyzer::VisitIfStatement(IfStatement* stmt) {
+  ProcessExpression(stmt->condition());
+  Visit(stmt->then_statement());
+  Visit(stmt->else_statement());
+}
+
+
+void AssignedVariablesAnalyzer::VisitContinueStatement(
+    ContinueStatement* stmt) {
+  // Nothing to do.
+}
+
+
+void AssignedVariablesAnalyzer::VisitBreakStatement(BreakStatement* stmt) {
+  // Nothing to do.
+}
+
+
+void AssignedVariablesAnalyzer::VisitReturnStatement(ReturnStatement* stmt) {
+  ProcessExpression(stmt->expression());
+}
+
+
+void AssignedVariablesAnalyzer::VisitWithEnterStatement(
+    WithEnterStatement* stmt) {
+  ProcessExpression(stmt->expression());
+}
+
+
+void AssignedVariablesAnalyzer::VisitWithExitStatement(
+    WithExitStatement* stmt) {
+  // Nothing to do.
+}
+
+
+void AssignedVariablesAnalyzer::VisitSwitchStatement(SwitchStatement* stmt) {
+  BitVector result(av_);
+  av_.Clear();
+  Visit(stmt->tag());
+  result.Union(av_);
+  for (int i = 0; i < stmt->cases()->length(); i++) {
+    CaseClause* clause = stmt->cases()->at(i);
+    if (!clause->is_default()) {
+      av_.Clear();
+      Visit(clause->label());
+      result.Union(av_);
+    }
+    VisitStatements(clause->statements());
+  }
+  av_.Union(result);
+}
+
+
+void AssignedVariablesAnalyzer::VisitDoWhileStatement(DoWhileStatement* stmt) {
+  ProcessExpression(stmt->cond());
+  Visit(stmt->body());
+}
+
+
+void AssignedVariablesAnalyzer::VisitWhileStatement(WhileStatement* stmt) {
+  ProcessExpression(stmt->cond());
+  Visit(stmt->body());
+}
+
+
+void AssignedVariablesAnalyzer::VisitForStatement(ForStatement* stmt) {
+  if (stmt->init() != NULL) Visit(stmt->init());
+  if (stmt->cond() != NULL) ProcessExpression(stmt->cond());
+  if (stmt->next() != NULL) Visit(stmt->next());
+
+  // Process loop body. After visiting the loop body av_ contains
+  // the assigned variables of the loop body.
+  BitVector saved_av(av_);
+  av_.Clear();
+  Visit(stmt->body());
+
+  Variable* var = FindSmiLoopVariable(stmt);
+  if (var != NULL && !av_.Contains(BitIndex(var))) {
+    stmt->set_loop_variable(var);
+  }
+  av_.Union(saved_av);
+}
+
+
+void AssignedVariablesAnalyzer::VisitForInStatement(ForInStatement* stmt) {
+  ProcessExpression(stmt->each());
+  ProcessExpression(stmt->enumerable());
+  Visit(stmt->body());
+}
+
+
+void AssignedVariablesAnalyzer::VisitTryCatchStatement(
+    TryCatchStatement* stmt) {
+  Visit(stmt->try_block());
+  Visit(stmt->catch_block());
+}
+
+
+void AssignedVariablesAnalyzer::VisitTryFinallyStatement(
+    TryFinallyStatement* stmt) {
+  Visit(stmt->try_block());
+  Visit(stmt->finally_block());
+}
+
+
+void AssignedVariablesAnalyzer::VisitDebuggerStatement(
+    DebuggerStatement* stmt) {
+  // Nothing to do.
+}
+
+
+void AssignedVariablesAnalyzer::VisitFunctionLiteral(FunctionLiteral* expr) {
+  // Nothing to do.
+  ASSERT(av_.IsEmpty());
+}
+
+
+void AssignedVariablesAnalyzer::VisitSharedFunctionInfoLiteral(
+    SharedFunctionInfoLiteral* expr) {
+  // Nothing to do.
+  ASSERT(av_.IsEmpty());
+}
+
+
+void AssignedVariablesAnalyzer::VisitConditional(Conditional* expr) {
+  ASSERT(av_.IsEmpty());
+
+  Visit(expr->condition());
+
+  BitVector result(av_);
+  av_.Clear();
+  Visit(expr->then_expression());
+  result.Union(av_);
+
+  av_.Clear();
+  Visit(expr->else_expression());
+  av_.Union(result);
+}
+
+
+void AssignedVariablesAnalyzer::VisitVariableProxy(VariableProxy* expr) {
+  // Nothing to do.
+  ASSERT(av_.IsEmpty());
+}
+
+
+void AssignedVariablesAnalyzer::VisitLiteral(Literal* expr) {
+  // Nothing to do.
+  ASSERT(av_.IsEmpty());
+}
+
+
+void AssignedVariablesAnalyzer::VisitRegExpLiteral(RegExpLiteral* expr) {
+  // Nothing to do.
+  ASSERT(av_.IsEmpty());
+}
+
+
+void AssignedVariablesAnalyzer::VisitObjectLiteral(ObjectLiteral* expr) {
+  ASSERT(av_.IsEmpty());
+  BitVector result(av_.length());
+  for (int i = 0; i < expr->properties()->length(); i++) {
+    Visit(expr->properties()->at(i)->value());
+    result.Union(av_);
+    av_.Clear();
+  }
+  av_ = result;
+}
+
+
+void AssignedVariablesAnalyzer::VisitArrayLiteral(ArrayLiteral* expr) {
+  ASSERT(av_.IsEmpty());
+  BitVector result(av_.length());
+  for (int i = 0; i < expr->values()->length(); i++) {
+    Visit(expr->values()->at(i));
+    result.Union(av_);
+    av_.Clear();
+  }
+  av_ = result;
+}
+
+
+void AssignedVariablesAnalyzer::VisitCatchExtensionObject(
+    CatchExtensionObject* expr) {
+  ASSERT(av_.IsEmpty());
+  Visit(expr->key());
+  ProcessExpression(expr->value());
+}
+
+
+void AssignedVariablesAnalyzer::VisitAssignment(Assignment* expr) {
+  ASSERT(av_.IsEmpty());
+
+  // There are three kinds of assignments: variable assignments, property
+  // assignments, and reference errors (invalid left-hand sides).
+  Variable* var = expr->target()->AsVariableProxy()->AsVariable();
+  Property* prop = expr->target()->AsProperty();
+  ASSERT(var == NULL || prop == NULL);
+
+  if (var != NULL) {
+    MarkIfTrivial(expr->value());
+    Visit(expr->value());
+    if (expr->is_compound()) {
+      // Left-hand side occurs also as an rvalue.
+      MarkIfTrivial(expr->target());
+      ProcessExpression(expr->target());
+    }
+    RecordAssignedVar(var);
+
+  } else if (prop != NULL) {
+    MarkIfTrivial(expr->value());
+    Visit(expr->value());
+    if (!prop->key()->IsPropertyName()) {
+      MarkIfTrivial(prop->key());
+      ProcessExpression(prop->key());
+    }
+    MarkIfTrivial(prop->obj());
+    ProcessExpression(prop->obj());
+
+  } else {
+    Visit(expr->target());
+  }
+}
+
+
+void AssignedVariablesAnalyzer::VisitThrow(Throw* expr) {
+  ASSERT(av_.IsEmpty());
+  Visit(expr->exception());
+}
+
+
+void AssignedVariablesAnalyzer::VisitProperty(Property* expr) {
+  ASSERT(av_.IsEmpty());
+  if (!expr->key()->IsPropertyName()) {
+    MarkIfTrivial(expr->key());
+    Visit(expr->key());
+  }
+  MarkIfTrivial(expr->obj());
+  ProcessExpression(expr->obj());
+}
+
+
+void AssignedVariablesAnalyzer::VisitCall(Call* expr) {
+  ASSERT(av_.IsEmpty());
+  Visit(expr->expression());
+  BitVector result(av_);
+  for (int i = 0; i < expr->arguments()->length(); i++) {
+    av_.Clear();
+    Visit(expr->arguments()->at(i));
+    result.Union(av_);
+  }
+  av_ = result;
+}
+
+
+void AssignedVariablesAnalyzer::VisitCallNew(CallNew* expr) {
+  ASSERT(av_.IsEmpty());
+  Visit(expr->expression());
+  BitVector result(av_);
+  for (int i = 0; i < expr->arguments()->length(); i++) {
+    av_.Clear();
+    Visit(expr->arguments()->at(i));
+    result.Union(av_);
+  }
+  av_ = result;
+}
+
+
+void AssignedVariablesAnalyzer::VisitCallRuntime(CallRuntime* expr) {
+  ASSERT(av_.IsEmpty());
+  BitVector result(av_);
+  for (int i = 0; i < expr->arguments()->length(); i++) {
+    av_.Clear();
+    Visit(expr->arguments()->at(i));
+    result.Union(av_);
+  }
+  av_ = result;
+}
+
+
+void AssignedVariablesAnalyzer::VisitUnaryOperation(UnaryOperation* expr) {
+  ASSERT(av_.IsEmpty());
+  MarkIfTrivial(expr->expression());
+  Visit(expr->expression());
+}
+
+
+void AssignedVariablesAnalyzer::VisitCountOperation(CountOperation* expr) {
+  ASSERT(av_.IsEmpty());
+  if (expr->is_prefix()) MarkIfTrivial(expr->expression());
+  Visit(expr->expression());
+
+  Variable* var = expr->expression()->AsVariableProxy()->AsVariable();
+  if (var != NULL) RecordAssignedVar(var);
+}
+
+
+void AssignedVariablesAnalyzer::VisitBinaryOperation(BinaryOperation* expr) {
+  ASSERT(av_.IsEmpty());
+  MarkIfTrivial(expr->right());
+  Visit(expr->right());
+  MarkIfTrivial(expr->left());
+  ProcessExpression(expr->left());
+}
+
+
+void AssignedVariablesAnalyzer::VisitCompareOperation(CompareOperation* expr) {
+  ASSERT(av_.IsEmpty());
+  MarkIfTrivial(expr->right());
+  Visit(expr->right());
+  MarkIfTrivial(expr->left());
+  ProcessExpression(expr->left());
+}
+
+
+void AssignedVariablesAnalyzer::VisitCompareToNull(CompareToNull* expr) {
+  ASSERT(av_.IsEmpty());
+  MarkIfTrivial(expr->expression());
+  Visit(expr->expression());
+}
+
+
+void AssignedVariablesAnalyzer::VisitThisFunction(ThisFunction* expr) {
+  // Nothing to do.
+  ASSERT(av_.IsEmpty());
+}
+
+
+void AssignedVariablesAnalyzer::VisitDeclaration(Declaration* decl) {
+  UNREACHABLE();
+}
+
+
 } }  // namespace v8::internal
diff --git a/src/data-flow.h b/src/data-flow.h
index 76cff88..573d7d8 100644
--- a/src/data-flow.h
+++ b/src/data-flow.h
@@ -335,6 +335,44 @@
   List<T*> queue_;
 };
 
+
+// Computes the set of assigned variables and annotates variables proxies
+// that are trivial sub-expressions and for-loops where the loop variable
+// is guaranteed to be a smi.
+class AssignedVariablesAnalyzer : public AstVisitor {
+ public:
+  static bool Analyze(CompilationInfo* info);
+
+ private:
+  AssignedVariablesAnalyzer(CompilationInfo* info, int bits);
+  bool Analyze();
+
+  Variable* FindSmiLoopVariable(ForStatement* stmt);
+
+  int BitIndex(Variable* var);
+
+  void RecordAssignedVar(Variable* var);
+
+  void MarkIfTrivial(Expression* expr);
+
+  // Visits an expression saving the accumulator before, clearing
+  // it before visting and restoring it after visiting.
+  void ProcessExpression(Expression* expr);
+
+  // AST node visit functions.
+#define DECLARE_VISIT(type) virtual void Visit##type(type* node);
+  AST_NODE_LIST(DECLARE_VISIT)
+#undef DECLARE_VISIT
+
+  CompilationInfo* info_;
+
+  // Accumulator for assigned variables set.
+  BitVector av_;
+
+  DISALLOW_COPY_AND_ASSIGN(AssignedVariablesAnalyzer);
+};
+
+
 } }  // namespace v8::internal
 
 
diff --git a/src/debug.cc b/src/debug.cc
index 3691333..093f38e 100644
--- a/src/debug.cc
+++ b/src/debug.cc
@@ -477,6 +477,21 @@
     // calling convention used by the call site.
     Handle<Code> dbgbrk_code(Debug::FindDebugBreak(code, mode));
     rinfo()->set_target_address(dbgbrk_code->entry());
+
+    // For stubs that refer back to an inlined version clear the cached map for
+    // the inlined case to always go through the IC. As long as the break point
+    // is set the patching performed by the runtime system will take place in
+    // the code copy and will therefore have no effect on the running code
+    // keeping it from using the inlined code.
+    if (code->is_keyed_load_stub()) {
+      KeyedLoadIC::ClearInlinedVersion(pc());
+    } else if (code->is_keyed_store_stub()) {
+      KeyedStoreIC::ClearInlinedVersion(pc());
+    } else if (code->is_load_stub()) {
+      LoadIC::ClearInlinedVersion(pc());
+    } else if (code->is_store_stub()) {
+      StoreIC::ClearInlinedVersion(pc());
+    }
   }
 }
 
@@ -484,6 +499,20 @@
 void BreakLocationIterator::ClearDebugBreakAtIC() {
   // Patch the code to the original invoke.
   rinfo()->set_target_address(original_rinfo()->target_address());
+
+  RelocInfo::Mode mode = rmode();
+  if (RelocInfo::IsCodeTarget(mode)) {
+    AssertNoAllocation nogc;
+    Address target = original_rinfo()->target_address();
+    Code* code = Code::GetCodeFromTargetAddress(target);
+
+    // Restore the inlined version of keyed stores to get back to the
+    // fast case.  We need to patch back the keyed store because no
+    // patching happens when running normally.  For keyed loads, the
+    // map check will get patched back when running normally after ICs
+    // have been cleared at GC.
+    if (code->is_keyed_store_stub()) KeyedStoreIC::RestoreInlinedVersion(pc());
+  }
 }
 
 
@@ -814,7 +843,6 @@
   HandleScope scope(isolate_);
   Handle<Context> context =
       isolate_->bootstrapper()->CreateEnvironment(
-          isolate_,
           Handle<Object>::null(),
           v8::Handle<ObjectTemplate>(),
           NULL);
diff --git a/src/extensions/experimental/collator.cc b/src/extensions/experimental/collator.cc
deleted file mode 100644
index 7d1a21d..0000000
--- a/src/extensions/experimental/collator.cc
+++ /dev/null
@@ -1,218 +0,0 @@
-// Copyright 2011 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-//       copyright notice, this list of conditions and the following
-//       disclaimer in the documentation and/or other materials provided
-//       with the distribution.
-//     * Neither the name of Google Inc. nor the names of its
-//       contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#include "collator.h"
-
-#include "unicode/coll.h"
-#include "unicode/locid.h"
-#include "unicode/ucol.h"
-
-namespace v8 {
-namespace internal {
-
-v8::Persistent<v8::FunctionTemplate> Collator::collator_template_;
-
-icu::Collator* Collator::UnpackCollator(v8::Handle<v8::Object> obj) {
-  if (collator_template_->HasInstance(obj)) {
-    return static_cast<icu::Collator*>(obj->GetPointerFromInternalField(0));
-  }
-
-  return NULL;
-}
-
-void Collator::DeleteCollator(v8::Persistent<v8::Value> object, void* param) {
-  v8::Persistent<v8::Object> persistent_object =
-      v8::Persistent<v8::Object>::Cast(object);
-
-  // First delete the hidden C++ object.
-  // Unpacking should never return NULL here. That would only happen if
-  // this method is used as the weak callback for persistent handles not
-  // pointing to a collator.
-  delete UnpackCollator(persistent_object);
-
-  // Then dispose of the persistent handle to JS object.
-  persistent_object.Dispose();
-}
-
-// Throws a JavaScript exception.
-static v8::Handle<v8::Value> ThrowUnexpectedObjectError() {
-  // Returns undefined, and schedules an exception to be thrown.
-  return v8::ThrowException(v8::Exception::Error(
-      v8::String::New("Collator method called on an object "
-                      "that is not a Collator.")));
-}
-
-// Extract a boolean option named in |option| and set it to |result|.
-// Return true if it's specified. Otherwise, return false.
-static bool ExtractBooleanOption(const v8::Local<v8::Object>& options,
-                                 const char* option,
-                                 bool* result) {
-  v8::HandleScope handle_scope;
-  v8::TryCatch try_catch;
-  v8::Handle<v8::Value> value = options->Get(v8::String::New(option));
-  if (try_catch.HasCaught()) {
-    return false;
-  }
-  // No need to check if |value| is empty because it's taken care of
-  // by TryCatch above.
-  if (!value->IsUndefined() && !value->IsNull()) {
-    if (value->IsBoolean()) {
-      *result = value->BooleanValue();
-      return true;
-    }
-  }
-  return false;
-}
-
-// When there's an ICU error, throw a JavaScript error with |message|.
-static v8::Handle<v8::Value> ThrowExceptionForICUError(const char* message) {
-  return v8::ThrowException(v8::Exception::Error(v8::String::New(message)));
-}
-
-v8::Handle<v8::Value> Collator::CollatorCompare(const v8::Arguments& args) {
-  if (args.Length() != 2 || !args[0]->IsString() || !args[1]->IsString()) {
-    return v8::ThrowException(v8::Exception::SyntaxError(
-        v8::String::New("Two string arguments are required.")));
-  }
-
-  icu::Collator* collator = UnpackCollator(args.Holder());
-  if (!collator) {
-    return ThrowUnexpectedObjectError();
-  }
-
-  v8::String::Value string_value1(args[0]);
-  v8::String::Value string_value2(args[1]);
-  const UChar* string1 = reinterpret_cast<const UChar*>(*string_value1);
-  const UChar* string2 = reinterpret_cast<const UChar*>(*string_value2);
-  UErrorCode status = U_ZERO_ERROR;
-  UCollationResult result = collator->compare(
-      string1, string_value1.length(), string2, string_value2.length(), status);
-
-  if (U_FAILURE(status)) {
-    return ThrowExceptionForICUError(
-        "Unexpected failure in Collator.compare.");
-  }
-
-  return v8::Int32::New(result);
-}
-
-v8::Handle<v8::Value> Collator::JSCollator(const v8::Arguments& args) {
-  v8::HandleScope handle_scope;
-
-  if (args.Length() != 2 || !args[0]->IsString() || !args[1]->IsObject()) {
-    return v8::ThrowException(v8::Exception::SyntaxError(
-        v8::String::New("Locale and collation options are required.")));
-  }
-
-  v8::String::AsciiValue locale(args[0]);
-  icu::Locale icu_locale(*locale);
-
-  icu::Collator* collator = NULL;
-  UErrorCode status = U_ZERO_ERROR;
-  collator = icu::Collator::createInstance(icu_locale, status);
-
-  if (U_FAILURE(status)) {
-    delete collator;
-    return ThrowExceptionForICUError("Failed to create collator.");
-  }
-
-  v8::Local<v8::Object> options(args[1]->ToObject());
-
-  // Below, we change collation options that are explicitly specified
-  // by a caller in JavaScript. Otherwise, we don't touch because
-  // we don't want to change the locale-dependent default value.
-  // The three options below are very likely to have the same default
-  // across locales, but I haven't checked them all. Others we may add
-  // in the future have certainly locale-dependent default (e.g.
-  // caseFirst is upperFirst for Danish while is off for most other locales).
-
-  bool ignore_case, ignore_accents, numeric;
-
-  if (ExtractBooleanOption(options, "ignoreCase", &ignore_case)) {
-    collator->setAttribute(UCOL_CASE_LEVEL, ignore_case ? UCOL_OFF : UCOL_ON,
-                           status);
-    if (U_FAILURE(status)) {
-      delete collator;
-      return ThrowExceptionForICUError("Failed to set ignoreCase.");
-    }
-  }
-
-  // Accents are taken into account with strength secondary or higher.
-  if (ExtractBooleanOption(options, "ignoreAccents", &ignore_accents)) {
-    if (!ignore_accents) {
-      collator->setStrength(icu::Collator::SECONDARY);
-    } else {
-      collator->setStrength(icu::Collator::PRIMARY);
-    }
-  }
-
-  if (ExtractBooleanOption(options, "numeric", &numeric)) {
-    collator->setAttribute(UCOL_NUMERIC_COLLATION,
-                           numeric ? UCOL_ON : UCOL_OFF, status);
-    if (U_FAILURE(status)) {
-      delete collator;
-      return ThrowExceptionForICUError("Failed to set numeric sort option.");
-    }
-  }
-
-  if (collator_template_.IsEmpty()) {
-    v8::Local<v8::FunctionTemplate> raw_template(v8::FunctionTemplate::New());
-    raw_template->SetClassName(v8::String::New("v8Locale.Collator"));
-
-    // Define internal field count on instance template.
-    v8::Local<v8::ObjectTemplate> object_template =
-        raw_template->InstanceTemplate();
-
-    // Set aside internal fields for icu collator.
-    object_template->SetInternalFieldCount(1);
-
-    // Define all of the prototype methods on prototype template.
-    v8::Local<v8::ObjectTemplate> proto = raw_template->PrototypeTemplate();
-    proto->Set(v8::String::New("compare"),
-               v8::FunctionTemplate::New(CollatorCompare));
-
-    collator_template_ =
-        v8::Persistent<v8::FunctionTemplate>::New(raw_template);
-  }
-
-  // Create an empty object wrapper.
-  v8::Local<v8::Object> local_object =
-      collator_template_->GetFunction()->NewInstance();
-  v8::Persistent<v8::Object> wrapper =
-      v8::Persistent<v8::Object>::New(local_object);
-
-  // Set collator as internal field of the resulting JS object.
-  wrapper->SetPointerInInternalField(0, collator);
-
-  // Make object handle weak so we can delete iterator once GC kicks in.
-  wrapper.MakeWeak(NULL, DeleteCollator);
-
-  return wrapper;
-}
-
-} }  // namespace v8::internal
-
diff --git a/src/extensions/experimental/collator.h b/src/extensions/experimental/collator.h
deleted file mode 100644
index 10d6ffb..0000000
--- a/src/extensions/experimental/collator.h
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2011 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-//       copyright notice, this list of conditions and the following
-//       disclaimer in the documentation and/or other materials provided
-//       with the distribution.
-//     * Neither the name of Google Inc. nor the names of its
-//       contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef V8_EXTENSIONS_EXPERIMENTAL_COLLATOR_H
-#define V8_EXTENSIONS_EXPERIMENTAL_COLLATOR_H_
-
-#include <v8.h>
-
-#include "unicode/uversion.h"
-
-namespace U_ICU_NAMESPACE {
-class Collator;
-class UnicodeString;
-}
-
-namespace v8 {
-namespace internal {
-
-class Collator {
- public:
-  static v8::Handle<v8::Value> JSCollator(const v8::Arguments& args);
-
-  // Helper methods for various bindings.
-
-  // Unpacks collator object from corresponding JavaScript object.
-  static icu::Collator* UnpackCollator(v8::Handle<v8::Object> obj);
-
-  // Release memory we allocated for the Collator once the JS object that
-  // holds the pointer gets garbage collected.
-  static void DeleteCollator(v8::Persistent<v8::Value> object, void* param);
-
-  // Compare two strings and returns -1, 0 and 1 depending on
-  // whether string1 is smaller than, equal to or larger than string2.
-  static v8::Handle<v8::Value> CollatorCompare(const v8::Arguments& args);
-
- private:
-  Collator() {}
-
-  static v8::Persistent<v8::FunctionTemplate> collator_template_;
-};
-
-} }  // namespace v8::internal
-
-#endif  // V8_EXTENSIONS_EXPERIMENTAL_COLLATOR
-
diff --git a/src/extensions/experimental/experimental.gyp b/src/extensions/experimental/experimental.gyp
index d1194ce..a8585fd 100644
--- a/src/extensions/experimental/experimental.gyp
+++ b/src/extensions/experimental/experimental.gyp
@@ -39,13 +39,9 @@
       'sources': [
         'break-iterator.cc',
         'break-iterator.h',
-        'collator.cc',
-        'collator.h',
         'i18n-extension.cc',
         'i18n-extension.h',
-        'i18n-locale.cc',
-        'i18n-locale.h',
-        '<(SHARED_INTERMEDIATE_DIR)/i18n-js.cc',
+	'<(SHARED_INTERMEDIATE_DIR)/i18n-js.cc',
       ],
       'include_dirs': [
         '<(icu_src_dir)/public/common',
@@ -53,7 +49,7 @@
       ],
       'dependencies': [
         '<(icu_src_dir)/icu.gyp:*',
-        'js2c_i18n#host',
+	'js2c_i18n#host',
         '../../../tools/gyp/v8.gyp:v8',
       ],
     },
@@ -63,27 +59,28 @@
       'toolsets': ['host'],
       'variables': {
         'library_files': [
-          'i18n.js'
-        ],
+	  'i18n.js'
+	],
       },
       'actions': [
         {
-          'action_name': 'js2c_i18n',
-          'inputs': [
-            '../../../tools/js2c.py',
-            '<@(library_files)',
-          ],
-          'outputs': [
-            '<(SHARED_INTERMEDIATE_DIR)/i18n-js.cc',
-          ],
-          'action': [
-            'python',
-            '../../../tools/js2c.py',
-            '<@(_outputs)',
-            'I18N',
-            '<@(library_files)'
-          ],
-        },
+	  'action_name': 'js2c_i18n',
+	  'inputs': [
+	    '../../../tools/js2c.py',
+	    '<@(library_files)',
+	  ],
+	  'outputs': [
+	    '<(SHARED_INTERMEDIATE_DIR)/i18n-js.cc',
+	    '<(SHARED_INTERMEDIATE_DIR)/i18n-js-empty.cc'
+	  ],
+	  'action': [
+	    'python',
+	    '../../../tools/js2c.py',
+	    '<@(_outputs)',
+	    'I18N',
+	    '<@(library_files)'
+	  ],
+	},
       ],
     },
   ],  # targets
diff --git a/src/extensions/experimental/i18n-extension.cc b/src/extensions/experimental/i18n-extension.cc
index 56bea23..6e3ab15 100644
--- a/src/extensions/experimental/i18n-extension.cc
+++ b/src/extensions/experimental/i18n-extension.cc
@@ -1,4 +1,4 @@
-// Copyright 2011 the V8 project authors. All rights reserved.
+// Copyright 2010 the V8 project authors. All rights reserved.
 // Redistribution and use in source and binary forms, with or without
 // modification, are permitted provided that the following conditions are
 // met:
@@ -27,10 +27,13 @@
 
 #include "i18n-extension.h"
 
+#include <algorithm>
+#include <string>
+
 #include "break-iterator.h"
-#include "collator.h"
-#include "i18n-locale.h"
 #include "natives.h"
+#include "unicode/locid.h"
+#include "unicode/uloc.h"
 
 namespace v8 {
 namespace internal {
@@ -54,30 +57,166 @@
 v8::Handle<v8::FunctionTemplate> I18NExtension::GetNativeFunction(
     v8::Handle<v8::String> name) {
   if (name->Equals(v8::String::New("NativeJSLocale"))) {
-    return v8::FunctionTemplate::New(I18NLocale::JSLocale);
+    return v8::FunctionTemplate::New(JSLocale);
   } else if (name->Equals(v8::String::New("NativeJSAvailableLocales"))) {
-    return v8::FunctionTemplate::New(I18NLocale::JSAvailableLocales);
+    return v8::FunctionTemplate::New(JSAvailableLocales);
   } else if (name->Equals(v8::String::New("NativeJSMaximizedLocale"))) {
-    return v8::FunctionTemplate::New(I18NLocale::JSMaximizedLocale);
+    return v8::FunctionTemplate::New(JSMaximizedLocale);
   } else if (name->Equals(v8::String::New("NativeJSMinimizedLocale"))) {
-    return v8::FunctionTemplate::New(I18NLocale::JSMinimizedLocale);
+    return v8::FunctionTemplate::New(JSMinimizedLocale);
   } else if (name->Equals(v8::String::New("NativeJSDisplayLanguage"))) {
-    return v8::FunctionTemplate::New(I18NLocale::JSDisplayLanguage);
+    return v8::FunctionTemplate::New(JSDisplayLanguage);
   } else if (name->Equals(v8::String::New("NativeJSDisplayScript"))) {
-    return v8::FunctionTemplate::New(I18NLocale::JSDisplayScript);
+    return v8::FunctionTemplate::New(JSDisplayScript);
   } else if (name->Equals(v8::String::New("NativeJSDisplayRegion"))) {
-    return v8::FunctionTemplate::New(I18NLocale::JSDisplayRegion);
+    return v8::FunctionTemplate::New(JSDisplayRegion);
   } else if (name->Equals(v8::String::New("NativeJSDisplayName"))) {
-    return v8::FunctionTemplate::New(I18NLocale::JSDisplayName);
+    return v8::FunctionTemplate::New(JSDisplayName);
   } else if (name->Equals(v8::String::New("NativeJSBreakIterator"))) {
     return v8::FunctionTemplate::New(BreakIterator::JSBreakIterator);
-  } else if (name->Equals(v8::String::New("NativeJSCollator"))) {
-    return v8::FunctionTemplate::New(Collator::JSCollator);
   }
 
   return v8::Handle<v8::FunctionTemplate>();
 }
 
+v8::Handle<v8::Value> I18NExtension::JSLocale(const v8::Arguments& args) {
+  // TODO(cira): Fetch browser locale. Accept en-US as good default for now.
+  // We could possibly pass browser locale as a parameter in the constructor.
+  std::string locale_name("en-US");
+  if (args.Length() == 1 && args[0]->IsString()) {
+    locale_name = *v8::String::Utf8Value(args[0]->ToString());
+  }
+
+  v8::Local<v8::Object> locale = v8::Object::New();
+  locale->Set(v8::String::New("locale"), v8::String::New(locale_name.c_str()));
+
+  icu::Locale icu_locale(locale_name.c_str());
+
+  const char* language = icu_locale.getLanguage();
+  locale->Set(v8::String::New("language"), v8::String::New(language));
+
+  const char* script = icu_locale.getScript();
+  if (strlen(script)) {
+    locale->Set(v8::String::New("script"), v8::String::New(script));
+  }
+
+  const char* region = icu_locale.getCountry();
+  if (strlen(region)) {
+    locale->Set(v8::String::New("region"), v8::String::New(region));
+  }
+
+  return locale;
+}
+
+// TODO(cira): Filter out locales that Chrome doesn't support.
+v8::Handle<v8::Value> I18NExtension::JSAvailableLocales(
+    const v8::Arguments& args) {
+  v8::Local<v8::Array> all_locales = v8::Array::New();
+
+  int count = 0;
+  const icu::Locale* icu_locales = icu::Locale::getAvailableLocales(count);
+  for (int i = 0; i < count; ++i) {
+    all_locales->Set(i, v8::String::New(icu_locales[i].getName()));
+  }
+
+  return all_locales;
+}
+
+// Use - as tag separator, not _ that ICU uses.
+static std::string NormalizeLocale(const std::string& locale) {
+  std::string result(locale);
+  // TODO(cira): remove STL dependency.
+  std::replace(result.begin(), result.end(), '_', '-');
+  return result;
+}
+
+v8::Handle<v8::Value> I18NExtension::JSMaximizedLocale(
+    const v8::Arguments& args) {
+  if (!args.Length() || !args[0]->IsString()) {
+    return v8::Undefined();
+  }
+
+  UErrorCode status = U_ZERO_ERROR;
+  std::string locale_name = *v8::String::Utf8Value(args[0]->ToString());
+  char max_locale[ULOC_FULLNAME_CAPACITY];
+  uloc_addLikelySubtags(locale_name.c_str(), max_locale,
+                        sizeof(max_locale), &status);
+  if (U_FAILURE(status)) {
+    return v8::Undefined();
+  }
+
+  return v8::String::New(NormalizeLocale(max_locale).c_str());
+}
+
+v8::Handle<v8::Value> I18NExtension::JSMinimizedLocale(
+    const v8::Arguments& args) {
+  if (!args.Length() || !args[0]->IsString()) {
+    return v8::Undefined();
+  }
+
+  UErrorCode status = U_ZERO_ERROR;
+  std::string locale_name = *v8::String::Utf8Value(args[0]->ToString());
+  char min_locale[ULOC_FULLNAME_CAPACITY];
+  uloc_minimizeSubtags(locale_name.c_str(), min_locale,
+                       sizeof(min_locale), &status);
+  if (U_FAILURE(status)) {
+    return v8::Undefined();
+  }
+
+  return v8::String::New(NormalizeLocale(min_locale).c_str());
+}
+
+// Common code for JSDisplayXXX methods.
+static v8::Handle<v8::Value> GetDisplayItem(const v8::Arguments& args,
+                                            const std::string& item) {
+  if (args.Length() != 2 || !args[0]->IsString() || !args[1]->IsString()) {
+    return v8::Undefined();
+  }
+
+  std::string base_locale = *v8::String::Utf8Value(args[0]->ToString());
+  icu::Locale icu_locale(base_locale.c_str());
+  icu::Locale display_locale =
+      icu::Locale(*v8::String::Utf8Value(args[1]->ToString()));
+  icu::UnicodeString result;
+  if (item == "language") {
+    icu_locale.getDisplayLanguage(display_locale, result);
+  } else if (item == "script") {
+    icu_locale.getDisplayScript(display_locale, result);
+  } else if (item == "region") {
+    icu_locale.getDisplayCountry(display_locale, result);
+  } else if (item == "name") {
+    icu_locale.getDisplayName(display_locale, result);
+  } else {
+    return v8::Undefined();
+  }
+
+  if (result.length()) {
+    return v8::String::New(
+        reinterpret_cast<const uint16_t*>(result.getBuffer()), result.length());
+  }
+
+  return v8::Undefined();
+}
+
+v8::Handle<v8::Value> I18NExtension::JSDisplayLanguage(
+    const v8::Arguments& args) {
+  return GetDisplayItem(args, "language");
+}
+
+v8::Handle<v8::Value> I18NExtension::JSDisplayScript(
+    const v8::Arguments& args) {
+  return GetDisplayItem(args, "script");
+}
+
+v8::Handle<v8::Value> I18NExtension::JSDisplayRegion(
+    const v8::Arguments& args) {
+  return GetDisplayItem(args, "region");
+}
+
+v8::Handle<v8::Value> I18NExtension::JSDisplayName(const v8::Arguments& args) {
+  return GetDisplayItem(args, "name");
+}
+
 I18NExtension* I18NExtension::get() {
   if (!extension_) {
     extension_ = new I18NExtension();
diff --git a/src/extensions/experimental/i18n-extension.h b/src/extensions/experimental/i18n-extension.h
index b4dc7c3..54c973f 100644
--- a/src/extensions/experimental/i18n-extension.h
+++ b/src/extensions/experimental/i18n-extension.h
@@ -1,4 +1,4 @@
-// Copyright 2011 the V8 project authors. All rights reserved.
+// Copyright 2010 the V8 project authors. All rights reserved.
 // Redistribution and use in source and binary forms, with or without
 // modification, are permitted provided that the following conditions are
 // met:
@@ -41,6 +41,16 @@
   virtual v8::Handle<v8::FunctionTemplate> GetNativeFunction(
       v8::Handle<v8::String> name);
 
+  // Implementations of window.Locale methods.
+  static v8::Handle<v8::Value> JSLocale(const v8::Arguments& args);
+  static v8::Handle<v8::Value> JSAvailableLocales(const v8::Arguments& args);
+  static v8::Handle<v8::Value> JSMaximizedLocale(const v8::Arguments& args);
+  static v8::Handle<v8::Value> JSMinimizedLocale(const v8::Arguments& args);
+  static v8::Handle<v8::Value> JSDisplayLanguage(const v8::Arguments& args);
+  static v8::Handle<v8::Value> JSDisplayScript(const v8::Arguments& args);
+  static v8::Handle<v8::Value> JSDisplayRegion(const v8::Arguments& args);
+  static v8::Handle<v8::Value> JSDisplayName(const v8::Arguments& args);
+
   // V8 code prefers Register, while Chrome and WebKit use get kind of methods.
   static void Register();
   static I18NExtension* get();
diff --git a/src/extensions/experimental/i18n-locale.cc b/src/extensions/experimental/i18n-locale.cc
deleted file mode 100644
index e5e1cf8..0000000
--- a/src/extensions/experimental/i18n-locale.cc
+++ /dev/null
@@ -1,172 +0,0 @@
-// Copyright 2011 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-//       copyright notice, this list of conditions and the following
-//       disclaimer in the documentation and/or other materials provided
-//       with the distribution.
-//     * Neither the name of Google Inc. nor the names of its
-//       contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#include "i18n-locale.h"
-
-#include <algorithm>
-#include <string>
-
-#include "unicode/locid.h"
-#include "unicode/uloc.h"
-
-namespace v8 {
-namespace internal {
-
-v8::Handle<v8::Value> I18NLocale::JSLocale(const v8::Arguments& args) {
-  // TODO(cira): Fetch browser locale. Accept en-US as good default for now.
-  // We could possibly pass browser locale as a parameter in the constructor.
-  std::string locale_name("en-US");
-  if (args.Length() == 1 && args[0]->IsString()) {
-    locale_name = *v8::String::Utf8Value(args[0]->ToString());
-  }
-
-  v8::Local<v8::Object> locale = v8::Object::New();
-  locale->Set(v8::String::New("locale"), v8::String::New(locale_name.c_str()));
-
-  icu::Locale icu_locale(locale_name.c_str());
-
-  const char* language = icu_locale.getLanguage();
-  locale->Set(v8::String::New("language"), v8::String::New(language));
-
-  const char* script = icu_locale.getScript();
-  if (strlen(script)) {
-    locale->Set(v8::String::New("script"), v8::String::New(script));
-  }
-
-  const char* region = icu_locale.getCountry();
-  if (strlen(region)) {
-    locale->Set(v8::String::New("region"), v8::String::New(region));
-  }
-
-  return locale;
-}
-
-// TODO(cira): Filter out locales that Chrome doesn't support.
-v8::Handle<v8::Value> I18NLocale::JSAvailableLocales(
-    const v8::Arguments& args) {
-  v8::Local<v8::Array> all_locales = v8::Array::New();
-
-  int count = 0;
-  const icu::Locale* icu_locales = icu::Locale::getAvailableLocales(count);
-  for (int i = 0; i < count; ++i) {
-    all_locales->Set(i, v8::String::New(icu_locales[i].getName()));
-  }
-
-  return all_locales;
-}
-
-// Use - as tag separator, not _ that ICU uses.
-static std::string NormalizeLocale(const std::string& locale) {
-  std::string result(locale);
-  // TODO(cira): remove STL dependency.
-  std::replace(result.begin(), result.end(), '_', '-');
-  return result;
-}
-
-v8::Handle<v8::Value> I18NLocale::JSMaximizedLocale(const v8::Arguments& args) {
-  if (!args.Length() || !args[0]->IsString()) {
-    return v8::Undefined();
-  }
-
-  UErrorCode status = U_ZERO_ERROR;
-  std::string locale_name = *v8::String::Utf8Value(args[0]->ToString());
-  char max_locale[ULOC_FULLNAME_CAPACITY];
-  uloc_addLikelySubtags(locale_name.c_str(), max_locale,
-                        sizeof(max_locale), &status);
-  if (U_FAILURE(status)) {
-    return v8::Undefined();
-  }
-
-  return v8::String::New(NormalizeLocale(max_locale).c_str());
-}
-
-v8::Handle<v8::Value> I18NLocale::JSMinimizedLocale(const v8::Arguments& args) {
-  if (!args.Length() || !args[0]->IsString()) {
-    return v8::Undefined();
-  }
-
-  UErrorCode status = U_ZERO_ERROR;
-  std::string locale_name = *v8::String::Utf8Value(args[0]->ToString());
-  char min_locale[ULOC_FULLNAME_CAPACITY];
-  uloc_minimizeSubtags(locale_name.c_str(), min_locale,
-                       sizeof(min_locale), &status);
-  if (U_FAILURE(status)) {
-    return v8::Undefined();
-  }
-
-  return v8::String::New(NormalizeLocale(min_locale).c_str());
-}
-
-// Common code for JSDisplayXXX methods.
-static v8::Handle<v8::Value> GetDisplayItem(const v8::Arguments& args,
-                                            const std::string& item) {
-  if (args.Length() != 2 || !args[0]->IsString() || !args[1]->IsString()) {
-    return v8::Undefined();
-  }
-
-  std::string base_locale = *v8::String::Utf8Value(args[0]->ToString());
-  icu::Locale icu_locale(base_locale.c_str());
-  icu::Locale display_locale =
-      icu::Locale(*v8::String::Utf8Value(args[1]->ToString()));
-  icu::UnicodeString result;
-  if (item == "language") {
-    icu_locale.getDisplayLanguage(display_locale, result);
-  } else if (item == "script") {
-    icu_locale.getDisplayScript(display_locale, result);
-  } else if (item == "region") {
-    icu_locale.getDisplayCountry(display_locale, result);
-  } else if (item == "name") {
-    icu_locale.getDisplayName(display_locale, result);
-  } else {
-    return v8::Undefined();
-  }
-
-  if (result.length()) {
-    return v8::String::New(
-        reinterpret_cast<const uint16_t*>(result.getBuffer()), result.length());
-  }
-
-  return v8::Undefined();
-}
-
-v8::Handle<v8::Value> I18NLocale::JSDisplayLanguage(const v8::Arguments& args) {
-  return GetDisplayItem(args, "language");
-}
-
-v8::Handle<v8::Value> I18NLocale::JSDisplayScript(const v8::Arguments& args) {
-  return GetDisplayItem(args, "script");
-}
-
-v8::Handle<v8::Value> I18NLocale::JSDisplayRegion(const v8::Arguments& args) {
-  return GetDisplayItem(args, "region");
-}
-
-v8::Handle<v8::Value> I18NLocale::JSDisplayName(const v8::Arguments& args) {
-  return GetDisplayItem(args, "name");
-}
-
-} }  // namespace v8::internal
diff --git a/src/extensions/experimental/i18n-locale.h b/src/extensions/experimental/i18n-locale.h
deleted file mode 100644
index aa9adbe..0000000
--- a/src/extensions/experimental/i18n-locale.h
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2011 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-//       copyright notice, this list of conditions and the following
-//       disclaimer in the documentation and/or other materials provided
-//       with the distribution.
-//     * Neither the name of Google Inc. nor the names of its
-//       contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef V8_EXTENSIONS_EXPERIMENTAL_I18N_LOCALE_H_
-#define V8_EXTENSIONS_EXPERIMENTAL_I18N_LOCALE_H_
-
-#include <v8.h>
-
-namespace v8 {
-namespace internal {
-
-class I18NLocale {
- public:
-  I18NLocale() {}
-
-  // Implementations of window.Locale methods.
-  static v8::Handle<v8::Value> JSLocale(const v8::Arguments& args);
-  static v8::Handle<v8::Value> JSAvailableLocales(const v8::Arguments& args);
-  static v8::Handle<v8::Value> JSMaximizedLocale(const v8::Arguments& args);
-  static v8::Handle<v8::Value> JSMinimizedLocale(const v8::Arguments& args);
-  static v8::Handle<v8::Value> JSDisplayLanguage(const v8::Arguments& args);
-  static v8::Handle<v8::Value> JSDisplayScript(const v8::Arguments& args);
-  static v8::Handle<v8::Value> JSDisplayRegion(const v8::Arguments& args);
-  static v8::Handle<v8::Value> JSDisplayName(const v8::Arguments& args);
-};
-
-} }  // namespace v8::internal
-
-#endif  // V8_EXTENSIONS_EXPERIMENTAL_I18N_LOCALE_H_
diff --git a/src/extensions/experimental/i18n.js b/src/extensions/experimental/i18n.js
index 5a74905..baf3859 100644
--- a/src/extensions/experimental/i18n.js
+++ b/src/extensions/experimental/i18n.js
@@ -101,16 +101,3 @@
 v8Locale.prototype.v8CreateBreakIterator = function(type) {
   return new v8Locale.v8BreakIterator(this.locale, type);
 };
-
-// TODO(jungshik): Set |collator.options| to actually recognized / resolved
-// values.
-v8Locale.Collator = function(locale, options) {
-  native function NativeJSCollator();
-  var collator = NativeJSCollator(locale,
-      options === undefined ? {} : options);
-  return collator;
-};
-
-v8Locale.prototype.createCollator = function(options) {
-  return new v8Locale.Collator(this.locale, options);
-};
diff --git a/src/flag-definitions.h b/src/flag-definitions.h
index 69139bb..17e2015 100644
--- a/src/flag-definitions.h
+++ b/src/flag-definitions.h
@@ -96,9 +96,6 @@
 //
 #define FLAG FLAG_FULL
 
-// Flags for experimental language features.
-DEFINE_bool(harmony_proxies, false, "enable harmony proxies")
-
 // Flags for Crankshaft.
 #ifdef V8_TARGET_ARCH_MIPS
   DEFINE_bool(crankshaft, false, "use crankshaft")
@@ -223,6 +220,8 @@
 // compilation-cache.cc
 DEFINE_bool(compilation_cache, true, "enable compilation cache")
 
+DEFINE_bool(cache_prototype_transitions, true, "cache prototype transitions")
+
 // data-flow.cc
 DEFINE_bool(loop_peeling, false, "Peel off the first iteration of loops.")
 
diff --git a/src/frames.h b/src/frames.h
index da9009b..6fe6a63 100644
--- a/src/frames.h
+++ b/src/frames.h
@@ -151,6 +151,12 @@
     NO_ID = 0
   };
 
+  // Used to mark the outermost JS entry frame.
+  enum JsFrameMarker {
+    INNER_JSENTRY_FRAME = 0,
+    OUTERMOST_JSENTRY_FRAME = 1
+  };
+
   struct State {
     State() : sp(NULL), fp(NULL), pc_address(NULL) { }
     Address sp;
diff --git a/src/heap.cc b/src/heap.cc
index 93bdc03..0b4abf3 100644
--- a/src/heap.cc
+++ b/src/heap.cc
@@ -127,6 +127,7 @@
       global_gc_prologue_callback_(NULL),
       global_gc_epilogue_callback_(NULL),
       gc_safe_size_of_old_object_(NULL),
+      total_regexp_code_generated_(0),
       tracer_(NULL),
       young_survivors_after_last_gc_(0),
       high_survival_rate_period_length_(0),
@@ -1596,6 +1597,7 @@
   map->set_pre_allocated_property_fields(0);
   map->set_instance_descriptors(empty_descriptor_array());
   map->set_code_cache(empty_fixed_array());
+  map->set_prototype_transitions(empty_fixed_array());
   map->set_unused_property_fields(0);
   map->set_bit_field(0);
   map->set_bit_field2((1 << Map::kIsExtensible) | (1 << Map::kHasFastElements));
@@ -1688,12 +1690,15 @@
   // Fix the instance_descriptors for the existing maps.
   meta_map()->set_instance_descriptors(empty_descriptor_array());
   meta_map()->set_code_cache(empty_fixed_array());
+  meta_map()->set_prototype_transitions(empty_fixed_array());
 
   fixed_array_map()->set_instance_descriptors(empty_descriptor_array());
   fixed_array_map()->set_code_cache(empty_fixed_array());
+  fixed_array_map()->set_prototype_transitions(empty_fixed_array());
 
   oddball_map()->set_instance_descriptors(empty_descriptor_array());
   oddball_map()->set_code_cache(empty_fixed_array());
+  oddball_map()->set_prototype_transitions(empty_fixed_array());
 
   // Fix prototype object for existing maps.
   meta_map()->set_prototype(null_value());
diff --git a/src/heap.h b/src/heap.h
index 7a1bed3..ae4e9e7 100644
--- a/src/heap.h
+++ b/src/heap.h
@@ -1210,6 +1210,11 @@
 
   GCTracer* tracer() { return tracer_; }
 
+  double total_regexp_code_generated() { return total_regexp_code_generated_; }
+  void IncreaseTotalRegexpCodeGenerated(int size) {
+    total_regexp_code_generated_ += size;
+  }
+
   // Returns maximum GC pause.
   int get_max_gc_pause() { return max_gc_pause_; }
 
@@ -1493,6 +1498,9 @@
       SharedFunctionInfo* shared,
       Object* prototype);
 
+  // Total RegExp code ever generated
+  double total_regexp_code_generated_;
+
   GCTracer* tracer_;
 
 
diff --git a/src/hydrogen-instructions.cc b/src/hydrogen-instructions.cc
index 3b01f57..032ca76 100644
--- a/src/hydrogen-instructions.cc
+++ b/src/hydrogen-instructions.cc
@@ -1017,9 +1017,10 @@
 
 HConstant::HConstant(Handle<Object> handle, Representation r)
     : handle_(handle),
+      constant_type_(HType::TypeFromValue(handle)),
       has_int32_value_(false),
-      has_double_value_(false),
       int32_value_(0),
+      has_double_value_(false),
       double_value_(0)  {
   set_representation(r);
   SetFlag(kUseGVN);
@@ -1434,7 +1435,7 @@
 
 
 HType HConstant::CalculateInferredType() {
-  return HType::TypeFromValue(handle_);
+  return constant_type_;
 }
 
 
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h
index e32a09c..a623775 100644
--- a/src/hydrogen-instructions.h
+++ b/src/hydrogen-instructions.h
@@ -114,7 +114,6 @@
   V(HasCachedArrayIndex)                       \
   V(InstanceOf)                                \
   V(InstanceOfKnownGlobal)                     \
-  V(InvokeFunction)                            \
   V(IsNull)                                    \
   V(IsObject)                                  \
   V(IsSmi)                                     \
@@ -156,7 +155,6 @@
   V(StoreKeyedGeneric)                         \
   V(StoreNamedField)                           \
   V(StoreNamedGeneric)                         \
-  V(StringAdd)                                 \
   V(StringCharCodeAt)                          \
   V(StringCharFromCode)                        \
   V(StringLength)                              \
@@ -1245,23 +1243,6 @@
 };
 
 
-class HInvokeFunction: public HBinaryCall {
- public:
-  HInvokeFunction(HValue* context, HValue* function, int argument_count)
-      : HBinaryCall(context, function, argument_count) {
-  }
-
-  virtual Representation RequiredInputRepresentation(int index) const {
-    return Representation::Tagged();
-  }
-
-  HValue* context() { return first(); }
-  HValue* function() { return second(); }
-
-  DECLARE_CONCRETE_INSTRUCTION(InvokeFunction, "invoke_function")
-};
-
-
 class HCallConstantFunction: public HCall<0> {
  public:
   HCallConstantFunction(Handle<JSFunction> function, int argument_count)
@@ -1726,16 +1707,6 @@
   virtual void Verify();
 #endif
 
-  virtual HValue* Canonicalize() {
-    if (!value()->type().IsUninitialized() &&
-        value()->type().IsString() &&
-        first() == FIRST_STRING_TYPE &&
-        last() == LAST_STRING_TYPE) {
-      return NULL;
-    }
-    return this;
-  }
-
   static HCheckInstanceType* NewIsJSObjectOrJSFunction(HValue* value);
 
   InstanceType first() const { return first_; }
@@ -1777,18 +1748,6 @@
   virtual void Verify();
 #endif
 
-  virtual HValue* Canonicalize() {
-    HType value_type = value()->type();
-    if (!value_type.IsUninitialized() &&
-        (value_type.IsHeapNumber() ||
-         value_type.IsString() ||
-         value_type.IsBoolean() ||
-         value_type.IsNonPrimitive())) {
-      return NULL;
-    }
-    return this;
-  }
-
   DECLARE_CONCRETE_INSTRUCTION(CheckNonSmi, "check_non_smi")
 
  protected:
@@ -2031,13 +1990,14 @@
 
  private:
   Handle<Object> handle_;
+  HType constant_type_;
 
   // The following two values represent the int32 and the double value of the
   // given constant if there is a lossless conversion between the constant
   // and the specific representation.
-  bool has_int32_value_ : 1;
-  bool has_double_value_ : 1;
+  bool has_int32_value_;
   int32_t int32_value_;
+  bool has_double_value_;
   double double_value_;
 };
 
@@ -3448,29 +3408,6 @@
 };
 
 
-class HStringAdd: public HBinaryOperation {
- public:
-  HStringAdd(HValue* left, HValue* right) : HBinaryOperation(left, right) {
-    set_representation(Representation::Tagged());
-    SetFlag(kUseGVN);
-    SetFlag(kDependsOnMaps);
-  }
-
-  virtual Representation RequiredInputRepresentation(int index) const {
-    return Representation::Tagged();
-  }
-
-  virtual HType CalculateInferredType() {
-    return HType::String();
-  }
-
-  DECLARE_CONCRETE_INSTRUCTION(StringAdd, "string_add")
-
- protected:
-  virtual bool DataEquals(HValue* other) { return true; }
-};
-
-
 class HStringCharCodeAt: public HBinaryOperation {
  public:
   HStringCharCodeAt(HValue* string, HValue* index)
diff --git a/src/hydrogen.cc b/src/hydrogen.cc
index f6c47f3..73ea97d 100644
--- a/src/hydrogen.cc
+++ b/src/hydrogen.cc
@@ -242,7 +242,7 @@
 
 
 void HBasicBlock::RegisterPredecessor(HBasicBlock* pred) {
-  if (HasPredecessor()) {
+  if (!predecessors_.is_empty()) {
     // Only loop header blocks can have a predecessor added after
     // instructions have been added to the block (they have phis for all
     // values in the environment, these phis may be eliminated later).
@@ -1808,7 +1808,7 @@
     ZoneList<Representation>* to_convert_reps) {
   Representation r = current->representation();
   if (r.IsNone()) return;
-  if (current->uses()->is_empty()) return;
+  if (current->uses()->length() == 0) return;
 
   // Collect the representation changes in a sorted list.  This allows
   // us to avoid duplicate changes without searching the list.
@@ -2076,17 +2076,37 @@
 
 
 // HGraphBuilder infrastructure for bailing out and checking bailouts.
-#define CHECK_BAILOUT(call)                     \
+#define BAILOUT(reason)                         \
   do {                                          \
-    call;                                       \
+    Bailout(reason);                            \
+    return;                                     \
+  } while (false)
+
+
+#define CHECK_BAILOUT                           \
+  do {                                          \
     if (HasStackOverflow()) return;             \
   } while (false)
 
 
-#define CHECK_ALIVE(call)                                       \
+#define VISIT_FOR_EFFECT(expr)                  \
+  do {                                          \
+    VisitForEffect(expr);                       \
+    if (HasStackOverflow()) return;             \
+  } while (false)
+
+
+#define VISIT_FOR_VALUE(expr)                   \
+  do {                                          \
+    VisitForValue(expr);                        \
+    if (HasStackOverflow()) return;             \
+  } while (false)
+
+
+#define VISIT_FOR_CONTROL(expr, true_block, false_block)        \
   do {                                                          \
-    call;                                                       \
-    if (HasStackOverflow() || current_block() == NULL) return;  \
+    VisitForControl(expr, true_block, false_block);             \
+    if (HasStackOverflow()) return;                             \
   } while (false)
 
 
@@ -2128,21 +2148,22 @@
 
 
 void HGraphBuilder::VisitArgument(Expression* expr) {
-  CHECK_ALIVE(VisitForValue(expr));
+  VISIT_FOR_VALUE(expr);
   Push(AddInstruction(new(zone()) HPushArgument(Pop())));
 }
 
 
 void HGraphBuilder::VisitArgumentList(ZoneList<Expression*>* arguments) {
   for (int i = 0; i < arguments->length(); i++) {
-    CHECK_ALIVE(VisitArgument(arguments->at(i)));
+    VisitArgument(arguments->at(i));
+    if (HasStackOverflow() || current_block() == NULL) return;
   }
 }
 
 
 void HGraphBuilder::VisitExpressions(ZoneList<Expression*>* exprs) {
   for (int i = 0; i < exprs->length(); ++i) {
-    CHECK_ALIVE(VisitForValue(exprs->at(i)));
+    VISIT_FOR_VALUE(exprs->at(i));
   }
 }
 
@@ -2273,7 +2294,7 @@
 
 void HGraphBuilder::SetupScope(Scope* scope) {
   // We don't yet handle the function name for named function expressions.
-  if (scope->function() != NULL) return Bailout("named function expression");
+  if (scope->function() != NULL) BAILOUT("named function expression");
 
   HConstant* undefined_constant = new(zone()) HConstant(
       isolate()->factory()->undefined_value(), Representation::Tagged());
@@ -2299,7 +2320,7 @@
     if (!scope->arguments()->IsStackAllocated() ||
         (scope->arguments_shadow() != NULL &&
         !scope->arguments_shadow()->IsStackAllocated())) {
-      return Bailout("context-allocated arguments");
+      BAILOUT("context-allocated arguments");
     }
     HArgumentsObject* object = new(zone()) HArgumentsObject;
     AddInstruction(object);
@@ -2314,7 +2335,8 @@
 
 void HGraphBuilder::VisitStatements(ZoneList<Statement*>* statements) {
   for (int i = 0; i < statements->length(); i++) {
-    CHECK_ALIVE(Visit(statements->at(i)));
+    Visit(statements->at(i));
+    if (HasStackOverflow() || current_block() == NULL) break;
   }
 }
 
@@ -2336,12 +2358,10 @@
 
 
 void HGraphBuilder::VisitBlock(Block* stmt) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   BreakAndContinueInfo break_info(stmt);
   { BreakAndContinueScope push(&break_info, this);
-    CHECK_BAILOUT(VisitStatements(stmt->statements()));
+    VisitStatements(stmt->statements());
+    CHECK_BAILOUT;
   }
   HBasicBlock* break_block = break_info.break_block();
   if (break_block != NULL) {
@@ -2353,24 +2373,15 @@
 
 
 void HGraphBuilder::VisitExpressionStatement(ExpressionStatement* stmt) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   VisitForEffect(stmt->expression());
 }
 
 
 void HGraphBuilder::VisitEmptyStatement(EmptyStatement* stmt) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
 }
 
 
 void HGraphBuilder::VisitIfStatement(IfStatement* stmt) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   if (stmt->condition()->ToBooleanIsTrue()) {
     AddSimulate(stmt->ThenId());
     Visit(stmt->then_statement());
@@ -2380,27 +2391,20 @@
   } else {
     HBasicBlock* cond_true = graph()->CreateBasicBlock();
     HBasicBlock* cond_false = graph()->CreateBasicBlock();
-    CHECK_BAILOUT(VisitForControl(stmt->condition(), cond_true, cond_false));
+    VISIT_FOR_CONTROL(stmt->condition(), cond_true, cond_false);
+    cond_true->SetJoinId(stmt->ThenId());
+    cond_false->SetJoinId(stmt->ElseId());
 
-    if (cond_true->HasPredecessor()) {
-      cond_true->SetJoinId(stmt->ThenId());
-      set_current_block(cond_true);
-      CHECK_BAILOUT(Visit(stmt->then_statement()));
-      cond_true = current_block();
-    } else {
-      cond_true = NULL;
-    }
+    set_current_block(cond_true);
+    Visit(stmt->then_statement());
+    CHECK_BAILOUT;
+    HBasicBlock* other = current_block();
 
-    if (cond_false->HasPredecessor()) {
-      cond_false->SetJoinId(stmt->ElseId());
-      set_current_block(cond_false);
-      CHECK_BAILOUT(Visit(stmt->else_statement()));
-      cond_false = current_block();
-    } else {
-      cond_false = NULL;
-    }
+    set_current_block(cond_false);
+    Visit(stmt->else_statement());
+    CHECK_BAILOUT;
 
-    HBasicBlock* join = CreateJoin(cond_true, cond_false, stmt->id());
+    HBasicBlock* join = CreateJoin(other, current_block(), stmt->id());
     set_current_block(join);
   }
 }
@@ -2438,9 +2442,6 @@
 
 
 void HGraphBuilder::VisitContinueStatement(ContinueStatement* stmt) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   HBasicBlock* continue_block = break_scope()->Get(stmt->target(), CONTINUE);
   current_block()->Goto(continue_block);
   set_current_block(NULL);
@@ -2448,9 +2449,6 @@
 
 
 void HGraphBuilder::VisitBreakStatement(BreakStatement* stmt) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   HBasicBlock* break_block = break_scope()->Get(stmt->target(), BREAK);
   current_block()->Goto(break_block);
   set_current_block(NULL);
@@ -2458,13 +2456,10 @@
 
 
 void HGraphBuilder::VisitReturnStatement(ReturnStatement* stmt) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   AstContext* context = call_context();
   if (context == NULL) {
     // Not an inlined return, so an actual one.
-    CHECK_ALIVE(VisitForValue(stmt->expression()));
+    VISIT_FOR_VALUE(stmt->expression());
     HValue* result = environment()->Pop();
     current_block()->FinishExit(new(zone()) HReturn(result));
     set_current_block(NULL);
@@ -2477,11 +2472,11 @@
                       test->if_true(),
                       test->if_false());
     } else if (context->IsEffect()) {
-      CHECK_ALIVE(VisitForEffect(stmt->expression()));
+      VISIT_FOR_EFFECT(stmt->expression());
       current_block()->Goto(function_return(), false);
     } else {
       ASSERT(context->IsValue());
-      CHECK_ALIVE(VisitForValue(stmt->expression()));
+      VISIT_FOR_VALUE(stmt->expression());
       HValue* return_value = environment()->Pop();
       current_block()->AddLeaveInlined(return_value, function_return());
     }
@@ -2491,35 +2486,26 @@
 
 
 void HGraphBuilder::VisitWithEnterStatement(WithEnterStatement* stmt) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
-  return Bailout("WithEnterStatement");
+  BAILOUT("WithEnterStatement");
 }
 
 
 void HGraphBuilder::VisitWithExitStatement(WithExitStatement* stmt) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
-  return Bailout("WithExitStatement");
+  BAILOUT("WithExitStatement");
 }
 
 
 void HGraphBuilder::VisitSwitchStatement(SwitchStatement* stmt) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   // We only optimize switch statements with smi-literal smi comparisons,
   // with a bounded number of clauses.
   const int kCaseClauseLimit = 128;
   ZoneList<CaseClause*>* clauses = stmt->cases();
   int clause_count = clauses->length();
   if (clause_count > kCaseClauseLimit) {
-    return Bailout("SwitchStatement: too many clauses");
+    BAILOUT("SwitchStatement: too many clauses");
   }
 
-  CHECK_ALIVE(VisitForValue(stmt->tag()));
+  VISIT_FOR_VALUE(stmt->tag());
   AddSimulate(stmt->EntryId());
   HValue* tag_value = Pop();
   HBasicBlock* first_test_block = current_block();
@@ -2530,7 +2516,7 @@
     CaseClause* clause = clauses->at(i);
     if (clause->is_default()) continue;
     if (!clause->label()->IsSmiLiteral()) {
-      return Bailout("SwitchStatement: non-literal switch label");
+      BAILOUT("SwitchStatement: non-literal switch label");
     }
 
     // Unconditionally deoptimize on the first non-smi compare.
@@ -2542,7 +2528,7 @@
     }
 
     // Otherwise generate a compare and branch.
-    CHECK_ALIVE(VisitForValue(clause->label()));
+    VISIT_FOR_VALUE(clause->label());
     HValue* label_value = Pop();
     HCompare* compare =
         new(zone()) HCompare(tag_value, label_value, Token::EQ_STRICT);
@@ -2572,9 +2558,11 @@
       // Identify the block where normal (non-fall-through) control flow
       // goes to.
       HBasicBlock* normal_block = NULL;
-      if (clause->is_default() && last_block != NULL) {
-        normal_block = last_block;
-        last_block = NULL;  // Cleared to indicate we've handled it.
+      if (clause->is_default()) {
+        if (last_block != NULL) {
+          normal_block = last_block;
+          last_block = NULL;  // Cleared to indicate we've handled it.
+        }
       } else if (!curr_test_block->end()->IsDeoptimize()) {
         normal_block = curr_test_block->end()->FirstSuccessor();
         curr_test_block = curr_test_block->end()->SecondSuccessor();
@@ -2604,7 +2592,8 @@
         set_current_block(join);
       }
 
-      CHECK_BAILOUT(VisitStatements(clause->statements()));
+      VisitStatements(clause->statements());
+      CHECK_BAILOUT;
       fall_through_block = current_block();
     }
   }
@@ -2664,9 +2653,6 @@
 
 
 void HGraphBuilder::VisitDoWhileStatement(DoWhileStatement* stmt) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   ASSERT(current_block() != NULL);
   PreProcessOsrEntry(stmt);
   HBasicBlock* loop_entry = CreateLoopHeaderBlock();
@@ -2675,7 +2661,8 @@
 
   BreakAndContinueInfo break_info(stmt);
   { BreakAndContinueScope push(&break_info, this);
-    CHECK_BAILOUT(Visit(stmt->body()));
+    Visit(stmt->body());
+    CHECK_BAILOUT;
   }
   HBasicBlock* body_exit =
       JoinContinue(stmt, current_block(), break_info.continue_block());
@@ -2686,17 +2673,9 @@
     // back edge.
     body_exit = graph()->CreateBasicBlock();
     loop_successor = graph()->CreateBasicBlock();
-    CHECK_BAILOUT(VisitForControl(stmt->cond(), body_exit, loop_successor));
-    if (body_exit->HasPredecessor()) {
-      body_exit->SetJoinId(stmt->BackEdgeId());
-    } else {
-      body_exit = NULL;
-    }
-    if (loop_successor->HasPredecessor()) {
-      loop_successor->SetJoinId(stmt->ExitId());
-    } else {
-      loop_successor = NULL;
-    }
+    VISIT_FOR_CONTROL(stmt->cond(), body_exit, loop_successor);
+    body_exit->SetJoinId(stmt->BackEdgeId());
+    loop_successor->SetJoinId(stmt->ExitId());
   }
   HBasicBlock* loop_exit = CreateLoop(stmt,
                                       loop_entry,
@@ -2708,9 +2687,6 @@
 
 
 void HGraphBuilder::VisitWhileStatement(WhileStatement* stmt) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   ASSERT(current_block() != NULL);
   PreProcessOsrEntry(stmt);
   HBasicBlock* loop_entry = CreateLoopHeaderBlock();
@@ -2722,22 +2698,16 @@
   if (!stmt->cond()->ToBooleanIsTrue()) {
     HBasicBlock* body_entry = graph()->CreateBasicBlock();
     loop_successor = graph()->CreateBasicBlock();
-    CHECK_BAILOUT(VisitForControl(stmt->cond(), body_entry, loop_successor));
-    if (body_entry->HasPredecessor()) {
-      body_entry->SetJoinId(stmt->BodyId());
-      set_current_block(body_entry);
-    }
-    if (loop_successor->HasPredecessor()) {
-      loop_successor->SetJoinId(stmt->ExitId());
-    } else {
-      loop_successor = NULL;
-    }
+    VISIT_FOR_CONTROL(stmt->cond(), body_entry, loop_successor);
+    body_entry->SetJoinId(stmt->BodyId());
+    loop_successor->SetJoinId(stmt->ExitId());
+    set_current_block(body_entry);
   }
 
   BreakAndContinueInfo break_info(stmt);
-  if (current_block() != NULL) {
-    BreakAndContinueScope push(&break_info, this);
-    CHECK_BAILOUT(Visit(stmt->body()));
+  { BreakAndContinueScope push(&break_info, this);
+    Visit(stmt->body());
+    CHECK_BAILOUT;
   }
   HBasicBlock* body_exit =
       JoinContinue(stmt, current_block(), break_info.continue_block());
@@ -2751,11 +2721,9 @@
 
 
 void HGraphBuilder::VisitForStatement(ForStatement* stmt) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   if (stmt->init() != NULL) {
-    CHECK_ALIVE(Visit(stmt->init()));
+    Visit(stmt->init());
+    CHECK_BAILOUT;
   }
   ASSERT(current_block() != NULL);
   PreProcessOsrEntry(stmt);
@@ -2767,29 +2735,24 @@
   if (stmt->cond() != NULL) {
     HBasicBlock* body_entry = graph()->CreateBasicBlock();
     loop_successor = graph()->CreateBasicBlock();
-    CHECK_BAILOUT(VisitForControl(stmt->cond(), body_entry, loop_successor));
-    if (body_entry->HasPredecessor()) {
-      body_entry->SetJoinId(stmt->BodyId());
-      set_current_block(body_entry);
-    }
-    if (loop_successor->HasPredecessor()) {
-      loop_successor->SetJoinId(stmt->ExitId());
-    } else {
-      loop_successor = NULL;
-    }
+    VISIT_FOR_CONTROL(stmt->cond(), body_entry, loop_successor);
+    body_entry->SetJoinId(stmt->BodyId());
+    loop_successor->SetJoinId(stmt->ExitId());
+    set_current_block(body_entry);
   }
 
   BreakAndContinueInfo break_info(stmt);
-  if (current_block() != NULL) {
-    BreakAndContinueScope push(&break_info, this);
-    CHECK_BAILOUT(Visit(stmt->body()));
+  { BreakAndContinueScope push(&break_info, this);
+    Visit(stmt->body());
+    CHECK_BAILOUT;
   }
   HBasicBlock* body_exit =
       JoinContinue(stmt, current_block(), break_info.continue_block());
 
   if (stmt->next() != NULL && body_exit != NULL) {
     set_current_block(body_exit);
-    CHECK_BAILOUT(Visit(stmt->next()));
+    Visit(stmt->next());
+    CHECK_BAILOUT;
     body_exit = current_block();
   }
 
@@ -2803,34 +2766,22 @@
 
 
 void HGraphBuilder::VisitForInStatement(ForInStatement* stmt) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
-  return Bailout("ForInStatement");
+  BAILOUT("ForInStatement");
 }
 
 
 void HGraphBuilder::VisitTryCatchStatement(TryCatchStatement* stmt) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
-  return Bailout("TryCatchStatement");
+  BAILOUT("TryCatchStatement");
 }
 
 
 void HGraphBuilder::VisitTryFinallyStatement(TryFinallyStatement* stmt) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
-  return Bailout("TryFinallyStatement");
+  BAILOUT("TryFinallyStatement");
 }
 
 
 void HGraphBuilder::VisitDebuggerStatement(DebuggerStatement* stmt) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
-  return Bailout("DebuggerStatement");
+  BAILOUT("DebuggerStatement");
 }
 
 
@@ -2855,17 +2806,13 @@
 
 
 void HGraphBuilder::VisitFunctionLiteral(FunctionLiteral* expr) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   Handle<SharedFunctionInfo> shared_info =
       SearchSharedFunctionInfo(info()->shared_info()->code(),
                                expr);
   if (shared_info.is_null()) {
     shared_info = Compiler::BuildFunctionInfo(expr, info()->script());
   }
-  // We also have a stack overflow if the recursive compilation did.
-  if (HasStackOverflow()) return;
+  CHECK_BAILOUT;
   HFunctionLiteral* instr =
       new(zone()) HFunctionLiteral(shared_info, expr->pretenure());
   ast_context()->ReturnInstruction(instr, expr->id());
@@ -2874,47 +2821,32 @@
 
 void HGraphBuilder::VisitSharedFunctionInfoLiteral(
     SharedFunctionInfoLiteral* expr) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
-  return Bailout("SharedFunctionInfoLiteral");
+  BAILOUT("SharedFunctionInfoLiteral");
 }
 
 
 void HGraphBuilder::VisitConditional(Conditional* expr) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   HBasicBlock* cond_true = graph()->CreateBasicBlock();
   HBasicBlock* cond_false = graph()->CreateBasicBlock();
-  CHECK_BAILOUT(VisitForControl(expr->condition(), cond_true, cond_false));
+  VISIT_FOR_CONTROL(expr->condition(), cond_true, cond_false);
+  cond_true->SetJoinId(expr->ThenId());
+  cond_false->SetJoinId(expr->ElseId());
 
   // Visit the true and false subexpressions in the same AST context as the
   // whole expression.
-  if (cond_true->HasPredecessor()) {
-    cond_true->SetJoinId(expr->ThenId());
-    set_current_block(cond_true);
-    CHECK_BAILOUT(Visit(expr->then_expression()));
-    cond_true = current_block();
-  } else {
-    cond_true = NULL;
-  }
+  set_current_block(cond_true);
+  Visit(expr->then_expression());
+  CHECK_BAILOUT;
+  HBasicBlock* other = current_block();
 
-  if (cond_false->HasPredecessor()) {
-    cond_false->SetJoinId(expr->ElseId());
-    set_current_block(cond_false);
-    CHECK_BAILOUT(Visit(expr->else_expression()));
-    cond_false = current_block();
-  } else {
-    cond_false = NULL;
-  }
+  set_current_block(cond_false);
+  Visit(expr->else_expression());
+  CHECK_BAILOUT;
 
   if (!ast_context()->IsTest()) {
-    HBasicBlock* join = CreateJoin(cond_true, cond_false, expr->id());
+    HBasicBlock* join = CreateJoin(other, current_block(), expr->id());
     set_current_block(join);
-    if (join != NULL && !ast_context()->IsEffect()) {
-      ast_context()->ReturnValue(Pop());
-    }
+    if (!ast_context()->IsEffect()) ast_context()->ReturnValue(Pop());
   }
 }
 
@@ -2951,20 +2883,17 @@
 
 
 void HGraphBuilder::VisitVariableProxy(VariableProxy* expr) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   Variable* variable = expr->AsVariable();
   if (variable == NULL) {
-    return Bailout("reference to rewritten variable");
+    BAILOUT("reference to rewritten variable");
   } else if (variable->IsStackAllocated()) {
     if (environment()->Lookup(variable)->CheckFlag(HValue::kIsArguments)) {
-      return Bailout("unsupported context for arguments object");
+      BAILOUT("unsupported context for arguments object");
     }
     ast_context()->ReturnValue(environment()->Lookup(variable));
   } else if (variable->IsContextSlot()) {
     if (variable->mode() == Variable::CONST) {
-      return Bailout("reference to const context slot");
+      BAILOUT("reference to const context slot");
     }
     HValue* context = BuildContextChainWalk(variable);
     int index = variable->AsSlot()->index();
@@ -3000,15 +2929,12 @@
       ast_context()->ReturnInstruction(instr, expr->id());
     }
   } else {
-    return Bailout("reference to a variable which requires dynamic lookup");
+    BAILOUT("reference to a variable which requires dynamic lookup");
   }
 }
 
 
 void HGraphBuilder::VisitLiteral(Literal* expr) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   HConstant* instr =
       new(zone()) HConstant(expr->handle(), Representation::Tagged());
   ast_context()->ReturnInstruction(instr, expr->id());
@@ -3016,9 +2942,6 @@
 
 
 void HGraphBuilder::VisitRegExpLiteral(RegExpLiteral* expr) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   HRegExpLiteral* instr = new(zone()) HRegExpLiteral(expr->pattern(),
                                                      expr->flags(),
                                                      expr->literal_index());
@@ -3027,9 +2950,6 @@
 
 
 void HGraphBuilder::VisitObjectLiteral(ObjectLiteral* expr) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   HContext* context = new(zone()) HContext;
   AddInstruction(context);
   HObjectLiteral* literal =
@@ -3059,7 +2979,7 @@
       case ObjectLiteral::Property::COMPUTED:
         if (key->handle()->IsSymbol()) {
           if (property->emit_store()) {
-            CHECK_ALIVE(VisitForValue(value));
+            VISIT_FOR_VALUE(value);
             HValue* value = Pop();
             Handle<String> name = Handle<String>::cast(key->handle());
             HStoreNamedGeneric* store =
@@ -3072,7 +2992,7 @@
             AddInstruction(store);
             AddSimulate(key->id());
           } else {
-            CHECK_ALIVE(VisitForEffect(value));
+            VISIT_FOR_EFFECT(value);
           }
           break;
         }
@@ -3080,7 +3000,7 @@
       case ObjectLiteral::Property::PROTOTYPE:
       case ObjectLiteral::Property::SETTER:
       case ObjectLiteral::Property::GETTER:
-        return Bailout("Object literal with complex property");
+        BAILOUT("Object literal with complex property");
       default: UNREACHABLE();
     }
   }
@@ -3101,9 +3021,6 @@
 
 
 void HGraphBuilder::VisitArrayLiteral(ArrayLiteral* expr) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   ZoneList<Expression*>* subexprs = expr->values();
   int length = subexprs->length();
 
@@ -3123,9 +3040,9 @@
     // is already set in the cloned array.
     if (CompileTimeValue::IsCompileTimeValue(subexpr)) continue;
 
-    CHECK_ALIVE(VisitForValue(subexpr));
+    VISIT_FOR_VALUE(subexpr);
     HValue* value = Pop();
-    if (!Smi::IsValid(i)) return Bailout("Non-smi key in array literal");
+    if (!Smi::IsValid(i)) BAILOUT("Non-smi key in array literal");
 
     // Load the elements array before the first store.
     if (elements == NULL)  {
@@ -3144,10 +3061,7 @@
 
 
 void HGraphBuilder::VisitCatchExtensionObject(CatchExtensionObject* expr) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
-  return Bailout("CatchExtensionObject");
+  BAILOUT("CatchExtensionObject");
 }
 
 
@@ -3326,14 +3240,14 @@
   Property* prop = expr->target()->AsProperty();
   ASSERT(prop != NULL);
   expr->RecordTypeFeedback(oracle());
-  CHECK_ALIVE(VisitForValue(prop->obj()));
+  VISIT_FOR_VALUE(prop->obj());
 
   HValue* value = NULL;
   HInstruction* instr = NULL;
 
   if (prop->key()->IsPropertyName()) {
     // Named store.
-    CHECK_ALIVE(VisitForValue(expr->value()));
+    VISIT_FOR_VALUE(expr->value());
     value = Pop();
     HValue* object = Pop();
 
@@ -3357,8 +3271,8 @@
 
   } else {
     // Keyed store.
-    CHECK_ALIVE(VisitForValue(prop->key()));
-    CHECK_ALIVE(VisitForValue(expr->value()));
+    VISIT_FOR_VALUE(prop->key());
+    VISIT_FOR_VALUE(expr->value());
     value = Pop();
     HValue* key = Pop();
     HValue* object = Pop();
@@ -3420,7 +3334,7 @@
   BinaryOperation* operation = expr->binary_operation();
 
   if (var != NULL) {
-    CHECK_ALIVE(VisitForValue(operation));
+    VISIT_FOR_VALUE(operation);
 
     if (var->is_global()) {
       HandleGlobalVariableAssignment(var,
@@ -3437,7 +3351,7 @@
       AddInstruction(instr);
       if (instr->HasSideEffects()) AddSimulate(expr->AssignmentId());
     } else {
-      return Bailout("compound assignment to lookup slot");
+      BAILOUT("compound assignment to lookup slot");
     }
     ast_context()->ReturnValue(Pop());
 
@@ -3446,7 +3360,7 @@
 
     if (prop->key()->IsPropertyName()) {
       // Named property.
-      CHECK_ALIVE(VisitForValue(prop->obj()));
+      VISIT_FOR_VALUE(prop->obj());
       HValue* obj = Top();
 
       HInstruction* load = NULL;
@@ -3460,7 +3374,7 @@
       PushAndAdd(load);
       if (load->HasSideEffects()) AddSimulate(expr->CompoundLoadId());
 
-      CHECK_ALIVE(VisitForValue(expr->value()));
+      VISIT_FOR_VALUE(expr->value());
       HValue* right = Pop();
       HValue* left = Pop();
 
@@ -3478,8 +3392,8 @@
 
     } else {
       // Keyed property.
-      CHECK_ALIVE(VisitForValue(prop->obj()));
-      CHECK_ALIVE(VisitForValue(prop->key()));
+      VISIT_FOR_VALUE(prop->obj());
+      VISIT_FOR_VALUE(prop->key());
       HValue* obj = environment()->ExpressionStackAt(1);
       HValue* key = environment()->ExpressionStackAt(0);
 
@@ -3487,7 +3401,7 @@
       PushAndAdd(load);
       if (load->HasSideEffects()) AddSimulate(expr->CompoundLoadId());
 
-      CHECK_ALIVE(VisitForValue(expr->value()));
+      VISIT_FOR_VALUE(expr->value());
       HValue* right = Pop();
       HValue* left = Pop();
 
@@ -3506,15 +3420,12 @@
     }
 
   } else {
-    return Bailout("invalid lhs in compound assignment");
+    BAILOUT("invalid lhs in compound assignment");
   }
 }
 
 
 void HGraphBuilder::VisitAssignment(Assignment* expr) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   VariableProxy* proxy = expr->target()->AsVariableProxy();
   Variable* var = proxy->AsVariable();
   Property* prop = expr->target()->AsProperty();
@@ -3526,7 +3437,7 @@
   }
 
   if (var != NULL) {
-    if (proxy->IsArguments()) return Bailout("assignment to arguments");
+    if (proxy->IsArguments()) BAILOUT("assignment to arguments");
 
     // Handle the assignment.
     if (var->IsStackAllocated()) {
@@ -3540,14 +3451,14 @@
       if (rhs_var != NULL && rhs_var->IsStackAllocated()) {
         value = environment()->Lookup(rhs_var);
       } else {
-        CHECK_ALIVE(VisitForValue(expr->value()));
+        VISIT_FOR_VALUE(expr->value());
         value = Pop();
       }
       Bind(var, value);
       ast_context()->ReturnValue(value);
 
     } else if (var->IsContextSlot() && var->mode() != Variable::CONST) {
-      CHECK_ALIVE(VisitForValue(expr->value()));
+      VISIT_FOR_VALUE(expr->value());
       HValue* context = BuildContextChainWalk(var);
       int index = var->AsSlot()->index();
       HStoreContextSlot* instr =
@@ -3557,7 +3468,7 @@
       ast_context()->ReturnValue(Pop());
 
     } else if (var->is_global()) {
-      CHECK_ALIVE(VisitForValue(expr->value()));
+      VISIT_FOR_VALUE(expr->value());
       HandleGlobalVariableAssignment(var,
                                      Top(),
                                      expr->position(),
@@ -3565,26 +3476,23 @@
       ast_context()->ReturnValue(Pop());
 
     } else {
-      return Bailout("assignment to LOOKUP or const CONTEXT variable");
+      BAILOUT("assignment to LOOKUP or const CONTEXT variable");
     }
 
   } else if (prop != NULL) {
     HandlePropertyAssignment(expr);
   } else {
-    return Bailout("invalid left-hand side in assignment");
+    BAILOUT("invalid left-hand side in assignment");
   }
 }
 
 
 void HGraphBuilder::VisitThrow(Throw* expr) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   // We don't optimize functions with invalid left-hand sides in
   // assignments, count operations, or for-in.  Consequently throw can
   // currently only occur in an effect context.
   ASSERT(ast_context()->IsEffect());
-  CHECK_ALIVE(VisitForValue(expr->exception()));
+  VISIT_FOR_VALUE(expr->exception());
 
   HValue* value = environment()->Pop();
   HThrow* instr = new(zone()) HThrow(value);
@@ -3832,7 +3740,7 @@
   } else {
     Push(graph()->GetArgumentsObject());
     VisitForValue(expr->key());
-    if (HasStackOverflow() || current_block() == NULL) return true;
+    if (HasStackOverflow()) return false;
     HValue* key = Pop();
     Drop(1);  // Arguments object.
     HInstruction* elements = AddInstruction(new(zone()) HArgumentsElements);
@@ -3847,14 +3755,12 @@
 
 
 void HGraphBuilder::VisitProperty(Property* expr) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   expr->RecordTypeFeedback(oracle());
 
   if (TryArgumentsAccess(expr)) return;
+  CHECK_BAILOUT;
 
-  CHECK_ALIVE(VisitForValue(expr->obj()));
+  VISIT_FOR_VALUE(expr->obj());
 
   HInstruction* instr = NULL;
   if (expr->IsArrayLength()) {
@@ -3873,7 +3779,7 @@
                                                   LAST_STRING_TYPE));
     instr = new(zone()) HStringLength(string);
   } else if (expr->IsStringAccess()) {
-    CHECK_ALIVE(VisitForValue(expr->key()));
+    VISIT_FOR_VALUE(expr->key());
     HValue* index = Pop();
     HValue* string = Pop();
     HStringCharCodeAt* char_code = BuildStringCharCodeAt(string, index);
@@ -3900,7 +3806,7 @@
     }
 
   } else {
-    CHECK_ALIVE(VisitForValue(expr->key()));
+    VISIT_FOR_VALUE(expr->key());
 
     HValue* key = Pop();
     HValue* obj = Pop();
@@ -3961,11 +3867,10 @@
         PrintF("Trying to inline the polymorphic call to %s\n",
                *name->ToCString());
       }
-      if (FLAG_polymorphic_inlining && TryInline(expr)) {
-        // Trying to inline will signal that we should bailout from the
-        // entire compilation by setting stack overflow on the visitor.
-        if (HasStackOverflow()) return;
-      } else {
+      if (!FLAG_polymorphic_inlining || !TryInline(expr)) {
+        // Check for bailout, as trying to inline might fail due to bailout
+        // during hydrogen processing.
+        CHECK_BAILOUT;
         HCallConstantFunction* call =
             new(zone()) HCallConstantFunction(expr->target(), argument_count);
         call->set_position(expr->position());
@@ -4005,12 +3910,10 @@
   // even without predecessors to the join block, we set it as the exit
   // block and continue by adding instructions there.
   ASSERT(join != NULL);
+  set_current_block(join);
   if (join->HasPredecessor()) {
-    set_current_block(join);
     join->SetJoinId(expr->id());
     if (!ast_context()->IsEffect()) ast_context()->ReturnValue(Pop());
-  } else {
-    set_current_block(NULL);
   }
 }
 
@@ -4182,7 +4085,7 @@
     // Bail out if the inline function did, as we cannot residualize a call
     // instead.
     TraceInline(target, "inline graph construction failed");
-    return true;
+    return false;
   }
 
   // Update inlined nodes count.
@@ -4238,11 +4141,9 @@
     // flow to handle.
     set_current_block(NULL);
 
-  } else if (function_return()->HasPredecessor()) {
+  } else {
     function_return()->SetJoinId(expr->id());
     set_current_block(function_return());
-  } else {
-    set_current_block(NULL);
   }
 
   return true;
@@ -4368,10 +4269,10 @@
 
   // Found pattern f.apply(receiver, arguments).
   VisitForValue(prop->obj());
-  if (HasStackOverflow() || current_block() == NULL) return true;
+  if (HasStackOverflow()) return false;
   HValue* function = Pop();
   VisitForValue(args->at(0));
-  if (HasStackOverflow() || current_block() == NULL) return true;
+  if (HasStackOverflow()) return false;
   HValue* receiver = Pop();
   HInstruction* elements = AddInstruction(new(zone()) HArgumentsElements);
   HInstruction* length = AddInstruction(new(zone()) HArgumentsLength(elements));
@@ -4388,9 +4289,6 @@
 
 
 void HGraphBuilder::VisitCall(Call* expr) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   Expression* callee = expr->expression();
   int argument_count = expr->arguments()->length() + 1;  // Plus receiver.
   HInstruction* call = NULL;
@@ -4399,16 +4297,17 @@
   if (prop != NULL) {
     if (!prop->key()->IsPropertyName()) {
       // Keyed function call.
-      CHECK_ALIVE(VisitForValue(prop->obj()));
+      VISIT_FOR_VALUE(prop->obj());
 
-      CHECK_ALIVE(VisitForValue(prop->key()));
+      VISIT_FOR_VALUE(prop->key());
       // Push receiver and key like the non-optimized code generator expects it.
       HValue* key = Pop();
       HValue* receiver = Pop();
       Push(key);
       Push(receiver);
 
-      CHECK_ALIVE(VisitExpressions(expr->arguments()));
+      VisitExpressions(expr->arguments());
+      CHECK_BAILOUT;
 
       HContext* context = new(zone()) HContext;
       AddInstruction(context);
@@ -4424,9 +4323,11 @@
     expr->RecordTypeFeedback(oracle());
 
     if (TryCallApply(expr)) return;
+    CHECK_BAILOUT;
 
-    CHECK_ALIVE(VisitForValue(prop->obj()));
-    CHECK_ALIVE(VisitExpressions(expr->arguments()));
+    VISIT_FOR_VALUE(prop->obj());
+    VisitExpressions(expr->arguments());
+    CHECK_BAILOUT;
 
     Handle<String> name = prop->key()->AsLiteral()->AsPropertyName();
 
@@ -4457,10 +4358,16 @@
       } else {
         AddCheckConstantFunction(expr, receiver, receiver_map, true);
 
-        if (TryInline(expr)) return;
-        call = PreProcessCall(
-            new(zone()) HCallConstantFunction(expr->target(),
-                                              argument_count));
+        if (TryInline(expr)) {
+          return;
+        } else {
+          // Check for bailout, as the TryInline call in the if condition above
+          // might return false due to bailout during hydrogen processing.
+          CHECK_BAILOUT;
+          call = PreProcessCall(
+              new(zone()) HCallConstantFunction(expr->target(),
+                                                argument_count));
+        }
       }
     } else if (types != NULL && types->length() > 1) {
       ASSERT(expr->check_type() == RECEIVER_MAP_CHECK);
@@ -4480,7 +4387,7 @@
 
     if (!global_call) {
       ++argument_count;
-      CHECK_ALIVE(VisitForValue(expr->expression()));
+      VISIT_FOR_VALUE(expr->expression());
     }
 
     if (global_call) {
@@ -4502,9 +4409,10 @@
         HGlobalObject* global_object = new(zone()) HGlobalObject(context);
         AddInstruction(context);
         PushAndAdd(global_object);
-        CHECK_ALIVE(VisitExpressions(expr->arguments()));
+        VisitExpressions(expr->arguments());
+        CHECK_BAILOUT;
 
-        CHECK_ALIVE(VisitForValue(expr->expression()));
+        VISIT_FOR_VALUE(expr->expression());
         HValue* function = Pop();
         AddInstruction(new(zone()) HCheckFunction(function, expr->target()));
 
@@ -4518,14 +4426,21 @@
                IsGlobalObject());
         environment()->SetExpressionStackAt(receiver_index, global_receiver);
 
-        if (TryInline(expr)) return;
+        if (TryInline(expr)) {
+          return;
+        }
+        // Check for bailout, as trying to inline might fail due to bailout
+        // during hydrogen processing.
+        CHECK_BAILOUT;
+
         call = PreProcessCall(new(zone()) HCallKnownGlobal(expr->target(),
-                                                           argument_count));
+                                                   argument_count));
       } else {
         HContext* context = new(zone()) HContext;
         AddInstruction(context);
         PushAndAdd(new(zone()) HGlobalObject(context));
-        CHECK_ALIVE(VisitExpressions(expr->arguments()));
+        VisitExpressions(expr->arguments());
+        CHECK_BAILOUT;
 
         call = PreProcessCall(new(zone()) HCallGlobal(context,
                                               var->name(),
@@ -4538,7 +4453,8 @@
       AddInstruction(context);
       AddInstruction(global_object);
       PushAndAdd(new(zone()) HGlobalReceiver(global_object));
-      CHECK_ALIVE(VisitExpressions(expr->arguments()));
+      VisitExpressions(expr->arguments());
+      CHECK_BAILOUT;
 
       call = PreProcessCall(new(zone()) HCallFunction(context, argument_count));
     }
@@ -4550,13 +4466,11 @@
 
 
 void HGraphBuilder::VisitCallNew(CallNew* expr) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   // The constructor function is also used as the receiver argument to the
   // JS construct call builtin.
-  CHECK_ALIVE(VisitForValue(expr->expression()));
-  CHECK_ALIVE(VisitExpressions(expr->arguments()));
+  VISIT_FOR_VALUE(expr->expression());
+  VisitExpressions(expr->arguments());
+  CHECK_BAILOUT;
 
   HContext* context = new(zone()) HContext;
   AddInstruction(context);
@@ -4588,11 +4502,8 @@
 
 
 void HGraphBuilder::VisitCallRuntime(CallRuntime* expr) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   if (expr->is_jsruntime()) {
-    return Bailout("call to a JavaScript runtime function");
+    BAILOUT("call to a JavaScript runtime function");
   }
 
   const Runtime::Function* function = expr->function();
@@ -4612,7 +4523,8 @@
     (this->*generator)(expr);
   } else {
     ASSERT(function->intrinsic_type == Runtime::RUNTIME);
-    CHECK_ALIVE(VisitArgumentList(expr->arguments()));
+    VisitArgumentList(expr->arguments());
+    CHECK_BAILOUT;
 
     Handle<String> name = expr->name();
     int argument_count = expr->arguments()->length();
@@ -4626,12 +4538,9 @@
 
 
 void HGraphBuilder::VisitUnaryOperation(UnaryOperation* expr) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   Token::Value op = expr->op();
   if (op == Token::VOID) {
-    CHECK_ALIVE(VisitForEffect(expr->expression()));
+    VISIT_FOR_EFFECT(expr->expression());
     ast_context()->ReturnValue(graph()->GetConstantUndefined());
   } else if (op == Token::DELETE) {
     Property* prop = expr->expression()->AsProperty();
@@ -4639,7 +4548,7 @@
     if (prop == NULL && var == NULL) {
       // Result of deleting non-property, non-variable reference is true.
       // Evaluate the subexpression for side effects.
-      CHECK_ALIVE(VisitForEffect(expr->expression()));
+      VISIT_FOR_EFFECT(expr->expression());
       ast_context()->ReturnValue(graph()->GetConstantTrue());
     } else if (var != NULL &&
                !var->is_global() &&
@@ -4654,17 +4563,17 @@
         // to accesses on the arguments object.
         ast_context()->ReturnValue(graph()->GetConstantFalse());
       } else {
-        CHECK_ALIVE(VisitForValue(prop->obj()));
-        CHECK_ALIVE(VisitForValue(prop->key()));
+        VISIT_FOR_VALUE(prop->obj());
+        VISIT_FOR_VALUE(prop->key());
         HValue* key = Pop();
         HValue* obj = Pop();
         HDeleteProperty* instr = new(zone()) HDeleteProperty(obj, key);
         ast_context()->ReturnInstruction(instr, expr->id());
       }
     } else if (var->is_global()) {
-      return Bailout("delete with global variable");
+      BAILOUT("delete with global variable");
     } else {
-      return Bailout("delete with non-global variable");
+      BAILOUT("delete with non-global variable");
     }
   } else if (op == Token::NOT) {
     if (ast_context()->IsTest()) {
@@ -4675,42 +4584,34 @@
     } else if (ast_context()->IsValue()) {
       HBasicBlock* materialize_false = graph()->CreateBasicBlock();
       HBasicBlock* materialize_true = graph()->CreateBasicBlock();
-      CHECK_BAILOUT(VisitForControl(expr->expression(),
-                                    materialize_false,
-                                    materialize_true));
+      VISIT_FOR_CONTROL(expr->expression(),
+                        materialize_false,
+                        materialize_true);
+      materialize_false->SetJoinId(expr->expression()->id());
+      materialize_true->SetJoinId(expr->expression()->id());
 
-      if (materialize_false->HasPredecessor()) {
-        materialize_false->SetJoinId(expr->expression()->id());
-        set_current_block(materialize_false);
-        Push(graph()->GetConstantFalse());
-      } else {
-        materialize_false = NULL;
-      }
-
-      if (materialize_true->HasPredecessor()) {
-        materialize_true->SetJoinId(expr->expression()->id());
-        set_current_block(materialize_true);
-        Push(graph()->GetConstantTrue());
-      } else {
-        materialize_true = NULL;
-      }
+      set_current_block(materialize_false);
+      Push(graph()->GetConstantFalse());
+      set_current_block(materialize_true);
+      Push(graph()->GetConstantTrue());
 
       HBasicBlock* join =
           CreateJoin(materialize_false, materialize_true, expr->id());
       set_current_block(join);
-      if (join != NULL) ast_context()->ReturnValue(Pop());
+      ast_context()->ReturnValue(Pop());
     } else {
       ASSERT(ast_context()->IsEffect());
       VisitForEffect(expr->expression());
     }
 
   } else if (op == Token::TYPEOF) {
-    CHECK_ALIVE(VisitForTypeOf(expr->expression()));
+    VisitForTypeOf(expr->expression());
+    if (HasStackOverflow()) return;
     HValue* value = Pop();
     ast_context()->ReturnInstruction(new(zone()) HTypeof(value), expr->id());
 
   } else {
-    CHECK_ALIVE(VisitForValue(expr->expression()));
+    VISIT_FOR_VALUE(expr->expression());
     HValue* value = Pop();
     HInstruction* instr = NULL;
     switch (op) {
@@ -4724,7 +4625,7 @@
         instr = new(zone()) HMul(value, graph_->GetConstant1());
         break;
       default:
-        return Bailout("Value: unsupported unary operation");
+        BAILOUT("Value: unsupported unary operation");
         break;
     }
     ast_context()->ReturnInstruction(instr, expr->id());
@@ -4743,9 +4644,6 @@
 
 
 void HGraphBuilder::VisitCountOperation(CountOperation* expr) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   Expression* target = expr->expression();
   VariableProxy* proxy = target->AsVariableProxy();
   Variable* var = proxy->AsVariable();
@@ -4754,7 +4652,7 @@
   bool inc = expr->op() == Token::INC;
 
   if (var != NULL) {
-    CHECK_ALIVE(VisitForValue(target));
+    VISIT_FOR_VALUE(target);
 
     // Match the full code generator stack by simulating an extra stack
     // element for postfix operations in a non-effect context.
@@ -4779,7 +4677,7 @@
       AddInstruction(instr);
       if (instr->HasSideEffects()) AddSimulate(expr->AssignmentId());
     } else {
-      return Bailout("lookup variable in count operation");
+      BAILOUT("lookup variable in count operation");
     }
     Drop(has_extra ? 2 : 1);
     ast_context()->ReturnValue(expr->is_postfix() ? before : after);
@@ -4795,7 +4693,7 @@
       bool has_extra = expr->is_postfix() && !ast_context()->IsEffect();
       if (has_extra) Push(graph_->GetConstantUndefined());
 
-      CHECK_ALIVE(VisitForValue(prop->obj()));
+      VISIT_FOR_VALUE(prop->obj());
       HValue* obj = Top();
 
       HInstruction* load = NULL;
@@ -4836,8 +4734,8 @@
       bool has_extra = expr->is_postfix() && !ast_context()->IsEffect();
       if (has_extra) Push(graph_->GetConstantUndefined());
 
-      CHECK_ALIVE(VisitForValue(prop->obj()));
-      CHECK_ALIVE(VisitForValue(prop->key()));
+      VISIT_FOR_VALUE(prop->obj());
+      VISIT_FOR_VALUE(prop->key());
       HValue* obj = environment()->ExpressionStackAt(1);
       HValue* key = environment()->ExpressionStackAt(0);
 
@@ -4868,7 +4766,7 @@
     }
 
   } else {
-    return Bailout("invalid lhs in count operation");
+    BAILOUT("invalid lhs in count operation");
   }
 }
 
@@ -4888,21 +4786,10 @@
 HInstruction* HGraphBuilder::BuildBinaryOperation(BinaryOperation* expr,
                                                   HValue* left,
                                                   HValue* right) {
-  TypeInfo info = oracle()->BinaryType(expr);
   HInstruction* instr = NULL;
   switch (expr->op()) {
     case Token::ADD:
-      if (info.IsString()) {
-        AddInstruction(new(zone()) HCheckNonSmi(left));
-        AddInstruction(new(zone()) HCheckInstanceType(
-            left, FIRST_STRING_TYPE, LAST_STRING_TYPE));
-        AddInstruction(new(zone()) HCheckNonSmi(right));
-        AddInstruction(new(zone()) HCheckInstanceType(
-            right, FIRST_STRING_TYPE, LAST_STRING_TYPE));
-        instr = new(zone()) HStringAdd(left, right);
-      } else {
-        instr = new(zone()) HAdd(left, right);
-      }
+      instr = new(zone()) HAdd(left, right);
       break;
     case Token::SUB:
       instr = new(zone()) HSub(left, right);
@@ -4937,6 +4824,7 @@
     default:
       UNREACHABLE();
   }
+  TypeInfo info = oracle()->BinaryType(expr);
   // If we hit an uninitialized binary op stub we will get type info
   // for a smi operation. If one of the operands is a constant string
   // do not generate code assuming it is a smi operation.
@@ -4973,11 +4861,8 @@
 
 
 void HGraphBuilder::VisitBinaryOperation(BinaryOperation* expr) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   if (expr->op() == Token::COMMA) {
-    CHECK_ALIVE(VisitForEffect(expr->left()));
+    VISIT_FOR_EFFECT(expr->left());
     // Visit the right subexpression in the same AST context as the entire
     // expression.
     Visit(expr->right());
@@ -4989,25 +4874,19 @@
       // Translate left subexpression.
       HBasicBlock* eval_right = graph()->CreateBasicBlock();
       if (is_logical_and) {
-        CHECK_BAILOUT(VisitForControl(expr->left(),
-                                      eval_right,
-                                      context->if_false()));
+        VISIT_FOR_CONTROL(expr->left(), eval_right, context->if_false());
       } else {
-        CHECK_BAILOUT(VisitForControl(expr->left(),
-                                      context->if_true(),
-                                      eval_right));
+        VISIT_FOR_CONTROL(expr->left(), context->if_true(), eval_right);
       }
+      eval_right->SetJoinId(expr->RightId());
 
       // Translate right subexpression by visiting it in the same AST
       // context as the entire expression.
-      if (eval_right->HasPredecessor()) {
-        eval_right->SetJoinId(expr->RightId());
-        set_current_block(eval_right);
-        Visit(expr->right());
-      }
+      set_current_block(eval_right);
+      Visit(expr->right());
 
     } else if (ast_context()->IsValue()) {
-      CHECK_ALIVE(VisitForValue(expr->left()));
+      VISIT_FOR_VALUE(expr->left());
       ASSERT(current_block() != NULL);
 
       // We need an extra block to maintain edge-split form.
@@ -5020,7 +4899,7 @@
 
       set_current_block(eval_right);
       Drop(1);  // Value of the left subexpression.
-      CHECK_BAILOUT(VisitForValue(expr->right()));
+      VISIT_FOR_VALUE(expr->right());
 
       HBasicBlock* join_block =
           CreateJoin(empty_block, current_block(), expr->id());
@@ -5034,42 +4913,33 @@
       // extra block to maintain edge-split form.
       HBasicBlock* empty_block = graph()->CreateBasicBlock();
       HBasicBlock* right_block = graph()->CreateBasicBlock();
+      HBasicBlock* join_block = graph()->CreateBasicBlock();
       if (is_logical_and) {
-        CHECK_BAILOUT(VisitForControl(expr->left(), right_block, empty_block));
+        VISIT_FOR_CONTROL(expr->left(), right_block, empty_block);
       } else {
-        CHECK_BAILOUT(VisitForControl(expr->left(), empty_block, right_block));
+        VISIT_FOR_CONTROL(expr->left(), empty_block, right_block);
       }
-
       // TODO(kmillikin): Find a way to fix this.  It's ugly that there are
       // actually two empty blocks (one here and one inserted by
       // TestContext::BuildBranch, and that they both have an HSimulate
       // though the second one is not a merge node, and that we really have
       // no good AST ID to put on that first HSimulate.
-      if (empty_block->HasPredecessor()) {
-        empty_block->SetJoinId(expr->id());
-      } else {
-        empty_block = NULL;
-      }
+      empty_block->SetJoinId(expr->id());
+      right_block->SetJoinId(expr->RightId());
+      set_current_block(right_block);
+      VISIT_FOR_EFFECT(expr->right());
 
-      if (right_block->HasPredecessor()) {
-        right_block->SetJoinId(expr->RightId());
-        set_current_block(right_block);
-        CHECK_BAILOUT(VisitForEffect(expr->right()));
-        right_block = current_block();
-      } else {
-        right_block = NULL;
-      }
-
-      HBasicBlock* join_block =
-          CreateJoin(empty_block, right_block, expr->id());
+      empty_block->Goto(join_block);
+      current_block()->Goto(join_block);
+      join_block->SetJoinId(expr->id());
       set_current_block(join_block);
       // We did not materialize any value in the predecessor environments,
       // so there is no need to handle it here.
     }
 
   } else {
-    CHECK_ALIVE(VisitForValue(expr->left()));
-    CHECK_ALIVE(VisitForValue(expr->right()));
+    VISIT_FOR_VALUE(expr->left());
+    VISIT_FOR_VALUE(expr->right());
 
     HValue* right = Pop();
     HValue* left = Pop();
@@ -5108,12 +4978,9 @@
 
 
 void HGraphBuilder::VisitCompareOperation(CompareOperation* expr) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
   if (IsClassOfTest(expr)) {
     CallRuntime* call = expr->left()->AsCallRuntime();
-    CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
+    VISIT_FOR_VALUE(call->arguments()->at(0));
     HValue* value = Pop();
     Literal* literal = expr->right()->AsLiteral();
     Handle<String> rhs = Handle<String>::cast(literal->handle());
@@ -5129,7 +4996,8 @@
   if ((expr->op() == Token::EQ || expr->op() == Token::EQ_STRICT) &&
       left_unary != NULL && left_unary->op() == Token::TYPEOF &&
       right_literal != NULL && right_literal->handle()->IsString()) {
-    CHECK_ALIVE(VisitForTypeOf(left_unary->expression()));
+    VisitForTypeOf(left_unary->expression());
+    if (HasStackOverflow()) return;
     HValue* left = Pop();
     HInstruction* instr = new(zone()) HTypeofIs(left,
         Handle<String>::cast(right_literal->handle()));
@@ -5138,8 +5006,8 @@
     return;
   }
 
-  CHECK_ALIVE(VisitForValue(expr->left()));
-  CHECK_ALIVE(VisitForValue(expr->right()));
+  VISIT_FOR_VALUE(expr->left());
+  VISIT_FOR_VALUE(expr->right());
 
   HValue* right = Pop();
   HValue* left = Pop();
@@ -5184,7 +5052,7 @@
       instr = new(zone()) HInstanceOfKnownGlobal(left, target);
     }
   } else if (op == Token::IN) {
-    return Bailout("Unsupported comparison: in");
+    BAILOUT("Unsupported comparison: in");
   } else if (type_info.IsNonPrimitive()) {
     switch (op) {
       case Token::EQ:
@@ -5197,7 +5065,7 @@
         break;
       }
       default:
-        return Bailout("Unsupported non-primitive compare");
+        BAILOUT("Unsupported non-primitive compare");
         break;
     }
   } else {
@@ -5212,10 +5080,7 @@
 
 
 void HGraphBuilder::VisitCompareToNull(CompareToNull* expr) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
-  CHECK_ALIVE(VisitForValue(expr->expression()));
+  VISIT_FOR_VALUE(expr->expression());
 
   HValue* value = Pop();
   HIsNull* compare = new(zone()) HIsNull(value, expr->is_strict());
@@ -5224,10 +5089,7 @@
 
 
 void HGraphBuilder::VisitThisFunction(ThisFunction* expr) {
-  ASSERT(!HasStackOverflow());
-  ASSERT(current_block() != NULL);
-  ASSERT(current_block()->HasPredecessor());
-  return Bailout("ThisFunction");
+  BAILOUT("ThisFunction");
 }
 
 
@@ -5242,7 +5104,7 @@
       (slot != NULL && slot->type() == Slot::LOOKUP) ||
       decl->mode() == Variable::CONST ||
       decl->fun() != NULL) {
-    return Bailout("unsupported declaration");
+    BAILOUT("unsupported declaration");
   }
 }
 
@@ -5251,7 +5113,7 @@
 // Support for types.
 void HGraphBuilder::GenerateIsSmi(CallRuntime* call) {
   ASSERT(call->arguments()->length() == 1);
-  CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
+  VISIT_FOR_VALUE(call->arguments()->at(0));
   HValue* value = Pop();
   HIsSmi* result = new(zone()) HIsSmi(value);
   ast_context()->ReturnInstruction(result, call->id());
@@ -5260,7 +5122,7 @@
 
 void HGraphBuilder::GenerateIsSpecObject(CallRuntime* call) {
   ASSERT(call->arguments()->length() == 1);
-  CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
+  VISIT_FOR_VALUE(call->arguments()->at(0));
   HValue* value = Pop();
   HHasInstanceType* result =
       new(zone()) HHasInstanceType(value, FIRST_JS_OBJECT_TYPE, LAST_TYPE);
@@ -5270,7 +5132,7 @@
 
 void HGraphBuilder::GenerateIsFunction(CallRuntime* call) {
   ASSERT(call->arguments()->length() == 1);
-  CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
+  VISIT_FOR_VALUE(call->arguments()->at(0));
   HValue* value = Pop();
   HHasInstanceType* result =
       new(zone()) HHasInstanceType(value, JS_FUNCTION_TYPE);
@@ -5280,7 +5142,7 @@
 
 void HGraphBuilder::GenerateHasCachedArrayIndex(CallRuntime* call) {
   ASSERT(call->arguments()->length() == 1);
-  CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
+  VISIT_FOR_VALUE(call->arguments()->at(0));
   HValue* value = Pop();
   HHasCachedArrayIndex* result = new(zone()) HHasCachedArrayIndex(value);
   ast_context()->ReturnInstruction(result, call->id());
@@ -5289,7 +5151,7 @@
 
 void HGraphBuilder::GenerateIsArray(CallRuntime* call) {
   ASSERT(call->arguments()->length() == 1);
-  CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
+  VISIT_FOR_VALUE(call->arguments()->at(0));
   HValue* value = Pop();
   HHasInstanceType* result = new(zone()) HHasInstanceType(value, JS_ARRAY_TYPE);
   ast_context()->ReturnInstruction(result, call->id());
@@ -5298,7 +5160,7 @@
 
 void HGraphBuilder::GenerateIsRegExp(CallRuntime* call) {
   ASSERT(call->arguments()->length() == 1);
-  CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
+  VISIT_FOR_VALUE(call->arguments()->at(0));
   HValue* value = Pop();
   HHasInstanceType* result =
       new(zone()) HHasInstanceType(value, JS_REGEXP_TYPE);
@@ -5308,7 +5170,7 @@
 
 void HGraphBuilder::GenerateIsObject(CallRuntime* call) {
   ASSERT(call->arguments()->length() == 1);
-  CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
+  VISIT_FOR_VALUE(call->arguments()->at(0));
   HValue* value = Pop();
   HIsObject* test = new(zone()) HIsObject(value);
   ast_context()->ReturnInstruction(test, call->id());
@@ -5316,19 +5178,18 @@
 
 
 void HGraphBuilder::GenerateIsNonNegativeSmi(CallRuntime* call) {
-  return Bailout("inlined runtime function: IsNonNegativeSmi");
+  BAILOUT("inlined runtime function: IsNonNegativeSmi");
 }
 
 
 void HGraphBuilder::GenerateIsUndetectableObject(CallRuntime* call) {
-  return Bailout("inlined runtime function: IsUndetectableObject");
+  BAILOUT("inlined runtime function: IsUndetectableObject");
 }
 
 
 void HGraphBuilder::GenerateIsStringWrapperSafeForDefaultValueOf(
     CallRuntime* call) {
-  return Bailout(
-      "inlined runtime function: IsStringWrapperSafeForDefaultValueOf");
+  BAILOUT("inlined runtime function: IsStringWrapperSafeForDefaultValueOf");
 }
 
 
@@ -5357,7 +5218,7 @@
 
 void HGraphBuilder::GenerateArguments(CallRuntime* call) {
   ASSERT(call->arguments()->length() == 1);
-  CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
+  VISIT_FOR_VALUE(call->arguments()->at(0));
   HValue* index = Pop();
   HInstruction* elements = AddInstruction(new(zone()) HArgumentsElements);
   HInstruction* length = AddInstruction(new(zone()) HArgumentsLength(elements));
@@ -5371,13 +5232,13 @@
 void HGraphBuilder::GenerateClassOf(CallRuntime* call) {
   // The special form detected by IsClassOfTest is detected before we get here
   // and does not cause a bailout.
-  return Bailout("inlined runtime function: ClassOf");
+  BAILOUT("inlined runtime function: ClassOf");
 }
 
 
 void HGraphBuilder::GenerateValueOf(CallRuntime* call) {
   ASSERT(call->arguments()->length() == 1);
-  CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
+  VISIT_FOR_VALUE(call->arguments()->at(0));
   HValue* value = Pop();
   HValueOf* result = new(zone()) HValueOf(value);
   ast_context()->ReturnInstruction(result, call->id());
@@ -5385,15 +5246,15 @@
 
 
 void HGraphBuilder::GenerateSetValueOf(CallRuntime* call) {
-  return Bailout("inlined runtime function: SetValueOf");
+  BAILOUT("inlined runtime function: SetValueOf");
 }
 
 
 // Fast support for charCodeAt(n).
 void HGraphBuilder::GenerateStringCharCodeAt(CallRuntime* call) {
   ASSERT(call->arguments()->length() == 2);
-  CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
-  CHECK_ALIVE(VisitForValue(call->arguments()->at(1)));
+  VISIT_FOR_VALUE(call->arguments()->at(0));
+  VISIT_FOR_VALUE(call->arguments()->at(1));
   HValue* index = Pop();
   HValue* string = Pop();
   HStringCharCodeAt* result = BuildStringCharCodeAt(string, index);
@@ -5404,7 +5265,7 @@
 // Fast support for string.charAt(n) and string[n].
 void HGraphBuilder::GenerateStringCharFromCode(CallRuntime* call) {
   ASSERT(call->arguments()->length() == 1);
-  CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
+  VISIT_FOR_VALUE(call->arguments()->at(0));
   HValue* char_code = Pop();
   HStringCharFromCode* result = new(zone()) HStringCharFromCode(char_code);
   ast_context()->ReturnInstruction(result, call->id());
@@ -5414,8 +5275,8 @@
 // Fast support for string.charAt(n) and string[n].
 void HGraphBuilder::GenerateStringCharAt(CallRuntime* call) {
   ASSERT(call->arguments()->length() == 2);
-  CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
-  CHECK_ALIVE(VisitForValue(call->arguments()->at(1)));
+  VISIT_FOR_VALUE(call->arguments()->at(0));
+  VISIT_FOR_VALUE(call->arguments()->at(1));
   HValue* index = Pop();
   HValue* string = Pop();
   HStringCharCodeAt* char_code = BuildStringCharCodeAt(string, index);
@@ -5428,8 +5289,8 @@
 // Fast support for object equality testing.
 void HGraphBuilder::GenerateObjectEquals(CallRuntime* call) {
   ASSERT(call->arguments()->length() == 2);
-  CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
-  CHECK_ALIVE(VisitForValue(call->arguments()->at(1)));
+  VISIT_FOR_VALUE(call->arguments()->at(0));
+  VISIT_FOR_VALUE(call->arguments()->at(1));
   HValue* right = Pop();
   HValue* left = Pop();
   HCompareJSObjectEq* result = new(zone()) HCompareJSObjectEq(left, right);
@@ -5445,14 +5306,15 @@
 
 // Fast support for Math.random().
 void HGraphBuilder::GenerateRandomHeapNumber(CallRuntime* call) {
-  return Bailout("inlined runtime function: RandomHeapNumber");
+  BAILOUT("inlined runtime function: RandomHeapNumber");
 }
 
 
 // Fast support for StringAdd.
 void HGraphBuilder::GenerateStringAdd(CallRuntime* call) {
   ASSERT_EQ(2, call->arguments()->length());
-  CHECK_ALIVE(VisitArgumentList(call->arguments()));
+  VisitArgumentList(call->arguments());
+  CHECK_BAILOUT;
   HContext* context = new(zone()) HContext;
   AddInstruction(context);
   HCallStub* result = new(zone()) HCallStub(context, CodeStub::StringAdd, 2);
@@ -5464,7 +5326,8 @@
 // Fast support for SubString.
 void HGraphBuilder::GenerateSubString(CallRuntime* call) {
   ASSERT_EQ(3, call->arguments()->length());
-  CHECK_ALIVE(VisitArgumentList(call->arguments()));
+  VisitArgumentList(call->arguments());
+  CHECK_BAILOUT;
   HContext* context = new(zone()) HContext;
   AddInstruction(context);
   HCallStub* result = new(zone()) HCallStub(context, CodeStub::SubString, 3);
@@ -5476,7 +5339,8 @@
 // Fast support for StringCompare.
 void HGraphBuilder::GenerateStringCompare(CallRuntime* call) {
   ASSERT_EQ(2, call->arguments()->length());
-  CHECK_ALIVE(VisitArgumentList(call->arguments()));
+  VisitArgumentList(call->arguments());
+  CHECK_BAILOUT;
   HContext* context = new(zone()) HContext;
   AddInstruction(context);
   HCallStub* result =
@@ -5489,7 +5353,8 @@
 // Support for direct calls from JavaScript to native RegExp code.
 void HGraphBuilder::GenerateRegExpExec(CallRuntime* call) {
   ASSERT_EQ(4, call->arguments()->length());
-  CHECK_ALIVE(VisitArgumentList(call->arguments()));
+  VisitArgumentList(call->arguments());
+  CHECK_BAILOUT;
   HContext* context = new(zone()) HContext;
   AddInstruction(context);
   HCallStub* result = new(zone()) HCallStub(context, CodeStub::RegExpExec, 4);
@@ -5501,7 +5366,8 @@
 // Construct a RegExp exec result with two in-object properties.
 void HGraphBuilder::GenerateRegExpConstructResult(CallRuntime* call) {
   ASSERT_EQ(3, call->arguments()->length());
-  CHECK_ALIVE(VisitArgumentList(call->arguments()));
+  VisitArgumentList(call->arguments());
+  CHECK_BAILOUT;
   HContext* context = new(zone()) HContext;
   AddInstruction(context);
   HCallStub* result =
@@ -5513,14 +5379,15 @@
 
 // Support for fast native caches.
 void HGraphBuilder::GenerateGetFromCache(CallRuntime* call) {
-  return Bailout("inlined runtime function: GetFromCache");
+  BAILOUT("inlined runtime function: GetFromCache");
 }
 
 
 // Fast support for number to string.
 void HGraphBuilder::GenerateNumberToString(CallRuntime* call) {
   ASSERT_EQ(1, call->arguments()->length());
-  CHECK_ALIVE(VisitArgumentList(call->arguments()));
+  VisitArgumentList(call->arguments());
+  CHECK_BAILOUT;
   HContext* context = new(zone()) HContext;
   AddInstruction(context);
   HCallStub* result =
@@ -5534,35 +5401,21 @@
 // indices. This should only be used if the indices are known to be
 // non-negative and within bounds of the elements array at the call site.
 void HGraphBuilder::GenerateSwapElements(CallRuntime* call) {
-  return Bailout("inlined runtime function: SwapElements");
+  BAILOUT("inlined runtime function: SwapElements");
 }
 
 
 // Fast call for custom callbacks.
 void HGraphBuilder::GenerateCallFunction(CallRuntime* call) {
-  // 1 ~ The function to call is not itself an argument to the call.
-  int arg_count = call->arguments()->length() - 1;
-  ASSERT(arg_count >= 1);  // There's always at least a receiver.
-
-  for (int i = 0; i < arg_count; ++i) {
-    CHECK_ALIVE(VisitArgument(call->arguments()->at(i)));
-  }
-  CHECK_ALIVE(VisitForValue(call->arguments()->last()));
-  HValue* function = Pop();
-  HContext* context = new HContext;
-  AddInstruction(context);
-  HInvokeFunction* result =
-      new(zone()) HInvokeFunction(context, function, arg_count);
-  Drop(arg_count);
-  ast_context()->ReturnInstruction(result, call->id());
+  BAILOUT("inlined runtime function: CallFunction");
 }
 
 
 // Fast call to math functions.
 void HGraphBuilder::GenerateMathPow(CallRuntime* call) {
   ASSERT_EQ(2, call->arguments()->length());
-  CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
-  CHECK_ALIVE(VisitForValue(call->arguments()->at(1)));
+  VISIT_FOR_VALUE(call->arguments()->at(0));
+  VISIT_FOR_VALUE(call->arguments()->at(1));
   HValue* right = Pop();
   HValue* left = Pop();
   HPower* result = new(zone()) HPower(left, right);
@@ -5572,7 +5425,8 @@
 
 void HGraphBuilder::GenerateMathSin(CallRuntime* call) {
   ASSERT_EQ(1, call->arguments()->length());
-  CHECK_ALIVE(VisitArgumentList(call->arguments()));
+  VisitArgumentList(call->arguments());
+  CHECK_BAILOUT;
   HContext* context = new(zone()) HContext;
   AddInstruction(context);
   HCallStub* result =
@@ -5585,7 +5439,8 @@
 
 void HGraphBuilder::GenerateMathCos(CallRuntime* call) {
   ASSERT_EQ(1, call->arguments()->length());
-  CHECK_ALIVE(VisitArgumentList(call->arguments()));
+  VisitArgumentList(call->arguments());
+  CHECK_BAILOUT;
   HContext* context = new(zone()) HContext;
   AddInstruction(context);
   HCallStub* result =
@@ -5598,7 +5453,8 @@
 
 void HGraphBuilder::GenerateMathLog(CallRuntime* call) {
   ASSERT_EQ(1, call->arguments()->length());
-  CHECK_ALIVE(VisitArgumentList(call->arguments()));
+  VisitArgumentList(call->arguments());
+  CHECK_BAILOUT;
   HContext* context = new(zone()) HContext;
   AddInstruction(context);
   HCallStub* result =
@@ -5610,19 +5466,19 @@
 
 
 void HGraphBuilder::GenerateMathSqrt(CallRuntime* call) {
-  return Bailout("inlined runtime function: MathSqrt");
+  BAILOUT("inlined runtime function: MathSqrt");
 }
 
 
 // Check whether two RegExps are equivalent
 void HGraphBuilder::GenerateIsRegExpEquivalent(CallRuntime* call) {
-  return Bailout("inlined runtime function: IsRegExpEquivalent");
+  BAILOUT("inlined runtime function: IsRegExpEquivalent");
 }
 
 
 void HGraphBuilder::GenerateGetCachedArrayIndex(CallRuntime* call) {
   ASSERT(call->arguments()->length() == 1);
-  CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
+  VISIT_FOR_VALUE(call->arguments()->at(0));
   HValue* value = Pop();
   HGetCachedArrayIndex* result = new(zone()) HGetCachedArrayIndex(value);
   ast_context()->ReturnInstruction(result, call->id());
@@ -5630,12 +5486,15 @@
 
 
 void HGraphBuilder::GenerateFastAsciiArrayJoin(CallRuntime* call) {
-  return Bailout("inlined runtime function: FastAsciiArrayJoin");
+  BAILOUT("inlined runtime function: FastAsciiArrayJoin");
 }
 
 
+#undef BAILOUT
 #undef CHECK_BAILOUT
-#undef CHECK_ALIVE
+#undef VISIT_FOR_EFFECT
+#undef VISIT_FOR_VALUE
+#undef ADD_TO_SUBGRAPH
 
 
 HEnvironment::HEnvironment(HEnvironment* outer,
diff --git a/src/ia32/assembler-ia32.h b/src/ia32/assembler-ia32.h
index 079dca7..46fda3b 100644
--- a/src/ia32/assembler-ia32.h
+++ b/src/ia32/assembler-ia32.h
@@ -296,6 +296,7 @@
   RelocInfo::Mode rmode_;
 
   friend class Assembler;
+  friend class MacroAssembler;
 };
 
 
diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc
index 275e8e2..5d32095 100644
--- a/src/ia32/code-stubs-ia32.cc
+++ b/src/ia32/code-stubs-ia32.cc
@@ -446,9 +446,6 @@
     case TRBinaryOpIC::ODDBALL:
       GenerateOddballStub(masm);
       break;
-    case TRBinaryOpIC::BOTH_STRING:
-      GenerateBothStringStub(masm);
-      break;
     case TRBinaryOpIC::STRING:
       GenerateStringStub(masm);
       break;
@@ -912,38 +909,6 @@
 }
 
 
-void TypeRecordingBinaryOpStub::GenerateBothStringStub(MacroAssembler* masm) {
-  Label call_runtime;
-  ASSERT(operands_type_ == TRBinaryOpIC::BOTH_STRING);
-  ASSERT(op_ == Token::ADD);
-  // If both arguments are strings, call the string add stub.
-  // Otherwise, do a transition.
-
-  // Registers containing left and right operands respectively.
-  Register left = edx;
-  Register right = eax;
-
-  // Test if left operand is a string.
-  __ test(left, Immediate(kSmiTagMask));
-  __ j(zero, &call_runtime);
-  __ CmpObjectType(left, FIRST_NONSTRING_TYPE, ecx);
-  __ j(above_equal, &call_runtime);
-
-  // Test if right operand is a string.
-  __ test(right, Immediate(kSmiTagMask));
-  __ j(zero, &call_runtime);
-  __ CmpObjectType(right, FIRST_NONSTRING_TYPE, ecx);
-  __ j(above_equal, &call_runtime);
-
-  StringAddStub string_add_stub(NO_STRING_CHECK_IN_STUB);
-  GenerateRegisterArgsPush(masm);
-  __ TailCallStub(&string_add_stub);
-
-  __ bind(&call_runtime);
-  GenerateTypeTransition(masm);
-}
-
-
 void TypeRecordingBinaryOpStub::GenerateInt32Stub(MacroAssembler* masm) {
   Label call_runtime;
   ASSERT(operands_type_ == TRBinaryOpIC::INT32);
@@ -1155,25 +1120,23 @@
     GenerateAddStrings(masm);
   }
 
-  Factory* factory = masm->isolate()->factory();
-
   // Convert odd ball arguments to numbers.
   NearLabel check, done;
-  __ cmp(edx, factory->undefined_value());
+  __ cmp(edx, FACTORY->undefined_value());
   __ j(not_equal, &check);
   if (Token::IsBitOp(op_)) {
     __ xor_(edx, Operand(edx));
   } else {
-    __ mov(edx, Immediate(factory->nan_value()));
+    __ mov(edx, Immediate(FACTORY->nan_value()));
   }
   __ jmp(&done);
   __ bind(&check);
-  __ cmp(eax, factory->undefined_value());
+  __ cmp(eax, FACTORY->undefined_value());
   __ j(not_equal, &done);
   if (Token::IsBitOp(op_)) {
     __ xor_(eax, Operand(eax));
   } else {
-    __ mov(eax, Immediate(factory->nan_value()));
+    __ mov(eax, Immediate(FACTORY->nan_value()));
   }
   __ bind(&done);
 
@@ -4084,7 +4047,12 @@
   __ cmp(Operand::StaticVariable(js_entry_sp), Immediate(0));
   __ j(not_equal, &not_outermost_js);
   __ mov(Operand::StaticVariable(js_entry_sp), ebp);
+  __ push(Immediate(Smi::FromInt(StackFrame::OUTERMOST_JSENTRY_FRAME)));
+  Label cont;
+  __ jmp(&cont);
   __ bind(&not_outermost_js);
+  __ push(Immediate(Smi::FromInt(StackFrame::INNER_JSENTRY_FRAME)));
+  __ bind(&cont);
 #endif
 
   // Call a faked try-block that does the invoke.
@@ -4130,23 +4098,20 @@
   __ call(Operand(edx));
 
   // Unlink this frame from the handler chain.
-  __ pop(Operand::StaticVariable(ExternalReference(
-      Isolate::k_handler_address,
-      masm->isolate())));
-  // Pop next_sp.
-  __ add(Operand(esp), Immediate(StackHandlerConstants::kSize - kPointerSize));
+  __ PopTryHandler();
 
+  __ bind(&exit);
 #ifdef ENABLE_LOGGING_AND_PROFILING
-  // If current EBP value is the same as js_entry_sp value, it means that
-  // the current function is the outermost.
-  __ cmp(ebp, Operand::StaticVariable(js_entry_sp));
+  // Check if the current stack frame is marked as the outermost JS frame.
+  __ pop(ebx);
+  __ cmp(Operand(ebx),
+         Immediate(Smi::FromInt(StackFrame::OUTERMOST_JSENTRY_FRAME)));
   __ j(not_equal, &not_outermost_js_2);
   __ mov(Operand::StaticVariable(js_entry_sp), Immediate(0));
   __ bind(&not_outermost_js_2);
 #endif
 
   // Restore the top frame descriptor from the stack.
-  __ bind(&exit);
   __ pop(Operand::StaticVariable(ExternalReference(
       Isolate::k_c_entry_fp_address,
       masm->isolate())));
diff --git a/src/ia32/code-stubs-ia32.h b/src/ia32/code-stubs-ia32.h
index cf73682..80a75cd 100644
--- a/src/ia32/code-stubs-ia32.h
+++ b/src/ia32/code-stubs-ia32.h
@@ -153,7 +153,6 @@
   void GenerateHeapNumberStub(MacroAssembler* masm);
   void GenerateOddballStub(MacroAssembler* masm);
   void GenerateStringStub(MacroAssembler* masm);
-  void GenerateBothStringStub(MacroAssembler* masm);
   void GenerateGenericStub(MacroAssembler* masm);
   void GenerateAddStrings(MacroAssembler* masm);
 
diff --git a/src/ia32/full-codegen-ia32.cc b/src/ia32/full-codegen-ia32.cc
index 69d5e77..5d153a8 100644
--- a/src/ia32/full-codegen-ia32.cc
+++ b/src/ia32/full-codegen-ia32.cc
@@ -192,7 +192,7 @@
     __ lea(edx,
            Operand(ebp, StandardFrameConstants::kCallerSPOffset + offset));
     __ push(edx);
-    __ push(Immediate(Smi::FromInt(scope()->num_parameters())));
+    __ SafePush(Immediate(Smi::FromInt(scope()->num_parameters())));
     // Arguments to ArgumentsAccessStub:
     //   function, receiver address, parameter count.
     // The stub will rewrite receiver and parameter count if the previous
@@ -381,13 +381,20 @@
 
 void FullCodeGenerator::AccumulatorValueContext::Plug(
     Handle<Object> lit) const {
-  __ Set(result_register(), Immediate(lit));
+  if (lit->IsSmi()) {
+    __ SafeSet(result_register(), Immediate(lit));
+  } else {
+    __ Set(result_register(), Immediate(lit));
+  }
 }
 
 
 void FullCodeGenerator::StackValueContext::Plug(Handle<Object> lit) const {
-  // Immediates can be pushed directly.
-  __ push(Immediate(lit));
+  if (lit->IsSmi()) {
+    __ SafePush(Immediate(lit));
+  } else {
+    __ push(Immediate(lit));
+  }
 }
 
 
@@ -730,7 +737,7 @@
       }
       ASSERT(prop->key()->AsLiteral() != NULL &&
              prop->key()->AsLiteral()->handle()->IsSmi());
-      __ Set(ecx, Immediate(prop->key()->AsLiteral()->handle()));
+      __ SafeSet(ecx, Immediate(prop->key()->AsLiteral()->handle()));
 
       Handle<Code> ic = is_strict_mode()
           ? isolate()->builtins()->KeyedStoreIC_Initialize_Strict()
@@ -1184,7 +1191,7 @@
           __ mov(edx,
                  ContextSlotOperandCheckExtensions(obj_proxy->var()->AsSlot(),
                                                    slow));
-          __ mov(eax, Immediate(key_literal->handle()));
+          __ SafeSet(eax, Immediate(key_literal->handle()));
           Handle<Code> ic =
               isolate()->builtins()->KeyedLoadIC_Initialize();
           EmitCallIC(ic, RelocInfo::CODE_TARGET);
@@ -1269,7 +1276,7 @@
     ASSERT(key_literal->handle()->IsSmi());
 
     // Load the key.
-    __ mov(eax, Immediate(key_literal->handle()));
+    __ SafeSet(eax, Immediate(key_literal->handle()));
 
     // Do a keyed property load.
     Handle<Code> ic = isolate()->builtins()->KeyedLoadIC_Initialize();
@@ -1540,7 +1547,7 @@
           MemOperand slot_operand =
               EmitSlotSearch(obj_proxy->var()->AsSlot(), ecx);
           __ push(slot_operand);
-          __ mov(eax, Immediate(property->key()->AsLiteral()->handle()));
+          __ SafeSet(eax, Immediate(property->key()->AsLiteral()->handle()));
         } else {
           VisitForStackValue(property->obj());
           VisitForAccumulatorValue(property->key());
@@ -1553,7 +1560,7 @@
           MemOperand slot_operand =
               EmitSlotSearch(obj_proxy->var()->AsSlot(), ecx);
           __ push(slot_operand);
-          __ push(Immediate(property->key()->AsLiteral()->handle()));
+          __ SafePush(Immediate(property->key()->AsLiteral()->handle()));
         } else {
           VisitForStackValue(property->obj());
           VisitForStackValue(property->key());
@@ -1632,6 +1639,7 @@
 void FullCodeGenerator::EmitNamedPropertyLoad(Property* prop) {
   SetSourcePosition(prop->position());
   Literal* key = prop->key()->AsLiteral();
+  ASSERT(!key->handle()->IsSmi());
   __ mov(ecx, Immediate(key->handle()));
   Handle<Code> ic = isolate()->builtins()->LoadIC_Initialize();
   EmitCallIC(ic, RelocInfo::CODE_TARGET);
@@ -1796,7 +1804,7 @@
           EmitVariableLoad(prop->obj()->AsVariableProxy()->var());
         }
         __ mov(edx, eax);
-        __ Set(ecx, Immediate(prop->key()->AsLiteral()->handle()));
+        __ SafeSet(ecx, Immediate(prop->key()->AsLiteral()->handle()));
       } else {
         VisitForStackValue(prop->obj());
         VisitForAccumulatorValue(prop->key());
@@ -2307,7 +2315,7 @@
   SetSourcePosition(expr->position());
 
   // Load function and argument count into edi and eax.
-  __ Set(eax, Immediate(arg_count));
+  __ SafeSet(eax, Immediate(arg_count));
   __ mov(edi, Operand(esp, arg_count * kPointerSize));
 
   Handle<Code> construct_builtin =
@@ -2647,7 +2655,7 @@
   // parameter count in eax.
   VisitForAccumulatorValue(args->at(0));
   __ mov(edx, eax);
-  __ mov(eax, Immediate(Smi::FromInt(scope()->num_parameters())));
+  __ SafeSet(eax, Immediate(Smi::FromInt(scope()->num_parameters())));
   ArgumentsAccessStub stub(ArgumentsAccessStub::READ_ELEMENT);
   __ CallStub(&stub);
   context()->Plug(eax);
@@ -2659,7 +2667,7 @@
 
   Label exit;
   // Get the number of formal parameters.
-  __ Set(eax, Immediate(Smi::FromInt(scope()->num_parameters())));
+  __ SafeSet(eax, Immediate(Smi::FromInt(scope()->num_parameters())));
 
   // Check if the calling frame is an arguments adaptor frame.
   __ mov(ebx, Operand(ebp, StandardFrameConstants::kCallerFPOffset));
@@ -3087,14 +3095,15 @@
 void FullCodeGenerator::EmitCallFunction(ZoneList<Expression*>* args) {
   ASSERT(args->length() >= 2);
 
-  int arg_count = args->length() - 2;  // 2 ~ receiver and function.
-  for (int i = 0; i < arg_count + 1; ++i) {
-    VisitForStackValue(args->at(i));
+  int arg_count = args->length() - 2;  // For receiver and function.
+  VisitForStackValue(args->at(0));  // Receiver.
+  for (int i = 0; i < arg_count; i++) {
+    VisitForStackValue(args->at(i + 1));
   }
-  VisitForAccumulatorValue(args->last());  // Function.
+  VisitForAccumulatorValue(args->at(arg_count + 1));  // Function.
 
-  // InvokeFunction requires the function in edi. Move it in there.
-  __ mov(edi, result_register());
+  // InvokeFunction requires function in edi. Move it in there.
+  if (!result_register().is(edi)) __ mov(edi, result_register());
   ParameterCount count(arg_count);
   __ InvokeFunction(edi, count, CALL_FUNCTION);
   __ mov(esi, Operand(ebp, StandardFrameConstants::kContextOffset));
@@ -3818,7 +3827,7 @@
         MemOperand slot_operand =
             EmitSlotSearch(obj_proxy->var()->AsSlot(), ecx);
         __ push(slot_operand);
-        __ mov(eax, Immediate(prop->key()->AsLiteral()->handle()));
+        __ SafeSet(eax, Immediate(prop->key()->AsLiteral()->handle()));
       } else {
         VisitForStackValue(prop->obj());
         VisitForAccumulatorValue(prop->key());
@@ -4253,7 +4262,30 @@
     default:
       break;
   }
+
   __ call(ic, mode);
+
+  // Crankshaft doesn't need patching of inlined loads and stores.
+  // When compiling the snapshot we need to produce code that works
+  // with and without Crankshaft.
+  if (V8::UseCrankshaft() && !Serializer::enabled()) {
+    return;
+  }
+
+  // If we're calling a (keyed) load or store stub, we have to mark
+  // the call as containing no inlined code so we will not attempt to
+  // patch it.
+  switch (ic->kind()) {
+    case Code::LOAD_IC:
+    case Code::KEYED_LOAD_IC:
+    case Code::STORE_IC:
+    case Code::KEYED_STORE_IC:
+      __ nop();  // Signals no inlined code.
+      break;
+    default:
+      // Do nothing.
+      break;
+  }
 }
 
 
@@ -4274,6 +4306,7 @@
     default:
       break;
   }
+
   __ call(ic, RelocInfo::CODE_TARGET);
   if (patch_site != NULL && patch_site->is_bound()) {
     patch_site->EmitPatchInfo();
diff --git a/src/ia32/ic-ia32.cc b/src/ia32/ic-ia32.cc
index 4106f01..b7af03c 100644
--- a/src/ia32/ic-ia32.cc
+++ b/src/ia32/ic-ia32.cc
@@ -371,6 +371,12 @@
 }
 
 
+// The offset from the inlined patch site to the start of the
+// inlined load instruction.  It is 7 bytes (test eax, imm) plus
+// 6 bytes (jne slow_label).
+const int LoadIC::kOffsetToLoadInstruction = 13;
+
+
 void LoadIC::GenerateArrayLength(MacroAssembler* masm) {
   // ----------- S t a t e -------------
   //  -- eax    : receiver
@@ -1267,6 +1273,172 @@
 }
 
 
+bool LoadIC::PatchInlinedLoad(Address address, Object* map, int offset) {
+  if (V8::UseCrankshaft()) return false;
+
+  // The address of the instruction following the call.
+  Address test_instruction_address =
+      address + Assembler::kCallTargetAddressOffset;
+  // If the instruction following the call is not a test eax, nothing
+  // was inlined.
+  if (*test_instruction_address != Assembler::kTestEaxByte) return false;
+
+  Address delta_address = test_instruction_address + 1;
+  // The delta to the start of the map check instruction.
+  int delta = *reinterpret_cast<int*>(delta_address);
+
+  // The map address is the last 4 bytes of the 7-byte
+  // operand-immediate compare instruction, so we add 3 to get the
+  // offset to the last 4 bytes.
+  Address map_address = test_instruction_address + delta + 3;
+  *(reinterpret_cast<Object**>(map_address)) = map;
+
+  // The offset is in the last 4 bytes of a six byte
+  // memory-to-register move instruction, so we add 2 to get the
+  // offset to the last 4 bytes.
+  Address offset_address =
+      test_instruction_address + delta + kOffsetToLoadInstruction + 2;
+  *reinterpret_cast<int*>(offset_address) = offset - kHeapObjectTag;
+  return true;
+}
+
+
+// One byte opcode for mov ecx,0xXXXXXXXX.
+// Marks inlined contextual loads using all kinds of cells. Generated
+// code has the hole check:
+//   mov reg, <cell>
+//   mov reg, (<cell>, value offset)
+//   cmp reg, <the hole>
+//   je  slow
+//   ;; use reg
+static const byte kMovEcxByte = 0xB9;
+
+// One byte opcode for mov edx,0xXXXXXXXX.
+// Marks inlined contextual loads using only "don't delete"
+// cells. Generated code doesn't have the hole check:
+//   mov reg, <cell>
+//   mov reg, (<cell>, value offset)
+//   ;; use reg
+static const byte kMovEdxByte = 0xBA;
+
+bool LoadIC::PatchInlinedContextualLoad(Address address,
+                                        Object* map,
+                                        Object* cell,
+                                        bool is_dont_delete) {
+  if (V8::UseCrankshaft()) return false;
+
+  // The address of the instruction following the call.
+  Address mov_instruction_address =
+      address + Assembler::kCallTargetAddressOffset;
+  // If the instruction following the call is not a mov ecx/edx,
+  // nothing was inlined.
+  byte b = *mov_instruction_address;
+  if (b != kMovEcxByte && b != kMovEdxByte) return false;
+  // If we don't have the hole check generated, we can only support
+  // "don't delete" cells.
+  if (b == kMovEdxByte && !is_dont_delete) return false;
+
+  Address delta_address = mov_instruction_address + 1;
+  // The delta to the start of the map check instruction.
+  int delta = *reinterpret_cast<int*>(delta_address);
+
+  // The map address is the last 4 bytes of the 7-byte
+  // operand-immediate compare instruction, so we add 3 to get the
+  // offset to the last 4 bytes.
+  Address map_address = mov_instruction_address + delta + 3;
+  *(reinterpret_cast<Object**>(map_address)) = map;
+
+  // The cell is in the last 4 bytes of a five byte mov reg, imm32
+  // instruction, so we add 1 to get the offset to the last 4 bytes.
+  Address offset_address =
+      mov_instruction_address + delta + kOffsetToLoadInstruction + 1;
+  *reinterpret_cast<Object**>(offset_address) = cell;
+  return true;
+}
+
+
+bool StoreIC::PatchInlinedStore(Address address, Object* map, int offset) {
+  if (V8::UseCrankshaft()) return false;
+
+  // The address of the instruction following the call.
+  Address test_instruction_address =
+      address + Assembler::kCallTargetAddressOffset;
+
+  // If the instruction following the call is not a test eax, nothing
+  // was inlined.
+  if (*test_instruction_address != Assembler::kTestEaxByte) return false;
+
+  // Extract the encoded deltas from the test eax instruction.
+  Address encoded_offsets_address = test_instruction_address + 1;
+  int encoded_offsets = *reinterpret_cast<int*>(encoded_offsets_address);
+  int delta_to_map_check = -(encoded_offsets & 0xFFFF);
+  int delta_to_record_write = encoded_offsets >> 16;
+
+  // Patch the map to check. The map address is the last 4 bytes of
+  // the 7-byte operand-immediate compare instruction.
+  Address map_check_address = test_instruction_address + delta_to_map_check;
+  Address map_address = map_check_address + 3;
+  *(reinterpret_cast<Object**>(map_address)) = map;
+
+  // Patch the offset in the store instruction. The offset is in the
+  // last 4 bytes of a six byte register-to-memory move instruction.
+  Address offset_address =
+      map_check_address + StoreIC::kOffsetToStoreInstruction + 2;
+  // The offset should have initial value (kMaxInt - 1), cleared value
+  // (-1) or we should be clearing the inlined version.
+  ASSERT(*reinterpret_cast<int*>(offset_address) == kMaxInt - 1 ||
+         *reinterpret_cast<int*>(offset_address) == -1 ||
+         (offset == 0 && map == HEAP->null_value()));
+  *reinterpret_cast<int*>(offset_address) = offset - kHeapObjectTag;
+
+  // Patch the offset in the write-barrier code. The offset is the
+  // last 4 bytes of a six byte lea instruction.
+  offset_address = map_check_address + delta_to_record_write + 2;
+  // The offset should have initial value (kMaxInt), cleared value
+  // (-1) or we should be clearing the inlined version.
+  ASSERT(*reinterpret_cast<int*>(offset_address) == kMaxInt ||
+         *reinterpret_cast<int*>(offset_address) == -1 ||
+         (offset == 0 && map == HEAP->null_value()));
+  *reinterpret_cast<int*>(offset_address) = offset - kHeapObjectTag;
+
+  return true;
+}
+
+
+static bool PatchInlinedMapCheck(Address address, Object* map) {
+  if (V8::UseCrankshaft()) return false;
+
+  Address test_instruction_address =
+      address + Assembler::kCallTargetAddressOffset;
+  // The keyed load has a fast inlined case if the IC call instruction
+  // is immediately followed by a test instruction.
+  if (*test_instruction_address != Assembler::kTestEaxByte) return false;
+
+  // Fetch the offset from the test instruction to the map cmp
+  // instruction.  This offset is stored in the last 4 bytes of the 5
+  // byte test instruction.
+  Address delta_address = test_instruction_address + 1;
+  int delta = *reinterpret_cast<int*>(delta_address);
+  // Compute the map address.  The map address is in the last 4 bytes
+  // of the 7-byte operand-immediate compare instruction, so we add 3
+  // to the offset to get the map address.
+  Address map_address = test_instruction_address + delta + 3;
+  // Patch the map check.
+  *(reinterpret_cast<Object**>(map_address)) = map;
+  return true;
+}
+
+
+bool KeyedLoadIC::PatchInlinedLoad(Address address, Object* map) {
+  return PatchInlinedMapCheck(address, map);
+}
+
+
+bool KeyedStoreIC::PatchInlinedStore(Address address, Object* map) {
+  return PatchInlinedMapCheck(address, map);
+}
+
+
 void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) {
   // ----------- S t a t e -------------
   //  -- eax    : key
@@ -1347,6 +1519,12 @@
 }
 
 
+// The offset from the inlined patch site to the start of the inlined
+// store instruction.  It is 7 bytes (test reg, imm) plus 6 bytes (jne
+// slow_label).
+const int StoreIC::kOffsetToStoreInstruction = 13;
+
+
 void StoreIC::GenerateArrayLength(MacroAssembler* masm) {
   // ----------- S t a t e -------------
   //  -- eax    : value
diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc
index 46c71e8..0f96f78 100644
--- a/src/ia32/lithium-codegen-ia32.cc
+++ b/src/ia32/lithium-codegen-ia32.cc
@@ -77,7 +77,7 @@
 
 void LCodeGen::FinishCode(Handle<Code> code) {
   ASSERT(is_done());
-  code->set_stack_slots(GetStackSlotCount());
+  code->set_stack_slots(StackSlotCount());
   code->set_safepoint_table_offset(safepoints_.GetCodeOffset());
   PopulateDeoptimizationData(code);
   Deoptimizer::EnsureRelocSpaceForLazyDeoptimization(code);
@@ -132,7 +132,7 @@
   __ push(edi);  // Callee's JS function.
 
   // Reserve space for the stack slots needed by the code.
-  int slots = GetStackSlotCount();
+  int slots = StackSlotCount();
   if (slots > 0) {
     if (FLAG_debug_code) {
       __ mov(Operand(eax), Immediate(slots));
@@ -254,7 +254,7 @@
 
 bool LCodeGen::GenerateSafepointTable() {
   ASSERT(is_done());
-  safepoints_.Emit(masm(), GetStackSlotCount());
+  safepoints_.Emit(masm(), StackSlotCount());
   return !is_aborted();
 }
 
@@ -386,7 +386,7 @@
     translation->StoreDoubleStackSlot(op->index());
   } else if (op->IsArgument()) {
     ASSERT(is_tagged);
-    int src_index = GetStackSlotCount() + op->index();
+    int src_index = StackSlotCount() + op->index();
     translation->StoreStackSlot(src_index);
   } else if (op->IsRegister()) {
     Register reg = ToRegister(op);
@@ -2057,7 +2057,7 @@
   }
   __ mov(esp, ebp);
   __ pop(ebp);
-  __ Ret((GetParameterCount() + 1) * kPointerSize, ecx);
+  __ Ret((ParameterCount() + 1) * kPointerSize, ecx);
 }
 
 
@@ -2493,7 +2493,7 @@
   SafepointGenerator safepoint_generator(this,
                                          pointers,
                                          env->deoptimization_index());
-  ParameterCount actual(eax);
+  v8::internal::ParameterCount actual(eax);
   __ InvokeFunction(function, actual, CALL_FUNCTION, &safepoint_generator);
 }
 
@@ -2707,16 +2707,25 @@
   Register output_reg = ToRegister(instr->result());
   XMMRegister input_reg = ToDoubleRegister(instr->InputAt(0));
 
-  Label below_half, done;
   // xmm_scratch = 0.5
   ExternalReference one_half = ExternalReference::address_of_one_half();
   __ movdbl(xmm_scratch, Operand::StaticVariable(one_half));
 
-  __ ucomisd(xmm_scratch, input_reg);
-  __ j(above, &below_half);
   // input = input + 0.5
   __ addsd(input_reg, xmm_scratch);
 
+  // We need to return -0 for the input range [-0.5, 0[, otherwise
+  // compute Math.floor(value + 0.5).
+  if (instr->hydrogen()->CheckFlag(HValue::kBailoutOnMinusZero)) {
+    __ ucomisd(input_reg, xmm_scratch);
+    DeoptimizeIf(below_equal, instr->environment());
+  } else {
+    // If we don't need to bailout on -0, we check only bailout
+    // on negative inputs.
+    __ xorpd(xmm_scratch, xmm_scratch);  // Zero the register.
+    __ ucomisd(input_reg, xmm_scratch);
+    DeoptimizeIf(below, instr->environment());
+  }
 
   // Compute Math.floor(value + 0.5).
   // Use truncating instruction (OK because input is positive).
@@ -2725,27 +2734,6 @@
   // Overflow is signalled with minint.
   __ cmp(output_reg, 0x80000000u);
   DeoptimizeIf(equal, instr->environment());
-  __ jmp(&done);
-
-  __ bind(&below_half);
-
-  // We return 0 for the input range [+0, 0.5[, or [-0.5, 0.5[ if
-  // we can ignore the difference between a result of -0 and +0.
-  if (instr->hydrogen()->CheckFlag(HValue::kBailoutOnMinusZero)) {
-    // If the sign is positive, we return +0.
-    __ movmskpd(output_reg, input_reg);
-    __ test(output_reg, Immediate(1));
-    DeoptimizeIf(not_zero, instr->environment());
-  } else {
-    // If the input is >= -0.5, we return +0.
-    __ mov(output_reg, Immediate(0xBF000000));
-    __ movd(xmm_scratch, Operand(output_reg));
-    __ cvtss2sd(xmm_scratch, xmm_scratch);
-    __ ucomisd(input_reg, xmm_scratch);
-    DeoptimizeIf(below, instr->environment());
-  }
-  __ Set(output_reg, Immediate(0));
-  __ bind(&done);
 }
 
 
@@ -2905,21 +2893,6 @@
 }
 
 
-void LCodeGen::DoInvokeFunction(LInvokeFunction* instr) {
-  ASSERT(ToRegister(instr->context()).is(esi));
-  ASSERT(ToRegister(instr->function()).is(edi));
-  ASSERT(instr->HasPointerMap());
-  ASSERT(instr->HasDeoptimizationEnvironment());
-  LPointerMap* pointers = instr->pointer_map();
-  LEnvironment* env = instr->deoptimization_environment();
-  RecordPosition(pointers->position());
-  RegisterEnvironmentForDeoptimization(env);
-  SafepointGenerator generator(this, pointers, env->deoptimization_index());
-  ParameterCount count(instr->arity());
-  __ InvokeFunction(edi, count, CALL_FUNCTION, &generator);
-}
-
-
 void LCodeGen::DoCallKeyed(LCallKeyed* instr) {
   ASSERT(ToRegister(instr->context()).is(esi));
   ASSERT(ToRegister(instr->key()).is(ecx));
@@ -3323,22 +3296,6 @@
 }
 
 
-void LCodeGen::DoStringAdd(LStringAdd* instr) {
-  if (instr->left()->IsConstantOperand()) {
-    __ push(ToImmediate(instr->left()));
-  } else {
-    __ push(ToOperand(instr->left()));
-  }
-  if (instr->right()->IsConstantOperand()) {
-    __ push(ToImmediate(instr->right()));
-  } else {
-    __ push(ToOperand(instr->right()));
-  }
-  StringAddStub stub(NO_STRING_CHECK_IN_STUB);
-  CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr, RESTORE_CONTEXT);
-}
-
-
 void LCodeGen::DoInteger32ToDouble(LInteger32ToDouble* instr) {
   LOperand* input = instr->InputAt(0);
   ASSERT(input->IsRegister() || input->IsStackSlot());
diff --git a/src/ia32/lithium-codegen-ia32.h b/src/ia32/lithium-codegen-ia32.h
index f8bbea3..6d42cd7 100644
--- a/src/ia32/lithium-codegen-ia32.h
+++ b/src/ia32/lithium-codegen-ia32.h
@@ -147,8 +147,8 @@
                        Register temporary,
                        Register temporary2);
 
-  int GetStackSlotCount() const { return chunk()->spill_slot_count(); }
-  int GetParameterCount() const { return scope()->num_parameters(); }
+  int StackSlotCount() const { return chunk()->spill_slot_count(); }
+  int ParameterCount() const { return scope()->num_parameters(); }
 
   void Abort(const char* format, ...);
   void Comment(const char* format, ...);
diff --git a/src/ia32/lithium-ia32.cc b/src/ia32/lithium-ia32.cc
index aa91a83..9ccd189 100644
--- a/src/ia32/lithium-ia32.cc
+++ b/src/ia32/lithium-ia32.cc
@@ -71,21 +71,22 @@
 
 #ifdef DEBUG
 void LInstruction::VerifyCall() {
-  // Call instructions can use only fixed registers as temporaries and
-  // outputs because all registers are blocked by the calling convention.
-  // Inputs operands must use a fixed register or use-at-start policy or
-  // a non-register policy.
+  // Call instructions can use only fixed registers as
+  // temporaries and outputs because all registers
+  // are blocked by the calling convention.
+  // Inputs must use a fixed register.
   ASSERT(Output() == NULL ||
          LUnallocated::cast(Output())->HasFixedPolicy() ||
          !LUnallocated::cast(Output())->HasRegisterPolicy());
   for (UseIterator it(this); it.HasNext(); it.Advance()) {
-    LUnallocated* operand = LUnallocated::cast(it.Next());
-    ASSERT(operand->HasFixedPolicy() ||
-           operand->IsUsedAtStart());
+    LOperand* operand = it.Next();
+    ASSERT(LUnallocated::cast(operand)->HasFixedPolicy() ||
+           !LUnallocated::cast(operand)->HasRegisterPolicy());
   }
   for (TempIterator it(this); it.HasNext(); it.Advance()) {
-    LUnallocated* operand = LUnallocated::cast(it.Next());
-    ASSERT(operand->HasFixedPolicy() ||!operand->HasRegisterPolicy());
+    LOperand* operand = it.Next();
+    ASSERT(LUnallocated::cast(operand)->HasFixedPolicy() ||
+           !LUnallocated::cast(operand)->HasRegisterPolicy());
   }
 }
 #endif
@@ -302,15 +303,6 @@
 }
 
 
-void LInvokeFunction::PrintDataTo(StringStream* stream) {
-  stream->Add("= ");
-  InputAt(0)->PrintTo(stream);
-  stream->Add(" ");
-  InputAt(1)->PrintTo(stream);
-  stream->Add(" #%d / ", arity());
-}
-
-
 void LCallKeyed::PrintDataTo(StringStream* stream) {
   stream->Add("[ecx] #%d / ", arity());
 }
@@ -1230,15 +1222,6 @@
 }
 
 
-LInstruction* LChunkBuilder::DoInvokeFunction(HInvokeFunction* instr) {
-  LOperand* context = UseFixed(instr->context(), esi);
-  LOperand* function = UseFixed(instr->function(), edi);
-  argument_count_ -= instr->argument_count();
-  LInvokeFunction* result = new LInvokeFunction(context, function);
-  return MarkAsCall(DefineFixed(result, eax), instr, CANNOT_DEOPTIMIZE_EAGERLY);
-}
-
-
 LInstruction* LChunkBuilder::DoUnaryMathOperation(HUnaryMathOperation* instr) {
   BuiltinFunctionId op = instr->op();
   if (op == kMathLog) {
@@ -2019,13 +2002,6 @@
 }
 
 
-LInstruction* LChunkBuilder::DoStringAdd(HStringAdd* instr) {
-  LOperand* left = UseOrConstantAtStart(instr->left());
-  LOperand* right = UseOrConstantAtStart(instr->right());
-  return MarkAsCall(DefineFixed(new LStringAdd(left, right), eax), instr);
-}
-
-
 LInstruction* LChunkBuilder::DoStringCharCodeAt(HStringCharCodeAt* instr) {
   LOperand* string = UseRegister(instr->string());
   LOperand* index = UseRegisterOrConstant(instr->index());
@@ -2070,8 +2046,7 @@
 
 LInstruction* LChunkBuilder::DoDeleteProperty(HDeleteProperty* instr) {
   LDeleteProperty* result =
-      new LDeleteProperty(UseAtStart(instr->object()),
-                          UseOrConstantAtStart(instr->key()));
+      new LDeleteProperty(Use(instr->object()), UseOrConstant(instr->key()));
   return MarkAsCall(DefineFixed(result, eax), instr);
 }
 
diff --git a/src/ia32/lithium-ia32.h b/src/ia32/lithium-ia32.h
index 76c90be..9ace8f8 100644
--- a/src/ia32/lithium-ia32.h
+++ b/src/ia32/lithium-ia32.h
@@ -39,7 +39,6 @@
 // Forward declarations.
 class LCodeGen;
 
-
 #define LITHIUM_ALL_INSTRUCTION_LIST(V)         \
   V(ControlInstruction)                         \
   V(Call)                                       \
@@ -107,7 +106,6 @@
   V(InstanceOfAndBranch)                        \
   V(InstanceOfKnownGlobal)                      \
   V(Integer32ToDouble)                          \
-  V(InvokeFunction)                             \
   V(IsNull)                                     \
   V(IsNullAndBranch)                            \
   V(IsObject)                                   \
@@ -156,7 +154,6 @@
   V(StoreKeyedSpecializedArrayElement)          \
   V(StoreNamedField)                            \
   V(StoreNamedGeneric)                          \
-  V(StringAdd)                                  \
   V(StringCharCodeAt)                           \
   V(StringCharFromCode)                         \
   V(StringLength)                               \
@@ -1453,25 +1450,6 @@
 };
 
 
-class LInvokeFunction: public LTemplateInstruction<1, 2, 0> {
- public:
-  LInvokeFunction(LOperand* context, LOperand* function) {
-    inputs_[0] = context;
-    inputs_[1] = function;
-  }
-
-  DECLARE_CONCRETE_INSTRUCTION(InvokeFunction, "invoke-function")
-  DECLARE_HYDROGEN_ACCESSOR(InvokeFunction)
-
-  LOperand* context() { return inputs_[0]; }
-  LOperand* function() { return inputs_[1]; }
-
-  virtual void PrintDataTo(StringStream* stream);
-
-  int arity() const { return hydrogen()->argument_count() - 1; }
-};
-
-
 class LCallKeyed: public LTemplateInstruction<1, 2, 0> {
  public:
   LCallKeyed(LOperand* context, LOperand* key) {
@@ -1791,21 +1769,6 @@
 };
 
 
-class LStringAdd: public LTemplateInstruction<1, 2, 0> {
- public:
-  LStringAdd(LOperand* left, LOperand* right) {
-    inputs_[0] = left;
-    inputs_[1] = right;
-  }
-
-  DECLARE_CONCRETE_INSTRUCTION(StringAdd, "string-add")
-  DECLARE_HYDROGEN_ACCESSOR(StringAdd)
-
-  LOperand* left() { return inputs_[0]; }
-  LOperand* right() { return inputs_[1]; }
-};
-
-
 class LStringCharCodeAt: public LTemplateInstruction<1, 2, 0> {
  public:
   LStringCharCodeAt(LOperand* string, LOperand* index) {
diff --git a/src/ia32/macro-assembler-ia32.cc b/src/ia32/macro-assembler-ia32.cc
index ad567bc..13394cb 100644
--- a/src/ia32/macro-assembler-ia32.cc
+++ b/src/ia32/macro-assembler-ia32.cc
@@ -164,7 +164,7 @@
 
 void MacroAssembler::Set(Register dst, const Immediate& x) {
   if (x.is_zero()) {
-    xor_(dst, Operand(dst));  // shorter than mov
+    xor_(dst, Operand(dst));  // Shorter than mov.
   } else {
     mov(dst, x);
   }
@@ -176,6 +176,33 @@
 }
 
 
+bool MacroAssembler::IsUnsafeImmediate(const Immediate& x) {
+  static const int kMaxImmediateBits = 17;
+  if (x.rmode_ != RelocInfo::NONE) return false;
+  return !is_intn(x.x_, kMaxImmediateBits);
+}
+
+
+void MacroAssembler::SafeSet(Register dst, const Immediate& x) {
+  if (IsUnsafeImmediate(x) && jit_cookie() != 0) {
+    Set(dst, Immediate(x.x_ ^ jit_cookie()));
+    xor_(dst, jit_cookie());
+  } else {
+    Set(dst, x);
+  }
+}
+
+
+void MacroAssembler::SafePush(const Immediate& x) {
+  if (IsUnsafeImmediate(x) && jit_cookie() != 0) {
+    push(Immediate(x.x_ ^ jit_cookie()));
+    xor_(Operand(esp, 0), Immediate(jit_cookie()));
+  } else {
+    push(x);
+  }
+}
+
+
 void MacroAssembler::CmpObjectType(Register heap_object,
                                    InstanceType type,
                                    Register map) {
diff --git a/src/ia32/macro-assembler-ia32.h b/src/ia32/macro-assembler-ia32.h
index 6909272..b986264 100644
--- a/src/ia32/macro-assembler-ia32.h
+++ b/src/ia32/macro-assembler-ia32.h
@@ -197,6 +197,11 @@
   void Set(Register dst, const Immediate& x);
   void Set(const Operand& dst, const Immediate& x);
 
+  // Support for constant splitting.
+  bool IsUnsafeImmediate(const Immediate& x);
+  void SafeSet(Register dst, const Immediate& x);
+  void SafePush(const Immediate& x);
+
   // Compare object type for heap object.
   // Incoming register is heap_object and outgoing register is map.
   void CmpObjectType(Register heap_object, InstanceType type, Register map);
diff --git a/src/ia32/regexp-macro-assembler-ia32.cc b/src/ia32/regexp-macro-assembler-ia32.cc
index 067f8c8..5b2f208 100644
--- a/src/ia32/regexp-macro-assembler-ia32.cc
+++ b/src/ia32/regexp-macro-assembler-ia32.cc
@@ -662,7 +662,7 @@
 }
 
 
-Handle<Object> RegExpMacroAssemblerIA32::GetCode(Handle<String> source) {
+Handle<HeapObject> RegExpMacroAssemblerIA32::GetCode(Handle<String> source) {
   // Finalize code - write the entry point code now we know how many
   // registers we need.
 
@@ -879,7 +879,7 @@
                                            Code::ComputeFlags(Code::REGEXP),
                                            masm_->CodeObject());
   PROFILE(masm_->isolate(), RegExpCodeCreateEvent(*code, *source));
-  return Handle<Object>::cast(code);
+  return Handle<HeapObject>::cast(code);
 }
 
 
diff --git a/src/ia32/regexp-macro-assembler-ia32.h b/src/ia32/regexp-macro-assembler-ia32.h
index 0af61f2..70606da 100644
--- a/src/ia32/regexp-macro-assembler-ia32.h
+++ b/src/ia32/regexp-macro-assembler-ia32.h
@@ -80,7 +80,7 @@
   virtual void CheckPosition(int cp_offset, Label* on_outside_input);
   virtual bool CheckSpecialCharacterClass(uc16 type, Label* on_no_match);
   virtual void Fail();
-  virtual Handle<Object> GetCode(Handle<String> source);
+  virtual Handle<HeapObject> GetCode(Handle<String> source);
   virtual void GoTo(Label* label);
   virtual void IfRegisterGE(int reg, int comparand, Label* if_ge);
   virtual void IfRegisterLT(int reg, int comparand, Label* if_lt);
diff --git a/src/ic.cc b/src/ic.cc
index 2299922..99eb21f 100644
--- a/src/ic.cc
+++ b/src/ic.cc
@@ -304,23 +304,54 @@
 }
 
 
+void KeyedLoadIC::ClearInlinedVersion(Address address) {
+  // Insert null as the map to check for to make sure the map check fails
+  // sending control flow to the IC instead of the inlined version.
+  PatchInlinedLoad(address, HEAP->null_value());
+}
+
+
 void KeyedLoadIC::Clear(Address address, Code* target) {
   if (target->ic_state() == UNINITIALIZED) return;
   // Make sure to also clear the map used in inline fast cases.  If we
   // do not clear these maps, cached code can keep objects alive
   // through the embedded maps.
+  ClearInlinedVersion(address);
   SetTargetAtAddress(address, initialize_stub());
 }
 
 
+void LoadIC::ClearInlinedVersion(Address address) {
+  // Reset the map check of the inlined inobject property load (if
+  // present) to guarantee failure by holding an invalid map (the null
+  // value).  The offset can be patched to anything.
+  Heap* heap = HEAP;
+  PatchInlinedLoad(address, heap->null_value(), 0);
+  PatchInlinedContextualLoad(address,
+                             heap->null_value(),
+                             heap->null_value(),
+                             true);
+}
+
+
 void LoadIC::Clear(Address address, Code* target) {
   if (target->ic_state() == UNINITIALIZED) return;
+  ClearInlinedVersion(address);
   SetTargetAtAddress(address, initialize_stub());
 }
 
 
+void StoreIC::ClearInlinedVersion(Address address) {
+  // Reset the map check of the inlined inobject property store (if
+  // present) to guarantee failure by holding an invalid map (the null
+  // value).  The offset can be patched to anything.
+  PatchInlinedStore(address, HEAP->null_value(), 0);
+}
+
+
 void StoreIC::Clear(Address address, Code* target) {
   if (target->ic_state() == UNINITIALIZED) return;
+  ClearInlinedVersion(address);
   SetTargetAtAddress(address,
       (target->extra_ic_state() == kStrictMode)
         ? initialize_stub_strict()
@@ -328,6 +359,21 @@
 }
 
 
+void KeyedStoreIC::ClearInlinedVersion(Address address) {
+  // Insert null as the elements map to check for.  This will make
+  // sure that the elements fast-case map check fails so that control
+  // flows to the IC instead of the inlined version.
+  PatchInlinedStore(address, HEAP->null_value());
+}
+
+
+void KeyedStoreIC::RestoreInlinedVersion(Address address) {
+  // Restore the fast-case elements map check so that the inlined
+  // version can be used again.
+  PatchInlinedStore(address, HEAP->fixed_array_map());
+}
+
+
 void KeyedStoreIC::Clear(Address address, Code* target) {
   if (target->ic_state() == UNINITIALIZED) return;
   SetTargetAtAddress(address,
@@ -827,6 +873,9 @@
 #endif
       if (state == PREMONOMORPHIC) {
         if (object->IsString()) {
+          Map* map = HeapObject::cast(*object)->map();
+          const int offset = String::kLengthOffset;
+          PatchInlinedLoad(address(), map, offset);
           set_target(isolate()->builtins()->builtin(
               Builtins::kLoadIC_StringLength));
         } else {
@@ -854,6 +903,9 @@
       if (FLAG_trace_ic) PrintF("[LoadIC : +#length /array]\n");
 #endif
       if (state == PREMONOMORPHIC) {
+        Map* map = HeapObject::cast(*object)->map();
+        const int offset = JSArray::kLengthOffset;
+        PatchInlinedLoad(address(), map, offset);
         set_target(isolate()->builtins()->builtin(
             Builtins::kLoadIC_ArrayLength));
       } else {
@@ -896,6 +948,63 @@
     LOG(isolate(), SuspectReadEvent(*name, *object));
   }
 
+  bool can_be_inlined_precheck =
+      FLAG_use_ic &&
+      lookup.IsProperty() &&
+      lookup.IsCacheable() &&
+      lookup.holder() == *object &&
+      !object->IsAccessCheckNeeded();
+
+  bool can_be_inlined =
+      can_be_inlined_precheck &&
+      state == PREMONOMORPHIC &&
+      lookup.type() == FIELD;
+
+  bool can_be_inlined_contextual =
+      can_be_inlined_precheck &&
+      state == UNINITIALIZED &&
+      lookup.holder()->IsGlobalObject() &&
+      lookup.type() == NORMAL;
+
+  if (can_be_inlined) {
+    Map* map = lookup.holder()->map();
+    // Property's index in the properties array.  If negative we have
+    // an inobject property.
+    int index = lookup.GetFieldIndex() - map->inobject_properties();
+    if (index < 0) {
+      // Index is an offset from the end of the object.
+      int offset = map->instance_size() + (index * kPointerSize);
+      if (PatchInlinedLoad(address(), map, offset)) {
+        set_target(megamorphic_stub());
+        TRACE_IC_NAMED("[LoadIC : inline patch %s]\n", name);
+        return lookup.holder()->FastPropertyAt(lookup.GetFieldIndex());
+      } else {
+        TRACE_IC_NAMED("[LoadIC : no inline patch %s (patching failed)]\n",
+                       name);
+      }
+    } else {
+      TRACE_IC_NAMED("[LoadIC : no inline patch %s (not inobject)]\n", name);
+    }
+  } else if (can_be_inlined_contextual) {
+    Map* map = lookup.holder()->map();
+    JSGlobalPropertyCell* cell = JSGlobalPropertyCell::cast(
+        lookup.holder()->property_dictionary()->ValueAt(
+            lookup.GetDictionaryEntry()));
+    if (PatchInlinedContextualLoad(address(),
+                                   map,
+                                   cell,
+                                   lookup.IsDontDelete())) {
+      set_target(megamorphic_stub());
+      TRACE_IC_NAMED("[LoadIC : inline contextual patch %s]\n", name);
+      ASSERT(cell->value() != isolate()->heap()->the_hole_value());
+      return cell->value();
+    }
+  } else {
+    if (FLAG_use_ic && state == PREMONOMORPHIC) {
+      TRACE_IC_NAMED("[LoadIC : no inline patch %s (not inlinable)]\n", name);
+    }
+  }
+
   // Update inline cache and stub cache.
   if (FLAG_use_ic) {
     UpdateCaches(&lookup, state, object, name);
@@ -1185,6 +1294,18 @@
 #ifdef DEBUG
     TraceIC("KeyedLoadIC", key, state, target());
 #endif  // DEBUG
+
+    // For JSObjects with fast elements that are not value wrappers
+    // and that do not have indexed interceptors, we initialize the
+    // inlined fast case (if present) by patching the inlined map
+    // check.
+    if (object->IsJSObject() &&
+        !object->IsJSValue() &&
+        !JSObject::cast(*object)->HasIndexedInterceptor() &&
+        JSObject::cast(*object)->HasFastElements()) {
+      Map* map = JSObject::cast(*object)->map();
+      PatchInlinedLoad(address(), map);
+    }
   }
 
   // Get the property.
@@ -1350,7 +1471,57 @@
     LookupResult lookup;
 
     if (LookupForWrite(*receiver, *name, &lookup)) {
-      // Generate a stub for this store.
+      bool can_be_inlined =
+          state == UNINITIALIZED &&
+          lookup.IsProperty() &&
+          lookup.holder() == *receiver &&
+          lookup.type() == FIELD &&
+          !receiver->IsAccessCheckNeeded();
+
+      if (can_be_inlined) {
+        Map* map = lookup.holder()->map();
+        // Property's index in the properties array.  If negative we have
+        // an inobject property.
+        int index = lookup.GetFieldIndex() - map->inobject_properties();
+        if (index < 0) {
+          // Index is an offset from the end of the object.
+          int offset = map->instance_size() + (index * kPointerSize);
+          if (PatchInlinedStore(address(), map, offset)) {
+            set_target((strict_mode == kStrictMode)
+                         ? megamorphic_stub_strict()
+                         : megamorphic_stub());
+#ifdef DEBUG
+            if (FLAG_trace_ic) {
+              PrintF("[StoreIC : inline patch %s]\n", *name->ToCString());
+            }
+#endif
+            return receiver->SetProperty(*name, *value, NONE, strict_mode);
+#ifdef DEBUG
+
+          } else {
+            if (FLAG_trace_ic) {
+              PrintF("[StoreIC : no inline patch %s (patching failed)]\n",
+                     *name->ToCString());
+            }
+          }
+        } else {
+          if (FLAG_trace_ic) {
+            PrintF("[StoreIC : no inline patch %s (not inobject)]\n",
+                   *name->ToCString());
+          }
+        }
+      } else {
+        if (state == PREMONOMORPHIC) {
+          if (FLAG_trace_ic) {
+            PrintF("[StoreIC : no inline patch %s (not inlinable)]\n",
+                   *name->ToCString());
+#endif
+          }
+        }
+      }
+
+      // If no inlined store ic was patched, generate a stub for this
+      // store.
       UpdateCaches(&lookup, state, strict_mode, receiver, name, value);
     } else {
       // Strict mode doesn't allow setting non-existent global property
@@ -1819,7 +1990,6 @@
     case INT32: return "Int32s";
     case HEAP_NUMBER: return "HeapNumbers";
     case ODDBALL: return "Oddball";
-    case BOTH_STRING: return "BothStrings";
     case STRING: return "Strings";
     case GENERIC: return "Generic";
     default: return "Invalid";
@@ -1835,7 +2005,6 @@
     case INT32:
     case HEAP_NUMBER:
     case ODDBALL:
-    case BOTH_STRING:
     case STRING:
       return MONOMORPHIC;
     case GENERIC:
@@ -1850,17 +2019,12 @@
                                                TRBinaryOpIC::TypeInfo y) {
   if (x == UNINITIALIZED) return y;
   if (y == UNINITIALIZED) return x;
-  if (x == y) return x;
-  if (x == BOTH_STRING && y == STRING) return STRING;
-  if (x == STRING && y == BOTH_STRING) return STRING;
-  if (x == STRING || x == BOTH_STRING || y == STRING || y == BOTH_STRING) {
-    return GENERIC;
-  }
-  if (x > y) return x;
+  if (x == STRING && y == STRING) return STRING;
+  if (x == STRING || y == STRING) return GENERIC;
+  if (x >= y) return x;
   return y;
 }
 
-
 TRBinaryOpIC::TypeInfo TRBinaryOpIC::GetTypeInfo(Handle<Object> left,
                                                  Handle<Object> right) {
   ::v8::internal::TypeInfo left_type =
@@ -1882,11 +2046,9 @@
     return HEAP_NUMBER;
   }
 
-  // Patching for fast string ADD makes sense even if only one of the
-  // arguments is a string.
-  if (left_type.IsString())  {
-    return right_type.IsString() ? BOTH_STRING : STRING;
-  } else if (right_type.IsString()) {
+  if (left_type.IsString() || right_type.IsString()) {
+    // Patching for fast string ADD makes sense even if only one of the
+    // arguments is a string.
     return STRING;
   }
 
@@ -1919,11 +2081,11 @@
   TRBinaryOpIC::TypeInfo type = TRBinaryOpIC::GetTypeInfo(left, right);
   type = TRBinaryOpIC::JoinTypes(type, previous_type);
   TRBinaryOpIC::TypeInfo result_type = TRBinaryOpIC::UNINITIALIZED;
-  if ((type == TRBinaryOpIC::STRING || type == TRBinaryOpIC::BOTH_STRING) &&
-      op != Token::ADD) {
+  if (type == TRBinaryOpIC::STRING && op != Token::ADD) {
     type = TRBinaryOpIC::GENERIC;
   }
-  if (type == TRBinaryOpIC::SMI && previous_type == TRBinaryOpIC::SMI) {
+  if (type == TRBinaryOpIC::SMI &&
+      previous_type == TRBinaryOpIC::SMI) {
     if (op == Token::DIV || op == Token::MUL || kSmiValueSize == 32) {
       // Arithmetic on two Smi inputs has yielded a heap number.
       // That is the only way to get here from the Smi stub.
@@ -1935,7 +2097,8 @@
       result_type = TRBinaryOpIC::INT32;
     }
   }
-  if (type == TRBinaryOpIC::INT32 && previous_type == TRBinaryOpIC::INT32) {
+  if (type == TRBinaryOpIC::INT32 &&
+      previous_type == TRBinaryOpIC::INT32) {
     // We must be here because an operation on two INT32 types overflowed.
     result_type = TRBinaryOpIC::HEAP_NUMBER;
   }
diff --git a/src/ic.h b/src/ic.h
index 7b7ab43..911cbd8 100644
--- a/src/ic.h
+++ b/src/ic.h
@@ -296,6 +296,14 @@
                                    bool support_wrappers);
   static void GenerateFunctionPrototype(MacroAssembler* masm);
 
+  // Clear the use of the inlined version.
+  static void ClearInlinedVersion(Address address);
+
+  // The offset from the inlined patch site to the start of the
+  // inlined load instruction.  It is architecture-dependent, and not
+  // used on ARM.
+  static const int kOffsetToLoadInstruction;
+
  private:
   // Update the inline cache and the global stub cache based on the
   // lookup result.
@@ -320,6 +328,13 @@
 
   static void Clear(Address address, Code* target);
 
+  static bool PatchInlinedLoad(Address address, Object* map, int index);
+
+  static bool PatchInlinedContextualLoad(Address address,
+                                         Object* map,
+                                         Object* cell,
+                                         bool is_dont_delete);
+
   friend class IC;
 };
 
@@ -346,6 +361,9 @@
 
   static void GenerateIndexedInterceptor(MacroAssembler* masm);
 
+  // Clear the use of the inlined version.
+  static void ClearInlinedVersion(Address address);
+
   // Bit mask to be tested against bit field for the cases when
   // generic stub should go into slow case.
   // Access check is necessary explicitly since generic stub does not perform
@@ -389,6 +407,10 @@
 
   static void Clear(Address address, Code* target);
 
+  // Support for patching the map that is checked in an inlined
+  // version of keyed load.
+  static bool PatchInlinedLoad(Address address, Object* map);
+
   friend class IC;
 };
 
@@ -415,6 +437,13 @@
   static void GenerateGlobalProxy(MacroAssembler* masm,
                                   StrictModeFlag strict_mode);
 
+  // Clear the use of an inlined version.
+  static void ClearInlinedVersion(Address address);
+
+  // The offset from the inlined patch site to the start of the
+  // inlined store instruction.
+  static const int kOffsetToStoreInstruction;
+
  private:
   // Update the inline cache and the global stub cache based on the
   // lookup result.
@@ -460,6 +489,10 @@
 
   static void Clear(Address address, Code* target);
 
+  // Support for patching the index and the map that is checked in an
+  // inlined version of the named store.
+  static bool PatchInlinedStore(Address address, Object* map, int index);
+
   friend class IC;
 };
 
@@ -481,6 +514,12 @@
                                          StrictModeFlag strict_mode);
   static void GenerateGeneric(MacroAssembler* masm, StrictModeFlag strict_mode);
 
+  // Clear the inlined version so the IC is always hit.
+  static void ClearInlinedVersion(Address address);
+
+  // Restore the inlined version so the fast case can get hit.
+  static void RestoreInlinedVersion(Address address);
+
  private:
   // Update the inline cache.
   void UpdateCaches(LookupResult* lookup,
@@ -525,6 +564,14 @@
 
   static void Clear(Address address, Code* target);
 
+  // Support for patching the map that is checked in an inlined
+  // version of keyed store.
+  // The address is the patch point for the IC call
+  // (Assembler::kCallTargetAddressOffset before the end of
+  // the call/return address).
+  // The map is the new map that the inlined code should check against.
+  static bool PatchInlinedStore(Address address, Object* map);
+
   friend class IC;
 };
 
@@ -539,7 +586,6 @@
     INT32,
     HEAP_NUMBER,
     ODDBALL,
-    BOTH_STRING,  // Only used for addition operation.
     STRING,  // Only used for addition operation.  At least one string operand.
     GENERIC
   };
diff --git a/src/jsregexp.cc b/src/jsregexp.cc
index 06aae35..66b6332 100644
--- a/src/jsregexp.cc
+++ b/src/jsregexp.cc
@@ -858,12 +858,25 @@
     RegExpNode* start,
     int capture_count,
     Handle<String> pattern) {
+  Heap* heap = pattern->GetHeap();
+
+  bool use_slow_safe_regexp_compiler = false;
+  if (heap->total_regexp_code_generated() >
+          RegExpImpl::kRegWxpCompiledLimit &&
+      heap->isolate()->memory_allocator()->SizeExecutable() >
+          RegExpImpl::kRegExpExecutableMemoryLimit) {
+    use_slow_safe_regexp_compiler = true;
+  }
+
+  macro_assembler->set_slow_safe(use_slow_safe_regexp_compiler);
+
 #ifdef DEBUG
   if (FLAG_trace_regexp_assembler)
     macro_assembler_ = new RegExpMacroAssemblerTracer(macro_assembler);
   else
 #endif
     macro_assembler_ = macro_assembler;
+
   List <RegExpNode*> work_list(0);
   work_list_ = &work_list;
   Label fail;
@@ -877,7 +890,8 @@
   }
   if (reg_exp_too_big_) return IrregexpRegExpTooBig();
 
-  Handle<Object> code = macro_assembler_->GetCode(pattern);
+  Handle<HeapObject> code = macro_assembler_->GetCode(pattern);
+  heap->IncreaseTotalRegexpCodeGenerated(code->Size());
   work_list_ = NULL;
 #ifdef DEBUG
   if (FLAG_print_code) {
diff --git a/src/jsregexp.h b/src/jsregexp.h
index b9b2f60..d56b650 100644
--- a/src/jsregexp.h
+++ b/src/jsregexp.h
@@ -175,6 +175,14 @@
   static ByteArray* IrregexpByteCode(FixedArray* re, bool is_ascii);
   static Code* IrregexpNativeCode(FixedArray* re, bool is_ascii);
 
+  // Limit the space regexps take up on the heap.  In order to limit this we
+  // would like to keep track of the amount of regexp code on the heap.  This
+  // is not tracked, however.  As a conservative approximation we track the
+  // total regexp code compiled including code that has subsequently been freed
+  // and the total executable memory at any point.
+  static const int kRegExpExecutableMemoryLimit = 16 * MB;
+  static const int kRegWxpCompiledLimit = 1 * MB;
+
  private:
   static String* last_ascii_string_;
   static String* two_byte_cached_string_;
diff --git a/src/mark-compact.cc b/src/mark-compact.cc
index bd36459..68a5062 100644
--- a/src/mark-compact.cc
+++ b/src/mark-compact.cc
@@ -1077,6 +1077,12 @@
 
 
 void MarkCompactCollector::MarkMapContents(Map* map) {
+  // Mark prototype transitions array but don't push it into marking stack.
+  // This will make references from it weak. We will clean dead prototype
+  // transitions in ClearNonLiveTransitions.
+  FixedArray* prototype_transitions = map->unchecked_prototype_transitions();
+  if (!prototype_transitions->IsMarked()) SetMark(prototype_transitions);
+
   MarkDescriptorArray(reinterpret_cast<DescriptorArray*>(
       *HeapObject::RawField(map, Map::kInstanceDescriptorsOffset)));
 
@@ -1494,7 +1500,7 @@
 
 
 void MarkCompactCollector::ClearNonLiveTransitions() {
-  HeapObjectIterator map_iterator(heap() ->map_space(), &SizeOfMarkedObject);
+  HeapObjectIterator map_iterator(heap()->map_space(), &SizeOfMarkedObject);
   // Iterate over the map space, setting map transitions that go from
   // a marked map to an unmarked map to null transitions.  At the same time,
   // set all the prototype fields of maps back to their original value,
@@ -1522,6 +1528,41 @@
       map->unchecked_constructor()->unchecked_shared()->AttachInitialMap(map);
     }
 
+    // Clear dead prototype transitions.
+    FixedArray* prototype_transitions = map->unchecked_prototype_transitions();
+    if (prototype_transitions->length() > 0) {
+      int finger = Smi::cast(prototype_transitions->get(0))->value();
+      int new_finger = 1;
+      for (int i = 1; i < finger; i += 2) {
+        Object* prototype = prototype_transitions->get(i);
+        Object* cached_map = prototype_transitions->get(i + 1);
+        if (HeapObject::cast(prototype)->IsMarked() &&
+            HeapObject::cast(cached_map)->IsMarked()) {
+          if (new_finger != i) {
+            prototype_transitions->set_unchecked(heap_,
+                                                 new_finger,
+                                                 prototype,
+                                                 UPDATE_WRITE_BARRIER);
+            prototype_transitions->set_unchecked(heap_,
+                                                 new_finger + 1,
+                                                 cached_map,
+                                                 SKIP_WRITE_BARRIER);
+          }
+          new_finger += 2;
+        }
+      }
+
+      // Fill slots that became free with undefined value.
+      Object* undefined = heap()->raw_unchecked_undefined_value();
+      for (int i = new_finger; i < finger; i++) {
+        prototype_transitions->set_unchecked(heap_,
+                                             i,
+                                             undefined,
+                                             SKIP_WRITE_BARRIER);
+      }
+      prototype_transitions->set_unchecked(0, Smi::FromInt(new_finger));
+    }
+
     // Follow the chain of back pointers to find the prototype.
     Map* current = map;
     while (SafeIsMap(current)) {
diff --git a/src/messages.js b/src/messages.js
index e657fc0..d8810dc 100644
--- a/src/messages.js
+++ b/src/messages.js
@@ -212,7 +212,9 @@
       invalid_preparser_data:       ["Invalid preparser data for function ", "%0"],
       strict_mode_with:             ["Strict mode code may not include a with statement"],
       strict_catch_variable:        ["Catch variable may not be eval or arguments in strict mode"],
-      too_many_parameters:          ["Too many parameters in function definition"],
+      too_many_arguments:           ["Too many arguments in function call (only 32766 allowed)"],
+      too_many_parameters:          ["Too many parameters in function definition (only 32766 allowed)"],
+      too_many_variables:           ["Too many variables declared (only 32767 allowed)"],
       strict_param_name:            ["Parameter name eval or arguments is not allowed in strict mode"],
       strict_param_dupe:            ["Strict mode function may not have duplicate parameter names"],
       strict_var_name:              ["Variable name may not be eval or arguments in strict mode"],
diff --git a/src/mips/regexp-macro-assembler-mips.cc b/src/mips/regexp-macro-assembler-mips.cc
index d1dbc43..9f9e976 100644
--- a/src/mips/regexp-macro-assembler-mips.cc
+++ b/src/mips/regexp-macro-assembler-mips.cc
@@ -259,9 +259,9 @@
 }
 
 
-Handle<Object> RegExpMacroAssemblerMIPS::GetCode(Handle<String> source) {
+Handle<HeapObject> RegExpMacroAssemblerMIPS::GetCode(Handle<String> source) {
   UNIMPLEMENTED_MIPS();
-  return Handle<Object>::null();
+  return Handle<HeapObject>::null();
 }
 
 
diff --git a/src/mips/regexp-macro-assembler-mips.h b/src/mips/regexp-macro-assembler-mips.h
index 2f4319f..7310c9d 100644
--- a/src/mips/regexp-macro-assembler-mips.h
+++ b/src/mips/regexp-macro-assembler-mips.h
@@ -81,7 +81,7 @@
   virtual bool CheckSpecialCharacterClass(uc16 type,
                                           Label* on_no_match);
   virtual void Fail();
-  virtual Handle<Object> GetCode(Handle<String> source);
+  virtual Handle<HeapObject> GetCode(Handle<String> source);
   virtual void GoTo(Label* label);
   virtual void IfRegisterGE(int reg, int comparand, Label* if_ge);
   virtual void IfRegisterLT(int reg, int comparand, Label* if_lt);
diff --git a/src/natives.h b/src/natives.h
index 92f0d90..1df94b0 100644
--- a/src/natives.h
+++ b/src/natives.h
@@ -1,4 +1,4 @@
-// Copyright 2011 the V8 project authors. All rights reserved.
+// Copyright 2006-2008 the V8 project authors. All rights reserved.
 // Redistribution and use in source and binary forms, with or without
 // modification, are permitted provided that the following conditions are
 // met:
@@ -36,7 +36,7 @@
                                      int index);
 
 enum NativeType {
-  CORE, EXPERIMENTAL, D8, I18N
+  CORE, D8, I18N
 };
 
 template <NativeType type>
@@ -57,7 +57,6 @@
 };
 
 typedef NativesCollection<CORE> Natives;
-typedef NativesCollection<EXPERIMENTAL> ExperimentalNatives;
 
 } }  // namespace v8::internal
 
diff --git a/src/objects-inl.h b/src/objects-inl.h
index 823b2da..65aec5d 100644
--- a/src/objects-inl.h
+++ b/src/objects-inl.h
@@ -2515,6 +2515,12 @@
 }
 
 
+FixedArray* Map::unchecked_prototype_transitions() {
+  return reinterpret_cast<FixedArray*>(
+      READ_FIELD(this, kPrototypeTransitionsOffset));
+}
+
+
 Code::Flags Code::flags() {
   return static_cast<Flags>(READ_INT_FIELD(this, kFlagsOffset));
 }
@@ -2923,6 +2929,7 @@
 ACCESSORS(Map, instance_descriptors, DescriptorArray,
           kInstanceDescriptorsOffset)
 ACCESSORS(Map, code_cache, Object, kCodeCacheOffset)
+ACCESSORS(Map, prototype_transitions, FixedArray, kPrototypeTransitionsOffset)
 ACCESSORS(Map, constructor, Object, kConstructorOffset)
 
 ACCESSORS(JSFunction, shared, SharedFunctionInfo, kSharedFunctionInfoOffset)
diff --git a/src/objects.cc b/src/objects.cc
index 6ce4c44..a20548c 100644
--- a/src/objects.cc
+++ b/src/objects.cc
@@ -3713,39 +3713,68 @@
 
 
 void Map::TraverseTransitionTree(TraverseCallback callback, void* data) {
+  // Traverse the transition tree without using a stack.  We do this by
+  // reversing the pointers in the maps and descriptor arrays.
   Map* current = this;
   Map* meta_map = heap()->meta_map();
+  Object** map_or_index_field = NULL;
   while (current != meta_map) {
     DescriptorArray* d = reinterpret_cast<DescriptorArray*>(
         *RawField(current, Map::kInstanceDescriptorsOffset));
-    if (d == heap()->empty_descriptor_array()) {
-      Map* prev = current->map();
-      current->set_map(meta_map);
-      callback(current, data);
-      current = prev;
-      continue;
+    if (!d->IsEmpty()) {
+      FixedArray* contents = reinterpret_cast<FixedArray*>(
+          d->get(DescriptorArray::kContentArrayIndex));
+      map_or_index_field = RawField(contents, HeapObject::kMapOffset);
+      Object* map_or_index = *map_or_index_field;
+      bool map_done = true;  // Controls a nested continue statement.
+      for (int i = map_or_index->IsSmi() ? Smi::cast(map_or_index)->value() : 0;
+           i < contents->length();
+           i += 2) {
+        PropertyDetails details(Smi::cast(contents->get(i + 1)));
+        if (details.IsTransition()) {
+          // Found a map in the transition array.  We record our progress in
+          // the transition array by recording the current map in the map field
+          // of the next map and recording the index in the transition array in
+          // the map field of the array.
+          Map* next = Map::cast(contents->get(i));
+          next->set_map(current);
+          *map_or_index_field = Smi::FromInt(i + 2);
+          current = next;
+          map_done = false;
+          break;
+        }
+      }
+      if (!map_done) continue;
     }
-
-    FixedArray* contents = reinterpret_cast<FixedArray*>(
-        d->get(DescriptorArray::kContentArrayIndex));
-    Object** map_or_index_field = RawField(contents, HeapObject::kMapOffset);
-    Object* map_or_index = *map_or_index_field;
-    bool map_done = true;
-    for (int i = map_or_index->IsSmi() ? Smi::cast(map_or_index)->value() : 0;
-         i < contents->length();
-         i += 2) {
-      PropertyDetails details(Smi::cast(contents->get(i + 1)));
-      if (details.IsTransition()) {
-        Map* next = reinterpret_cast<Map*>(contents->get(i));
+    // That was the regular transitions, now for the prototype transitions.
+    FixedArray* prototype_transitions =
+        current->unchecked_prototype_transitions();
+    Object** proto_map_or_index_field =
+        RawField(prototype_transitions, HeapObject::kMapOffset);
+    Object* map_or_index = *proto_map_or_index_field;
+    const int start = 2;
+    int i = map_or_index->IsSmi() ? Smi::cast(map_or_index)->value() : start;
+    if (i < prototype_transitions->length()) {
+      // Found a map in the prototype transition array.  Record progress in
+      // an analogous way to the regular transitions array above.
+      Object* perhaps_map = prototype_transitions->get(i);
+      if (perhaps_map->IsMap()) {
+        Map* next = Map::cast(perhaps_map);
         next->set_map(current);
-        *map_or_index_field = Smi::FromInt(i + 2);
+        *proto_map_or_index_field =
+            Smi::FromInt(i + 2);
         current = next;
-        map_done = false;
-        break;
+        continue;
       }
     }
-    if (!map_done) continue;
-    *map_or_index_field = heap()->fixed_array_map();
+    *proto_map_or_index_field = heap()->fixed_array_map();
+    if (map_or_index_field != NULL) {
+      *map_or_index_field = heap()->fixed_array_map();
+    }
+
+    // The callback expects a map to have a real map as its map, so we save
+    // the map field, which is being used to track the traversal and put the
+    // correct map (the meta_map) in place while we do the callback.
     Map* prev = current->map();
     current->set_map(meta_map);
     callback(current, data);
@@ -6874,6 +6903,49 @@
 }
 
 
+Object* Map::GetPrototypeTransition(Object* prototype) {
+  FixedArray* cache = prototype_transitions();
+  int capacity = cache->length();
+  if (capacity == 0) return NULL;
+  int finger = Smi::cast(cache->get(0))->value();
+  for (int i = 1; i < finger; i += 2) {
+    if (cache->get(i) == prototype) return cache->get(i + 1);
+  }
+  return NULL;
+}
+
+
+MaybeObject* Map::PutPrototypeTransition(Object* prototype, Map* map) {
+  // Don't cache prototype transition if this map is shared.
+  if (is_shared() || !FLAG_cache_prototype_transitions) return this;
+
+  FixedArray* cache = prototype_transitions();
+
+  int capacity = cache->length();
+
+  int finger = (capacity == 0) ? 1 : Smi::cast(cache->get(0))->value();
+
+  if (finger >= capacity) {
+    if (capacity > kMaxCachedPrototypeTransitions) return this;
+
+    FixedArray* new_cache;
+    { MaybeObject* maybe_cache = heap()->AllocateFixedArray(finger * 2 + 1);
+      if (!maybe_cache->To<FixedArray>(&new_cache)) return maybe_cache;
+    }
+
+    for (int i = 1; i < capacity; i++) new_cache->set(i, cache->get(i));
+    cache = new_cache;
+    set_prototype_transitions(cache);
+  }
+
+  cache->set(finger, prototype);
+  cache->set(finger + 1, map);
+  cache->set(0, Smi::FromInt(finger + 2));
+
+  return cache;
+}
+
+
 MaybeObject* JSObject::SetPrototype(Object* value,
                                     bool skip_hidden_prototypes) {
   Heap* heap = GetHeap();
@@ -6924,11 +6996,25 @@
   }
 
   // Set the new prototype of the object.
-  Object* new_map;
-  { MaybeObject* maybe_new_map = real_receiver->map()->CopyDropTransitions();
-    if (!maybe_new_map->ToObject(&new_map)) return maybe_new_map;
+  Map* map = real_receiver->map();
+
+  // Nothing to do if prototype is already set.
+  if (map->prototype() == value) return value;
+
+  Object* new_map = map->GetPrototypeTransition(value);
+  if (new_map == NULL) {
+    { MaybeObject* maybe_new_map = map->CopyDropTransitions();
+      if (!maybe_new_map->ToObject(&new_map)) return maybe_new_map;
+    }
+
+    { MaybeObject* maybe_new_cache =
+          map->PutPrototypeTransition(value, Map::cast(new_map));
+      if (maybe_new_cache->IsFailure()) return maybe_new_cache;
+    }
+
+    Map::cast(new_map)->set_prototype(value);
   }
-  Map::cast(new_map)->set_prototype(value);
+  ASSERT(Map::cast(new_map)->prototype() == value);
   real_receiver->set_map(Map::cast(new_map));
 
   heap->ClearInstanceofCache();
diff --git a/src/objects.h b/src/objects.h
index 03445e8..e966b3d 100644
--- a/src/objects.h
+++ b/src/objects.h
@@ -613,6 +613,7 @@
 
 class StringStream;
 class ObjectVisitor;
+class Failure;
 
 struct ValueInfo : public Malloced {
   ValueInfo() : type(FIRST_TYPE), ptr(NULL), str(NULL), number(0) { }
@@ -639,6 +640,10 @@
     *obj = reinterpret_cast<Object*>(this);
     return true;
   }
+  inline Failure* ToFailureUnchecked() {
+    ASSERT(IsFailure());
+    return reinterpret_cast<Failure*>(this);
+  }
   inline Object* ToObjectUnchecked() {
     ASSERT(!IsFailure());
     return reinterpret_cast<Object*>(this);
@@ -648,6 +653,13 @@
     return reinterpret_cast<Object*>(this);
   }
 
+  template<typename T>
+  inline bool To(T** obj) {
+    if (IsFailure()) return false;
+    *obj = T::cast(reinterpret_cast<Object*>(this));
+    return true;
+  }
+
 #ifdef OBJECT_PRINT
   // Prints this object with details.
   inline void Print() {
@@ -3712,6 +3724,16 @@
   // [stub cache]: contains stubs compiled for this map.
   DECL_ACCESSORS(code_cache, Object)
 
+  // [prototype transitions]: cache of prototype transitions.
+  // Prototype transition is a transition that happens
+  // when we change object's prototype to a new one.
+  // Cache format:
+  //    0: finger - index of the first free cell in the cache
+  //    1 + 2 * i: prototype
+  //    2 + 2 * i: target map
+  DECL_ACCESSORS(prototype_transitions, FixedArray)
+  inline FixedArray* unchecked_prototype_transitions();
+
   // Lookup in the map's instance descriptors and fill out the result
   // with the given holder if the name is found. The holder may be
   // NULL when this function is used from the compiler.
@@ -3811,6 +3833,12 @@
 
   void TraverseTransitionTree(TraverseCallback callback, void* data);
 
+  static const int kMaxCachedPrototypeTransitions = 256;
+
+  Object* GetPrototypeTransition(Object* prototype);
+
+  MaybeObject* PutPrototypeTransition(Object* prototype, Map* map);
+
   static const int kMaxPreAllocatedPropertyFields = 255;
 
   // Layout description.
@@ -3821,14 +3849,16 @@
   static const int kInstanceDescriptorsOffset =
       kConstructorOffset + kPointerSize;
   static const int kCodeCacheOffset = kInstanceDescriptorsOffset + kPointerSize;
-  static const int kPadStart = kCodeCacheOffset + kPointerSize;
+  static const int kPrototypeTransitionsOffset =
+      kCodeCacheOffset + kPointerSize;
+  static const int kPadStart = kPrototypeTransitionsOffset + kPointerSize;
   static const int kSize = MAP_POINTER_ALIGN(kPadStart);
 
   // Layout of pointer fields. Heap iteration code relies on them
   // being continiously allocated.
   static const int kPointerFieldsBeginOffset = Map::kPrototypeOffset;
   static const int kPointerFieldsEndOffset =
-      Map::kCodeCacheOffset + kPointerSize;
+      Map::kPrototypeTransitionsOffset + kPointerSize;
 
   // Byte offsets within kInstanceSizesOffset.
   static const int kInstanceSizeOffset = kInstanceSizesOffset + 0;
diff --git a/src/parser.cc b/src/parser.cc
index cf84bfa..266f77d 100644
--- a/src/parser.cc
+++ b/src/parser.cc
@@ -1308,7 +1308,7 @@
     var = top_scope_->LocalLookup(name);
     if (var == NULL) {
       // Declare the name.
-      var = top_scope_->DeclareLocal(name, mode);
+      var = top_scope_->DeclareLocal(name, mode, Scope::VAR_OR_CONST);
     } else {
       // The name was declared before; check for conflicting
       // re-declarations. If the previous declaration was a const or the
@@ -1580,6 +1580,12 @@
                        is_const /* always bound for CONST! */,
                        CHECK_OK);
     nvars++;
+    if (top_scope_->num_var_or_const() > kMaxNumFunctionLocals) {
+      ReportMessageAt(scanner().location(), "too_many_variables",
+                      Vector<const char*>::empty());
+      *ok = false;
+      return NULL;
+    }
 
     // Parse initialization expression if present and/or needed. A
     // declaration of the form:
@@ -3495,6 +3501,12 @@
   while (!done) {
     Expression* argument = ParseAssignmentExpression(true, CHECK_OK);
     result->Add(argument);
+    if (result->length() > kMaxNumFunctionParameters) {
+      ReportMessageAt(scanner().location(), "too_many_arguments",
+                      Vector<const char*>::empty());
+      *ok = false;
+      return NULL;
+    }
     done = (peek() == Token::RPAREN);
     if (!done) Expect(Token::COMMA, CHECK_OK);
   }
@@ -3562,7 +3574,9 @@
         reserved_loc = scanner().location();
       }
 
-      Variable* parameter = top_scope_->DeclareLocal(param_name, Variable::VAR);
+      Variable* parameter = top_scope_->DeclareLocal(param_name,
+                                                     Variable::VAR,
+                                                     Scope::PARAMETER);
       top_scope_->AddParameter(parameter);
       num_parameters++;
       if (num_parameters > kMaxNumFunctionParameters) {
diff --git a/src/parser.h b/src/parser.h
index a63651a..64f1303 100644
--- a/src/parser.h
+++ b/src/parser.h
@@ -448,6 +448,7 @@
   // construct a hashable id, so if more than 2^17 are allowed, this
   // should be checked.
   static const int kMaxNumFunctionParameters = 32766;
+  static const int kMaxNumFunctionLocals = 32767;
   FunctionLiteral* ParseLazy(CompilationInfo* info,
                              UC16CharacterStream* source,
                              ZoneScope* zone_scope);
diff --git a/src/platform-linux.cc b/src/platform-linux.cc
index 1ecd8fc..c60658f 100644
--- a/src/platform-linux.cc
+++ b/src/platform-linux.cc
@@ -922,19 +922,28 @@
         vm_tgid_(getpid()),
         interval_(interval) {}
 
+  static void InstallSignalHandler() {
+    struct sigaction sa;
+    sa.sa_sigaction = ProfilerSignalHandler;
+    sigemptyset(&sa.sa_mask);
+    sa.sa_flags = SA_RESTART | SA_SIGINFO;
+    signal_handler_installed_ =
+        (sigaction(SIGPROF, &sa, &old_signal_handler_) == 0);
+  }
+
+  static void RestoreSignalHandler() {
+    if (signal_handler_installed_) {
+      sigaction(SIGPROF, &old_signal_handler_, 0);
+      signal_handler_installed_ = false;
+    }
+  }
+
   static void AddActiveSampler(Sampler* sampler) {
     ScopedLock lock(mutex_);
     SamplerRegistry::AddActiveSampler(sampler);
     if (instance_ == NULL) {
-      // Install a signal handler.
-      struct sigaction sa;
-      sa.sa_sigaction = ProfilerSignalHandler;
-      sigemptyset(&sa.sa_mask);
-      sa.sa_flags = SA_RESTART | SA_SIGINFO;
-      signal_handler_installed_ =
-          (sigaction(SIGPROF, &sa, &old_signal_handler_) == 0);
-
-      // Start a thread that sends SIGPROF signal to VM threads.
+      // Start a thread that will send SIGPROF signal to VM threads,
+      // when CPU profiling will be enabled.
       instance_ = new SignalSender(sampler->interval());
       instance_->Start();
     } else {
@@ -950,12 +959,7 @@
       instance_->Join();
       delete instance_;
       instance_ = NULL;
-
-      // Restore the old signal handler.
-      if (signal_handler_installed_) {
-        sigaction(SIGPROF, &old_signal_handler_, 0);
-        signal_handler_installed_ = false;
-      }
+      RestoreSignalHandler();
     }
   }
 
@@ -967,6 +971,10 @@
       bool cpu_profiling_enabled =
           (state == SamplerRegistry::HAS_CPU_PROFILING_SAMPLERS);
       bool runtime_profiler_enabled = RuntimeProfiler::IsEnabled();
+      if (cpu_profiling_enabled && !signal_handler_installed_)
+        InstallSignalHandler();
+      else if (!cpu_profiling_enabled && signal_handler_installed_)
+        RestoreSignalHandler();
       // When CPU profiling is enabled both JavaScript and C++ code is
       // profiled. We must not suspend.
       if (!cpu_profiling_enabled) {
diff --git a/src/regexp-macro-assembler-irregexp.cc b/src/regexp-macro-assembler-irregexp.cc
index d41a97c..322efa1 100644
--- a/src/regexp-macro-assembler-irregexp.cc
+++ b/src/regexp-macro-assembler-irregexp.cc
@@ -435,7 +435,8 @@
 }
 
 
-Handle<Object> RegExpMacroAssemblerIrregexp::GetCode(Handle<String> source) {
+Handle<HeapObject> RegExpMacroAssemblerIrregexp::GetCode(
+    Handle<String> source) {
   Bind(&backtrack_);
   Emit(BC_POP_BT, 0);
   Handle<ByteArray> array = FACTORY->NewByteArray(length());
diff --git a/src/regexp-macro-assembler-irregexp.h b/src/regexp-macro-assembler-irregexp.h
index 9deea86..75cf8bf 100644
--- a/src/regexp-macro-assembler-irregexp.h
+++ b/src/regexp-macro-assembler-irregexp.h
@@ -106,7 +106,7 @@
   virtual void IfRegisterEqPos(int register_index, Label* if_eq);
 
   virtual IrregexpImplementation Implementation();
-  virtual Handle<Object> GetCode(Handle<String> source);
+  virtual Handle<HeapObject> GetCode(Handle<String> source);
  private:
   void Expand();
   // Code and bitmap emission.
diff --git a/src/regexp-macro-assembler-tracer.cc b/src/regexp-macro-assembler-tracer.cc
index fa2c657..b32d71d 100644
--- a/src/regexp-macro-assembler-tracer.cc
+++ b/src/regexp-macro-assembler-tracer.cc
@@ -365,7 +365,7 @@
 }
 
 
-Handle<Object> RegExpMacroAssemblerTracer::GetCode(Handle<String> source) {
+Handle<HeapObject> RegExpMacroAssemblerTracer::GetCode(Handle<String> source) {
   PrintF(" GetCode(%s);\n", *(source->ToCString()));
   return assembler_->GetCode(source);
 }
diff --git a/src/regexp-macro-assembler-tracer.h b/src/regexp-macro-assembler-tracer.h
index 1fb6d54..8c6cf3a 100644
--- a/src/regexp-macro-assembler-tracer.h
+++ b/src/regexp-macro-assembler-tracer.h
@@ -71,7 +71,7 @@
   virtual bool CheckSpecialCharacterClass(uc16 type,
                                           Label* on_no_match);
   virtual void Fail();
-  virtual Handle<Object> GetCode(Handle<String> source);
+  virtual Handle<HeapObject> GetCode(Handle<String> source);
   virtual void GoTo(Label* label);
   virtual void IfRegisterGE(int reg, int comparand, Label* if_ge);
   virtual void IfRegisterLT(int reg, int comparand, Label* if_lt);
diff --git a/src/regexp-macro-assembler.cc b/src/regexp-macro-assembler.cc
index ea41db6..5578243 100644
--- a/src/regexp-macro-assembler.cc
+++ b/src/regexp-macro-assembler.cc
@@ -35,7 +35,7 @@
 namespace v8 {
 namespace internal {
 
-RegExpMacroAssembler::RegExpMacroAssembler() {
+RegExpMacroAssembler::RegExpMacroAssembler() : slow_safe_compiler_(false) {
 }
 
 
@@ -54,7 +54,8 @@
 
 #ifndef V8_INTERPRETED_REGEXP  // Avoid unused code, e.g., on ARM.
 
-NativeRegExpMacroAssembler::NativeRegExpMacroAssembler() {
+NativeRegExpMacroAssembler::NativeRegExpMacroAssembler()
+    : RegExpMacroAssembler() {
 }
 
 
@@ -64,7 +65,7 @@
 
 bool NativeRegExpMacroAssembler::CanReadUnaligned() {
 #ifdef V8_TARGET_CAN_READ_UNALIGNED
-  return true;
+  return !slow_safe();
 #else
   return false;
 #endif
diff --git a/src/regexp-macro-assembler.h b/src/regexp-macro-assembler.h
index 1268e78..0314c70 100644
--- a/src/regexp-macro-assembler.h
+++ b/src/regexp-macro-assembler.h
@@ -130,7 +130,7 @@
     return false;
   }
   virtual void Fail() = 0;
-  virtual Handle<Object> GetCode(Handle<String> source) = 0;
+  virtual Handle<HeapObject> GetCode(Handle<String> source) = 0;
   virtual void GoTo(Label* label) = 0;
   // Check whether a register is >= a given constant and go to a label if it
   // is.  Backtracks instead if the label is NULL.
@@ -162,6 +162,13 @@
   virtual void WriteCurrentPositionToRegister(int reg, int cp_offset) = 0;
   virtual void ClearRegisters(int reg_from, int reg_to) = 0;
   virtual void WriteStackPointerToRegister(int reg) = 0;
+
+  // Controls the generation of large inlined constants in the code.
+  void set_slow_safe(bool ssc) { slow_safe_compiler_ = ssc; }
+  bool slow_safe() { return slow_safe_compiler_; }
+
+ private:
+  bool slow_safe_compiler_;
 };
 
 
diff --git a/src/runtime-profiler.cc b/src/runtime-profiler.cc
index 8d258ac..97f0341 100644
--- a/src/runtime-profiler.cc
+++ b/src/runtime-profiler.cc
@@ -1,4 +1,4 @@
-// Copyright 2011 the V8 project authors. All rights reserved.
+// Copyright 2010 the V8 project authors. All rights reserved.
 // Redistribution and use in source and binary forms, with or without
 // modification, are permitted provided that the following conditions are
 // met:
@@ -153,7 +153,6 @@
   if (FLAG_trace_opt) {
     PrintF("[marking (%s) ", eager ? "eagerly" : "lazily");
     function->PrintName();
-    PrintF(" 0x%" V8PRIxPTR, reinterpret_cast<intptr_t>(function->address()));
     PrintF(" for recompilation");
     if (delay > 0) {
       PrintF(" (delayed %0.3f ms)", static_cast<double>(delay) / 1000);
diff --git a/src/runtime.cc b/src/runtime.cc
index 53c048e..7335da8 100644
--- a/src/runtime.cc
+++ b/src/runtime.cc
@@ -2713,7 +2713,7 @@
     end = RegExpImpl::GetCapture(match_info_array, 1);
   }
 
-  int length = subject->length();
+  int length = subject_handle->length();
   int new_length = length - (end - start);
   if (new_length == 0) {
     return isolate->heap()->empty_string();
@@ -6597,16 +6597,9 @@
   int exponent = number->get_exponent();
   int sign = number->get_sign();
 
-  if (exponent < -1) {
-    // Number in range ]-0.5..0.5[. These always round to +/-zero.
-    if (sign) return isolate->heap()->minus_zero_value();
-    return Smi::FromInt(0);
-  }
-
-  // We compare with kSmiValueSize - 2 because (2^30 - 0.1) has exponent 29 and
-  // should be rounded to 2^30, which is not smi (for 31-bit smis, similar
-  // agument holds for 32-bit smis).
-  if (!sign && exponent < kSmiValueSize - 2) {
+  // We compare with kSmiValueSize - 3 because (2^30 - 0.1) has exponent 29 and
+  // should be rounded to 2^30, which is not smi.
+  if (!sign && exponent <= kSmiValueSize - 3) {
     return Smi::FromInt(static_cast<int>(value + 0.5));
   }
 
@@ -10485,7 +10478,7 @@
   // Recursively copy the with contexts.
   Handle<Context> previous(context_chain->previous());
   Handle<JSObject> extension(JSObject::cast(context_chain->extension()));
-  Handle<Context> context = CopyWithContextChain(previous, function_context);
+  Handle<Context> context = CopyWithContextChain(function_context, previous);
   return context->GetIsolate()->factory()->NewWithContext(
       context, extension, context_chain->IsCatchContext());
 }
diff --git a/src/scopes.cc b/src/scopes.cc
index 7d9bce5..8df93c5 100644
--- a/src/scopes.cc
+++ b/src/scopes.cc
@@ -202,6 +202,7 @@
   inner_scope_calls_eval_ = false;
   outer_scope_is_eval_scope_ = false;
   force_eager_compilation_ = false;
+  num_var_or_const_ = 0;
   num_stack_slots_ = 0;
   num_heap_slots_ = 0;
   scope_info_ = scope_info;
@@ -364,12 +365,17 @@
 }
 
 
-Variable* Scope::DeclareLocal(Handle<String> name, Variable::Mode mode) {
+Variable* Scope::DeclareLocal(Handle<String> name,
+                              Variable::Mode mode,
+                              LocalType type) {
   // DYNAMIC variables are introduces during variable allocation,
   // INTERNAL variables are allocated explicitly, and TEMPORARY
   // variables are allocated via NewTemporary().
   ASSERT(!resolved());
   ASSERT(mode == Variable::VAR || mode == Variable::CONST);
+  if (type == VAR_OR_CONST) {
+    num_var_or_const_++;
+  }
   return variables_.Declare(this, name, mode, true, Variable::NORMAL);
 }
 
diff --git a/src/scopes.h b/src/scopes.h
index 18db0cd..a0e56a4 100644
--- a/src/scopes.h
+++ b/src/scopes.h
@@ -95,6 +95,11 @@
     GLOBAL_SCOPE    // the top-level scope for a program or a top-level eval
   };
 
+  enum LocalType {
+    PARAMETER,
+    VAR_OR_CONST
+  };
+
   Scope(Scope* outer_scope, Type type);
 
   virtual ~Scope() { }
@@ -134,7 +139,9 @@
 
   // Declare a local variable in this scope. If the variable has been
   // declared before, the previously declared variable is returned.
-  virtual Variable* DeclareLocal(Handle<String> name, Variable::Mode mode);
+  virtual Variable* DeclareLocal(Handle<String> name,
+                                 Variable::Mode mode,
+                                 LocalType type);
 
   // Declare an implicit global variable in this scope which must be a
   // global scope.  The variable was introduced (possibly from an inner
@@ -282,6 +289,9 @@
   // cases the context parameter is an empty handle.
   void AllocateVariables(Handle<Context> context);
 
+  // Current number of var or const locals.
+  int num_var_or_const() { return num_var_or_const_; }
+
   // Result of variable allocation.
   int num_stack_slots() const { return num_stack_slots_; }
   int num_heap_slots() const { return num_heap_slots_; }
@@ -373,6 +383,9 @@
   bool outer_scope_is_eval_scope_;
   bool force_eager_compilation_;
 
+  // Computed as variables are declared.
+  int num_var_or_const_;
+
   // Computed via AllocateVariables; function scopes only.
   int num_stack_slots_;
   int num_heap_slots_;
diff --git a/src/top.cc b/src/top.cc
index a8dba71..842d269 100644
--- a/src/top.cc
+++ b/src/top.cc
@@ -1,4 +1,4 @@
-// Copyright 2006-2008 the V8 project authors. All rights reserved.
+// Copyright 2011 the V8 project authors. All rights reserved.
 // Redistribution and use in source and binary forms, with or without
 // modification, are permitted provided that the following conditions are
 // met:
@@ -572,6 +572,7 @@
 
   // Set the exception being re-thrown.
   set_pending_exception(exception);
+  if (exception->IsFailure()) return exception->ToFailureUnchecked();
   return Failure::Exception();
 }
 
diff --git a/src/type-info.cc b/src/type-info.cc
index 1940601..4069c83 100644
--- a/src/type-info.cc
+++ b/src/type-info.cc
@@ -275,8 +275,6 @@
         return TypeInfo::Integer32();
       case TRBinaryOpIC::HEAP_NUMBER:
         return TypeInfo::Double();
-      case TRBinaryOpIC::BOTH_STRING:
-        return TypeInfo::String();
       case TRBinaryOpIC::STRING:
       case TRBinaryOpIC::GENERIC:
         return unknown;
diff --git a/src/v8natives.js b/src/v8natives.js
index 4fcf0ac..429cea5 100644
--- a/src/v8natives.js
+++ b/src/v8natives.js
@@ -147,17 +147,6 @@
 }
 
 
-// execScript for IE compatibility.
-function GlobalExecScript(expr, lang) {
-  // NOTE: We don't care about the character casing.
-  if (!lang || /javascript/i.test(lang)) {
-    var f = %CompileString(ToString(expr));
-    %_CallFunction(%GlobalReceiver(global), f);
-  }
-  return null;
-}
-
-
 // ----------------------------------------------------------------------------
 
 
@@ -177,8 +166,7 @@
     "isFinite", GlobalIsFinite,
     "parseInt", GlobalParseInt,
     "parseFloat", GlobalParseFloat,
-    "eval", GlobalEval,
-    "execScript", GlobalExecScript
+    "eval", GlobalEval
   ));
 }
 
diff --git a/src/version.cc b/src/version.cc
index 25939c2..71a07db 100644
--- a/src/version.cc
+++ b/src/version.cc
@@ -33,9 +33,9 @@
 // NOTE these macros are used by the SCons build script so their names
 // cannot be changed without changing the SCons build script.
 #define MAJOR_VERSION     3
-#define MINOR_VERSION     3
-#define BUILD_NUMBER      0
-#define PATCH_LEVEL       1
+#define MINOR_VERSION     2
+#define BUILD_NUMBER      10
+#define PATCH_LEVEL       16
 // Use 1 for candidates and 0 otherwise.
 // (Boolean macro values are not supported by all preprocessors.)
 #define IS_CANDIDATE_VERSION 0
diff --git a/src/x64/assembler-x64.cc b/src/x64/assembler-x64.cc
index c06bc0c..6e4f005 100644
--- a/src/x64/assembler-x64.cc
+++ b/src/x64/assembler-x64.cc
@@ -1328,7 +1328,7 @@
 void Assembler::jmp(NearLabel* L) {
   EnsureSpace ensure_space(this);
   if (L->is_bound()) {
-    const int short_size = sizeof(int8_t);
+    const int short_size = 2;
     int offs = L->pos() - pc_offset();
     ASSERT(offs <= 0);
     ASSERT(is_int8(offs - short_size));
@@ -2540,24 +2540,6 @@
 }
 
 
-void Assembler::movq(XMMRegister dst, XMMRegister src) {
-  EnsureSpace ensure_space(this);
-  if (dst.low_bits() == 4) {
-    // Avoid unnecessary SIB byte.
-    emit(0xf3);
-    emit_optional_rex_32(dst, src);
-    emit(0x0F);
-    emit(0x7e);
-    emit_sse_operand(dst, src);
-  } else {
-    emit(0x66);
-    emit_optional_rex_32(src, dst);
-    emit(0x0F);
-    emit(0xD6);
-    emit_sse_operand(src, dst);
-  }
-}
-
 void Assembler::movdqa(const Operand& dst, XMMRegister src) {
   EnsureSpace ensure_space(this);
   emit(0x66);
@@ -2621,42 +2603,6 @@
 }
 
 
-void Assembler::movaps(XMMRegister dst, XMMRegister src) {
-  EnsureSpace ensure_space(this);
-  if (src.low_bits() == 4) {
-    // Try to avoid an unnecessary SIB byte.
-    emit_optional_rex_32(src, dst);
-    emit(0x0F);
-    emit(0x29);
-    emit_sse_operand(src, dst);
-  } else {
-    emit_optional_rex_32(dst, src);
-    emit(0x0F);
-    emit(0x28);
-    emit_sse_operand(dst, src);
-  }
-}
-
-
-void Assembler::movapd(XMMRegister dst, XMMRegister src) {
-  EnsureSpace ensure_space(this);
-  if (src.low_bits() == 4) {
-    // Try to avoid an unnecessary SIB byte.
-    emit(0x66);
-    emit_optional_rex_32(src, dst);
-    emit(0x0F);
-    emit(0x29);
-    emit_sse_operand(src, dst);
-  } else {
-    emit(0x66);
-    emit_optional_rex_32(dst, src);
-    emit(0x0F);
-    emit(0x28);
-    emit_sse_operand(dst, src);
-  }
-}
-
-
 void Assembler::movss(XMMRegister dst, const Operand& src) {
   EnsureSpace ensure_space(this);
   emit(0xF3);  // single
@@ -2887,15 +2833,6 @@
 }
 
 
-void Assembler::xorps(XMMRegister dst, XMMRegister src) {
-  EnsureSpace ensure_space(this);
-  emit_optional_rex_32(dst, src);
-  emit(0x0F);
-  emit(0x57);
-  emit_sse_operand(dst, src);
-}
-
-
 void Assembler::sqrtsd(XMMRegister dst, XMMRegister src) {
   EnsureSpace ensure_space(this);
   emit(0xF2);
@@ -2926,21 +2863,6 @@
 }
 
 
-void Assembler::roundsd(XMMRegister dst, XMMRegister src,
-                        Assembler::RoundingMode mode) {
-  ASSERT(CpuFeatures::IsEnabled(SSE4_1));
-  EnsureSpace ensure_space(this);
-  emit(0x66);
-  emit_optional_rex_32(dst, src);
-  emit(0x0f);
-  emit(0x3a);
-  emit(0x0b);
-  emit_sse_operand(dst, src);
-  // Mask precision exeption.
-  emit(static_cast<byte>(mode) | 0x8);
-}
-
-
 void Assembler::movmskpd(Register dst, XMMRegister src) {
   EnsureSpace ensure_space(this);
   emit(0x66);
diff --git a/src/x64/assembler-x64.h b/src/x64/assembler-x64.h
index 8a9938b..9453277 100644
--- a/src/x64/assembler-x64.h
+++ b/src/x64/assembler-x64.h
@@ -1291,24 +1291,15 @@
   void movd(Register dst, XMMRegister src);
   void movq(XMMRegister dst, Register src);
   void movq(Register dst, XMMRegister src);
-  void movq(XMMRegister dst, XMMRegister src);
   void extractps(Register dst, XMMRegister src, byte imm8);
 
-  // Don't use this unless it's important to keep the
-  // top half of the destination register unchanged.
-  // Used movaps when moving double values and movq for integer
-  // values in xmm registers.
-  void movsd(XMMRegister dst, XMMRegister src);
-
   void movsd(const Operand& dst, XMMRegister src);
+  void movsd(XMMRegister dst, XMMRegister src);
   void movsd(XMMRegister dst, const Operand& src);
 
   void movdqa(const Operand& dst, XMMRegister src);
   void movdqa(XMMRegister dst, const Operand& src);
 
-  void movapd(XMMRegister dst, XMMRegister src);
-  void movaps(XMMRegister dst, XMMRegister src);
-
   void movss(XMMRegister dst, const Operand& src);
   void movss(const Operand& dst, XMMRegister src);
 
@@ -1340,21 +1331,11 @@
   void andpd(XMMRegister dst, XMMRegister src);
   void orpd(XMMRegister dst, XMMRegister src);
   void xorpd(XMMRegister dst, XMMRegister src);
-  void xorps(XMMRegister dst, XMMRegister src);
   void sqrtsd(XMMRegister dst, XMMRegister src);
 
   void ucomisd(XMMRegister dst, XMMRegister src);
   void ucomisd(XMMRegister dst, const Operand& src);
 
-  enum RoundingMode {
-    kRoundToNearest = 0x0,
-    kRoundDown      = 0x1,
-    kRoundUp        = 0x2,
-    kRoundToZero    = 0x3
-  };
-
-  void roundsd(XMMRegister dst, XMMRegister src, RoundingMode mode);
-
   void movmskpd(Register dst, XMMRegister src);
 
   // The first argument is the reg field, the second argument is the r/m field.
diff --git a/src/x64/code-stubs-x64.cc b/src/x64/code-stubs-x64.cc
index 76fcc88..c365385 100644
--- a/src/x64/code-stubs-x64.cc
+++ b/src/x64/code-stubs-x64.cc
@@ -266,7 +266,7 @@
   __ j(not_equal, &true_result);
   // HeapNumber => false iff +0, -0, or NaN.
   // These three cases set the zero flag when compared to zero using ucomisd.
-  __ xorps(xmm0, xmm0);
+  __ xorpd(xmm0, xmm0);
   __ ucomisd(xmm0, FieldOperand(rax, HeapNumber::kValueOffset));
   __ j(zero, &false_result);
   // Fall through to |true_result|.
@@ -372,9 +372,6 @@
     case TRBinaryOpIC::ODDBALL:
       GenerateOddballStub(masm);
       break;
-    case TRBinaryOpIC::BOTH_STRING:
-      GenerateBothStringStub(masm);
-      break;
     case TRBinaryOpIC::STRING:
       GenerateStringStub(masm);
       break;
@@ -633,7 +630,7 @@
         // already loaded heap_number_map.
         __ AllocateInNewSpace(HeapNumber::kSize,
                               rax,
-                              rcx,
+                              rdx,
                               no_reg,
                               &allocation_failed,
                               TAG_OBJECT);
@@ -653,7 +650,7 @@
         // We need tagged values in rdx and rax for the following code,
         // not int32 in rax and rcx.
         __ Integer32ToSmi(rax, rcx);
-        __ Integer32ToSmi(rdx, rax);
+        __ Integer32ToSmi(rdx, rbx);
         __ jmp(allocation_failure);
       }
       break;
@@ -774,36 +771,6 @@
 }
 
 
-void TypeRecordingBinaryOpStub::GenerateBothStringStub(MacroAssembler* masm) {
-  Label call_runtime;
-  ASSERT(operands_type_ == TRBinaryOpIC::BOTH_STRING);
-  ASSERT(op_ == Token::ADD);
-  // If both arguments are strings, call the string add stub.
-  // Otherwise, do a transition.
-
-  // Registers containing left and right operands respectively.
-  Register left = rdx;
-  Register right = rax;
-
-  // Test if left operand is a string.
-  __ JumpIfSmi(left, &call_runtime);
-  __ CmpObjectType(left, FIRST_NONSTRING_TYPE, rcx);
-  __ j(above_equal, &call_runtime);
-
-  // Test if right operand is a string.
-  __ JumpIfSmi(right, &call_runtime);
-  __ CmpObjectType(right, FIRST_NONSTRING_TYPE, rcx);
-  __ j(above_equal, &call_runtime);
-
-  StringAddStub string_add_stub(NO_STRING_CHECK_IN_STUB);
-  GenerateRegisterArgsPush(masm);
-  __ TailCallStub(&string_add_stub);
-
-  __ bind(&call_runtime);
-  GenerateTypeTransition(masm);
-}
-
-
 void TypeRecordingBinaryOpStub::GenerateOddballStub(MacroAssembler* masm) {
   Label call_runtime;
 
@@ -1602,7 +1569,7 @@
   __ bind(&no_neg);
 
   // Load xmm1 with 1.
-  __ movaps(xmm1, xmm3);
+  __ movsd(xmm1, xmm3);
   NearLabel while_true;
   NearLabel no_multiply;
 
@@ -1620,8 +1587,8 @@
   __ j(positive, &allocate_return);
   // Special case if xmm1 has reached infinity.
   __ divsd(xmm3, xmm1);
-  __ movaps(xmm1, xmm3);
-  __ xorps(xmm0, xmm0);
+  __ movsd(xmm1, xmm3);
+  __ xorpd(xmm0, xmm0);
   __ ucomisd(xmm0, xmm1);
   __ j(equal, &call_runtime);
 
@@ -1669,11 +1636,11 @@
 
   // Calculates reciprocal of square root.
   // sqrtsd returns -0 when input is -0.  ECMA spec requires +0.
-  __ xorps(xmm1, xmm1);
+  __ xorpd(xmm1, xmm1);
   __ addsd(xmm1, xmm0);
   __ sqrtsd(xmm1, xmm1);
   __ divsd(xmm3, xmm1);
-  __ movaps(xmm1, xmm3);
+  __ movsd(xmm1, xmm3);
   __ jmp(&allocate_return);
 
   // Test for 0.5.
@@ -1686,8 +1653,8 @@
   __ j(not_equal, &call_runtime);
   // Calculates square root.
   // sqrtsd returns -0 when input is -0.  ECMA spec requires +0.
-  __ xorps(xmm1, xmm1);
-  __ addsd(xmm1, xmm0);  // Convert -0 to 0.
+  __ xorpd(xmm1, xmm1);
+  __ addsd(xmm1, xmm0);
   __ sqrtsd(xmm1, xmm1);
 
   __ bind(&allocate_return);
@@ -2363,10 +2330,9 @@
   // Heap::GetNumberStringCache.
   Label is_smi;
   Label load_result_from_cache;
-  Factory* factory = masm->isolate()->factory();
   if (!object_is_smi) {
     __ JumpIfSmi(object, &is_smi);
-    __ CheckMap(object, factory->heap_number_map(), not_found, true);
+    __ CheckMap(object, FACTORY->heap_number_map(), not_found, true);
 
     STATIC_ASSERT(8 == kDoubleSize);
     __ movl(scratch, FieldOperand(object, HeapNumber::kValueOffset + 4));
@@ -2453,7 +2419,6 @@
   ASSERT(lhs_.is(no_reg) && rhs_.is(no_reg));
 
   Label check_unequal_objects, done;
-  Factory* factory = masm->isolate()->factory();
 
   // Compare two smis if required.
   if (include_smi_compare_) {
@@ -2501,6 +2466,7 @@
     // Note: if cc_ != equal, never_nan_nan_ is not used.
     // We cannot set rax to EQUAL until just before return because
     // rax must be unchanged on jump to not_identical.
+
     if (never_nan_nan_ && (cc_ == equal)) {
       __ Set(rax, EQUAL);
       __ ret(0);
@@ -2508,7 +2474,7 @@
       NearLabel heap_number;
       // If it's not a heap number, then return equal for (in)equality operator.
       __ Cmp(FieldOperand(rdx, HeapObject::kMapOffset),
-             factory->heap_number_map());
+             FACTORY->heap_number_map());
       __ j(equal, &heap_number);
       if (cc_ != equal) {
         // Call runtime on identical JSObjects.  Otherwise return equal.
@@ -2553,7 +2519,7 @@
 
         // Check if the non-smi operand is a heap number.
         __ Cmp(FieldOperand(rbx, HeapObject::kMapOffset),
-               factory->heap_number_map());
+               FACTORY->heap_number_map());
         // If heap number, handle it in the slow case.
         __ j(equal, &slow);
         // Return non-equal.  ebx (the lower half of rbx) is not zero.
@@ -3077,9 +3043,14 @@
   __ Load(rax, js_entry_sp);
   __ testq(rax, rax);
   __ j(not_zero, &not_outermost_js);
+  __ Push(Smi::FromInt(StackFrame::OUTERMOST_JSENTRY_FRAME));
   __ movq(rax, rbp);
   __ Store(js_entry_sp, rax);
+  Label cont;
+  __ jmp(&cont);
   __ bind(&not_outermost_js);
+  __ Push(Smi::FromInt(StackFrame::INNER_JSENTRY_FRAME));
+  __ bind(&cont);
 #endif
 
   // Call a faked try-block that does the invoke.
@@ -3121,27 +3092,21 @@
   __ call(kScratchRegister);
 
   // Unlink this frame from the handler chain.
-  Operand handler_operand =
-      masm->ExternalOperand(ExternalReference(Isolate::k_handler_address,
-                                              isolate));
-  __ pop(handler_operand);
-  // Pop next_sp.
-  __ addq(rsp, Immediate(StackHandlerConstants::kSize - kPointerSize));
+  __ PopTryHandler();
 
+  __ bind(&exit);
 #ifdef ENABLE_LOGGING_AND_PROFILING
-  // If current RBP value is the same as js_entry_sp value, it means that
-  // the current function is the outermost.
-  __ movq(kScratchRegister, js_entry_sp);
-  __ cmpq(rbp, Operand(kScratchRegister, 0));
+  // Check if the current stack frame is marked as the outermost JS frame.
+  __ pop(rbx);
+  __ Cmp(rbx, Smi::FromInt(StackFrame::OUTERMOST_JSENTRY_FRAME));
   __ j(not_equal, &not_outermost_js_2);
+  __ movq(kScratchRegister, js_entry_sp);
   __ movq(Operand(kScratchRegister, 0), Immediate(0));
   __ bind(&not_outermost_js_2);
 #endif
 
   // Restore the top frame descriptor from the stack.
-  __ bind(&exit);
-  {
-    Operand c_entry_fp_operand = masm->ExternalOperand(c_entry_fp);
+  { Operand c_entry_fp_operand = masm->ExternalOperand(c_entry_fp);
     __ pop(c_entry_fp_operand);
   }
 
@@ -3484,11 +3449,10 @@
     MacroAssembler* masm, const RuntimeCallHelper& call_helper) {
   __ Abort("Unexpected fallthrough to CharCodeAt slow case");
 
-  Factory* factory = masm->isolate()->factory();
   // Index is not a smi.
   __ bind(&index_not_smi_);
   // If index is a heap number, try converting it to an integer.
-  __ CheckMap(index_, factory->heap_number_map(), index_not_number_, true);
+  __ CheckMap(index_, FACTORY->heap_number_map(), index_not_number_, true);
   call_helper.BeforeCall(masm);
   __ push(object_);
   __ push(index_);
diff --git a/src/x64/code-stubs-x64.h b/src/x64/code-stubs-x64.h
index 3b40280..f97d099 100644
--- a/src/x64/code-stubs-x64.h
+++ b/src/x64/code-stubs-x64.h
@@ -152,7 +152,6 @@
   void GenerateHeapNumberStub(MacroAssembler* masm);
   void GenerateOddballStub(MacroAssembler* masm);
   void GenerateStringStub(MacroAssembler* masm);
-  void GenerateBothStringStub(MacroAssembler* masm);
   void GenerateGenericStub(MacroAssembler* masm);
 
   void GenerateHeapResultAllocation(MacroAssembler* masm, Label* alloc_failure);
diff --git a/src/x64/disasm-x64.cc b/src/x64/disasm-x64.cc
index 82bc6ef..2b7b7b7 100644
--- a/src/x64/disasm-x64.cc
+++ b/src/x64/disasm-x64.cc
@@ -1021,26 +1021,12 @@
         current += PrintRightOperand(current);
         AppendToBuffer(", %s, %d", NameOfCPURegister(regop), (*current) & 3);
         current += 1;
-      } else if (third_byte == 0x0b) {
-        get_modrm(*current, &mod, &regop, &rm);
-         // roundsd xmm, xmm/m64, imm8
-        AppendToBuffer("roundsd %s, ", NameOfCPURegister(regop));
-        current += PrintRightOperand(current);
-        AppendToBuffer(", %d", (*current) & 3);
-        current += 1;
       } else {
         UnimplementedInstruction();
       }
     } else {
       get_modrm(*current, &mod, &regop, &rm);
-      if (opcode == 0x28) {
-        AppendToBuffer("movapd %s, ", NameOfXMMRegister(regop));
-        current += PrintRightXMMOperand(current);
-      } else if (opcode == 0x29) {
-        AppendToBuffer("movapd ");
-        current += PrintRightXMMOperand(current);
-        AppendToBuffer(", %s", NameOfXMMRegister(regop));
-      } else if (opcode == 0x6E) {
+      if (opcode == 0x6E) {
         AppendToBuffer("mov%c %s,",
                        rex_w() ? 'q' : 'd',
                        NameOfXMMRegister(regop));
@@ -1058,10 +1044,6 @@
         AppendToBuffer("movdqa ");
         current += PrintRightXMMOperand(current);
         AppendToBuffer(", %s", NameOfXMMRegister(regop));
-      } else if (opcode == 0xD6) {
-        AppendToBuffer("movq ");
-        current += PrintRightXMMOperand(current);
-        AppendToBuffer(", %s", NameOfXMMRegister(regop));
       } else {
         const char* mnemonic = "?";
         if (opcode == 0x50) {
@@ -1163,11 +1145,6 @@
       get_modrm(*current, &mod, &regop, &rm);
       AppendToBuffer("cvtss2sd %s,", NameOfXMMRegister(regop));
       current += PrintRightXMMOperand(current);
-    } else if (opcode == 0x7E) {
-      int mod, regop, rm;
-      get_modrm(*current, &mod, &regop, &rm);
-      AppendToBuffer("movq %s, ", NameOfXMMRegister(regop));
-      current += PrintRightXMMOperand(current);
     } else {
       UnimplementedInstruction();
     }
@@ -1185,22 +1162,6 @@
       current += 4;
     }  // else no immediate displacement.
     AppendToBuffer("nop");
-
-  } else if (opcode == 28) {
-    // movaps xmm, xmm/m128
-    int mod, regop, rm;
-    get_modrm(*current, &mod, &regop, &rm);
-    AppendToBuffer("movaps %s, ", NameOfXMMRegister(regop));
-    current += PrintRightXMMOperand(current);
-
-  } else if (opcode == 29) {
-    // movaps xmm/m128, xmm
-    int mod, regop, rm;
-    get_modrm(*current, &mod, &regop, &rm);
-    AppendToBuffer("movaps");
-    current += PrintRightXMMOperand(current);
-    AppendToBuffer(", %s", NameOfXMMRegister(regop));
-
   } else if (opcode == 0xA2 || opcode == 0x31) {
     // RDTSC or CPUID
     AppendToBuffer("%s", mnemonic);
@@ -1212,13 +1173,6 @@
     byte_size_operand_ = idesc.byte_size_operation;
     current += PrintOperands(idesc.mnem, idesc.op_order_, current);
 
-  } else if (opcode == 57) {
-    // xoprps xmm, xmm/m128
-    int mod, regop, rm;
-    get_modrm(*current, &mod, &regop, &rm);
-    AppendToBuffer("xorps %s, ", NameOfXMMRegister(regop));
-    current += PrintRightXMMOperand(current);
-
   } else if ((opcode & 0xF0) == 0x80) {
     // Jcc: Conditional jump (branch).
     current = data + JumpConditional(data);
diff --git a/src/x64/full-codegen-x64.cc b/src/x64/full-codegen-x64.cc
index d5fb7da..6933d78 100644
--- a/src/x64/full-codegen-x64.cc
+++ b/src/x64/full-codegen-x64.cc
@@ -1398,13 +1398,17 @@
         // Fall through.
       case ObjectLiteral::Property::COMPUTED:
         if (key->handle()->IsSymbol()) {
-          VisitForAccumulatorValue(value);
-          __ Move(rcx, key->handle());
-          __ movq(rdx, Operand(rsp, 0));
           if (property->emit_store()) {
-            Handle<Code> ic = isolate()->builtins()->StoreIC_Initialize();
+            VisitForAccumulatorValue(value);
+            __ Move(rcx, key->handle());
+            __ movq(rdx, Operand(rsp, 0));
+            Handle<Code> ic = is_strict_mode()
+                ? isolate()->builtins()->StoreIC_Initialize_Strict()
+                : isolate()->builtins()->StoreIC_Initialize();
             EmitCallIC(ic, RelocInfo::CODE_TARGET);
             PrepareForBailoutForId(key->id(), NO_REGISTERS);
+          } else {
+            VisitForEffect(value);
           }
           break;
         }
@@ -2758,7 +2762,7 @@
   __ movd(xmm1, rcx);
   __ movd(xmm0, rax);
   __ cvtss2sd(xmm1, xmm1);
-  __ xorps(xmm0, xmm1);
+  __ xorpd(xmm0, xmm1);
   __ subsd(xmm0, xmm1);
   __ movsd(FieldOperand(rbx, HeapNumber::kValueOffset), xmm0);
 
@@ -3043,14 +3047,15 @@
 void FullCodeGenerator::EmitCallFunction(ZoneList<Expression*>* args) {
   ASSERT(args->length() >= 2);
 
-  int arg_count = args->length() - 2;  // 2 ~ receiver and function.
-  for (int i = 0; i < arg_count + 1; i++) {
-    VisitForStackValue(args->at(i));
+  int arg_count = args->length() - 2;  // For receiver and function.
+  VisitForStackValue(args->at(0));  // Receiver.
+  for (int i = 0; i < arg_count; i++) {
+    VisitForStackValue(args->at(i + 1));
   }
-  VisitForAccumulatorValue(args->last());  // Function.
+  VisitForAccumulatorValue(args->at(arg_count + 1));  // Function.
 
-  // InvokeFunction requires the function in rdi. Move it in there.
-  __ movq(rdi, result_register());
+  // InvokeFunction requires function in rdi. Move it in there.
+  if (!result_register().is(rdi)) __ movq(rdi, result_register());
   ParameterCount count(arg_count);
   __ InvokeFunction(rdi, count, CALL_FUNCTION);
   __ movq(rsi, Operand(rbp, StandardFrameConstants::kContextOffset));
@@ -4231,7 +4236,30 @@
     default:
       break;
   }
+
   __ call(ic, mode);
+
+  // Crankshaft doesn't need patching of inlined loads and stores.
+  // When compiling the snapshot we need to produce code that works
+  // with and without Crankshaft.
+  if (V8::UseCrankshaft() && !Serializer::enabled()) {
+    return;
+  }
+
+  // If we're calling a (keyed) load or store stub, we have to mark
+  // the call as containing no inlined code so we will not attempt to
+  // patch it.
+  switch (ic->kind()) {
+    case Code::LOAD_IC:
+    case Code::KEYED_LOAD_IC:
+    case Code::STORE_IC:
+    case Code::KEYED_STORE_IC:
+      __ nop();  // Signals no inlined code.
+      break;
+    default:
+      // Do nothing.
+      break;
+  }
 }
 
 
@@ -4252,6 +4280,7 @@
     default:
       break;
   }
+
   __ call(ic, RelocInfo::CODE_TARGET);
   if (patch_site != NULL && patch_site->is_bound()) {
     patch_site->EmitPatchInfo();
diff --git a/src/x64/ic-x64.cc b/src/x64/ic-x64.cc
index 5ed89b5..5ca56ac 100644
--- a/src/x64/ic-x64.cc
+++ b/src/x64/ic-x64.cc
@@ -381,6 +381,11 @@
 }
 
 
+// The offset from the inlined patch site to the start of the inlined
+// load instruction.
+const int LoadIC::kOffsetToLoadInstruction = 20;
+
+
 void LoadIC::GenerateArrayLength(MacroAssembler* masm) {
   // ----------- S t a t e -------------
   //  -- rax    : receiver
@@ -1292,6 +1297,130 @@
 }
 
 
+bool LoadIC::PatchInlinedLoad(Address address, Object* map, int offset) {
+  if (V8::UseCrankshaft()) return false;
+
+  // The address of the instruction following the call.
+  Address test_instruction_address =
+      address + Assembler::kCallTargetAddressOffset;
+  // If the instruction following the call is not a test rax, nothing
+  // was inlined.
+  if (*test_instruction_address != Assembler::kTestEaxByte) return false;
+
+  Address delta_address = test_instruction_address + 1;
+  // The delta to the start of the map check instruction.
+  int delta = *reinterpret_cast<int*>(delta_address);
+
+  // The map address is the last 8 bytes of the 10-byte
+  // immediate move instruction, so we add 2 to get the
+  // offset to the last 8 bytes.
+  Address map_address = test_instruction_address + delta + 2;
+  *(reinterpret_cast<Object**>(map_address)) = map;
+
+  // The offset is in the 32-bit displacement of a seven byte
+  // memory-to-register move instruction (REX.W 0x88 ModR/M disp32),
+  // so we add 3 to get the offset of the displacement.
+  Address offset_address =
+      test_instruction_address + delta + kOffsetToLoadInstruction + 3;
+  *reinterpret_cast<int*>(offset_address) = offset - kHeapObjectTag;
+  return true;
+}
+
+
+bool LoadIC::PatchInlinedContextualLoad(Address address,
+                                        Object* map,
+                                        Object* cell,
+                                        bool is_dont_delete) {
+  // TODO(<bug#>): implement this.
+  return false;
+}
+
+
+bool StoreIC::PatchInlinedStore(Address address, Object* map, int offset) {
+  if (V8::UseCrankshaft()) return false;
+
+  // The address of the instruction following the call.
+  Address test_instruction_address =
+      address + Assembler::kCallTargetAddressOffset;
+
+  // If the instruction following the call is not a test rax, nothing
+  // was inlined.
+  if (*test_instruction_address != Assembler::kTestEaxByte) return false;
+
+  // Extract the encoded deltas from the test rax instruction.
+  Address encoded_offsets_address = test_instruction_address + 1;
+  int encoded_offsets = *reinterpret_cast<int*>(encoded_offsets_address);
+  int delta_to_map_check = -(encoded_offsets & 0xFFFF);
+  int delta_to_record_write = encoded_offsets >> 16;
+
+  // Patch the map to check. The map address is the last 8 bytes of
+  // the 10-byte immediate move instruction.
+  Address map_check_address = test_instruction_address + delta_to_map_check;
+  Address map_address = map_check_address + 2;
+  *(reinterpret_cast<Object**>(map_address)) = map;
+
+  // Patch the offset in the store instruction. The offset is in the
+  // last 4 bytes of a 7 byte register-to-memory move instruction.
+  Address offset_address =
+      map_check_address + StoreIC::kOffsetToStoreInstruction + 3;
+  // The offset should have initial value (kMaxInt - 1), cleared value
+  // (-1) or we should be clearing the inlined version.
+  ASSERT(*reinterpret_cast<int*>(offset_address) == kMaxInt - 1 ||
+         *reinterpret_cast<int*>(offset_address) == -1 ||
+         (offset == 0 && map == HEAP->null_value()));
+  *reinterpret_cast<int*>(offset_address) = offset - kHeapObjectTag;
+
+  // Patch the offset in the write-barrier code. The offset is the
+  // last 4 bytes of a 7 byte lea instruction.
+  offset_address = map_check_address + delta_to_record_write + 3;
+  // The offset should have initial value (kMaxInt), cleared value
+  // (-1) or we should be clearing the inlined version.
+  ASSERT(*reinterpret_cast<int*>(offset_address) == kMaxInt ||
+         *reinterpret_cast<int*>(offset_address) == -1 ||
+         (offset == 0 && map == HEAP->null_value()));
+  *reinterpret_cast<int*>(offset_address) = offset - kHeapObjectTag;
+
+  return true;
+}
+
+
+static bool PatchInlinedMapCheck(Address address, Object* map) {
+  if (V8::UseCrankshaft()) return false;
+
+  // Arguments are address of start of call sequence that called
+  // the IC,
+  Address test_instruction_address =
+      address + Assembler::kCallTargetAddressOffset;
+  // The keyed load has a fast inlined case if the IC call instruction
+  // is immediately followed by a test instruction.
+  if (*test_instruction_address != Assembler::kTestEaxByte) return false;
+
+  // Fetch the offset from the test instruction to the map compare
+  // instructions (starting with the 64-bit immediate mov of the map
+  // address). This offset is stored in the last 4 bytes of the 5
+  // byte test instruction.
+  Address delta_address = test_instruction_address + 1;
+  int delta = *reinterpret_cast<int*>(delta_address);
+  // Compute the map address.  The map address is in the last 8 bytes
+  // of the 10-byte immediate mov instruction (incl. REX prefix), so we add 2
+  // to the offset to get the map address.
+  Address map_address = test_instruction_address + delta + 2;
+  // Patch the map check.
+  *(reinterpret_cast<Object**>(map_address)) = map;
+  return true;
+}
+
+
+bool KeyedLoadIC::PatchInlinedLoad(Address address, Object* map) {
+  return PatchInlinedMapCheck(address, map);
+}
+
+
+bool KeyedStoreIC::PatchInlinedStore(Address address, Object* map) {
+  return PatchInlinedMapCheck(address, map);
+}
+
+
 void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) {
   // ----------- S t a t e -------------
   //  -- rax    : key
@@ -1374,6 +1503,11 @@
 }
 
 
+// The offset from the inlined patch site to the start of the inlined
+// store instruction.
+const int StoreIC::kOffsetToStoreInstruction = 20;
+
+
 void StoreIC::GenerateArrayLength(MacroAssembler* masm) {
   // ----------- S t a t e -------------
   //  -- rax    : value
diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc
index c242874..202e7a2 100644
--- a/src/x64/lithium-codegen-x64.cc
+++ b/src/x64/lithium-codegen-x64.cc
@@ -91,7 +91,7 @@
 
 void LCodeGen::FinishCode(Handle<Code> code) {
   ASSERT(is_done());
-  code->set_stack_slots(GetStackSlotCount());
+  code->set_stack_slots(StackSlotCount());
   code->set_safepoint_table_offset(safepoints_.GetCodeOffset());
   PopulateDeoptimizationData(code);
   Deoptimizer::EnsureRelocSpaceForLazyDeoptimization(code);
@@ -146,7 +146,7 @@
   __ push(rdi);  // Callee's JS function.
 
   // Reserve space for the stack slots needed by the code.
-  int slots = GetStackSlotCount();
+  int slots = StackSlotCount();
   if (slots > 0) {
     if (FLAG_debug_code) {
       __ Set(rax, slots);
@@ -290,7 +290,7 @@
   while (byte_count-- > 0) {
     __ int3();
   }
-  safepoints_.Emit(masm(), GetStackSlotCount());
+  safepoints_.Emit(masm(), StackSlotCount());
   return !is_aborted();
 }
 
@@ -418,7 +418,7 @@
     translation->StoreDoubleStackSlot(op->index());
   } else if (op->IsArgument()) {
     ASSERT(is_tagged);
-    int src_index = GetStackSlotCount() + op->index();
+    int src_index = StackSlotCount() + op->index();
     translation->StoreStackSlot(src_index);
   } else if (op->IsRegister()) {
     Register reg = ToRegister(op);
@@ -1111,7 +1111,7 @@
   // Use xor to produce +0.0 in a fast and compact way, but avoid to
   // do so if the constant is -0.0.
   if (int_val == 0) {
-    __ xorps(res, res);
+    __ xorpd(res, res);
   } else {
     Register tmp = ToRegister(instr->TempAt(0));
     __ Set(tmp, int_val);
@@ -1223,12 +1223,12 @@
       break;
     case Token::MOD:
       __ PrepareCallCFunction(2);
-      __ movaps(xmm0, left);
+      __ movsd(xmm0, left);
       ASSERT(right.is(xmm1));
       __ CallCFunction(
           ExternalReference::double_fp_operation(Token::MOD, isolate()), 2);
       __ movq(rsi, Operand(rbp, StandardFrameConstants::kContextOffset));
-      __ movaps(result, xmm0);
+      __ movsd(result, xmm0);
       break;
     default:
       UNREACHABLE();
@@ -1287,7 +1287,7 @@
     EmitBranch(true_block, false_block, not_zero);
   } else if (r.IsDouble()) {
     XMMRegister reg = ToDoubleRegister(instr->InputAt(0));
-    __ xorps(xmm0, xmm0);
+    __ xorpd(xmm0, xmm0);
     __ ucomisd(reg, xmm0);
     EmitBranch(true_block, false_block, not_equal);
   } else {
@@ -1322,7 +1322,7 @@
 
       // HeapNumber => false iff +0, -0, or NaN. These three cases set the
       // zero flag when compared to zero using ucomisd.
-      __ xorps(xmm0, xmm0);
+      __ xorpd(xmm0, xmm0);
       __ ucomisd(xmm0, FieldOperand(reg, HeapNumber::kValueOffset));
       __ j(zero, false_label);
       __ jmp(true_label);
@@ -2058,7 +2058,7 @@
   }
   __ movq(rsp, rbp);
   __ pop(rbp);
-  __ Ret((GetParameterCount() + 1) * kPointerSize, rcx);
+  __ Ret((ParameterCount() + 1) * kPointerSize, rcx);
 }
 
 
@@ -2507,19 +2507,25 @@
                                          env->deoptimization_index());
   v8::internal::ParameterCount actual(rax);
   __ InvokeFunction(function, actual, CALL_FUNCTION, &safepoint_generator);
-  __ movq(rsi, Operand(rbp, StandardFrameConstants::kContextOffset));
 }
 
 
 void LCodeGen::DoPushArgument(LPushArgument* instr) {
   LOperand* argument = instr->InputAt(0);
-  EmitPushTaggedOperand(argument);
+  if (argument->IsConstantOperand()) {
+    EmitPushConstantOperand(argument);
+  } else if (argument->IsRegister()) {
+    __ push(ToRegister(argument));
+  } else {
+    ASSERT(!argument->IsDoubleRegister());
+    __ push(ToOperand(argument));
+  }
 }
 
 
 void LCodeGen::DoContext(LContext* instr) {
   Register result = ToRegister(instr->result());
-  __ movq(result, rsi);
+  __ movq(result, Operand(rbp, StandardFrameConstants::kContextOffset));
 }
 
 
@@ -2671,7 +2677,7 @@
   if (r.IsDouble()) {
     XMMRegister scratch = xmm0;
     XMMRegister input_reg = ToDoubleRegister(instr->InputAt(0));
-    __ xorps(scratch, scratch);
+    __ xorpd(scratch, scratch);
     __ subsd(scratch, input_reg);
     __ andpd(input_reg, scratch);
   } else if (r.IsInteger32()) {
@@ -2682,9 +2688,7 @@
     Register input_reg = ToRegister(instr->InputAt(0));
     // Smi check.
     __ JumpIfNotSmi(input_reg, deferred->entry());
-    __ SmiToInteger32(input_reg, input_reg);
     EmitIntegerMathAbs(instr);
-    __ Integer32ToSmi(input_reg, input_reg);
     __ bind(deferred->exit());
   }
 }
@@ -2694,36 +2698,21 @@
   XMMRegister xmm_scratch = xmm0;
   Register output_reg = ToRegister(instr->result());
   XMMRegister input_reg = ToDoubleRegister(instr->InputAt(0));
+  __ xorpd(xmm_scratch, xmm_scratch);  // Zero the register.
+  __ ucomisd(input_reg, xmm_scratch);
 
-  if (CpuFeatures::IsSupported(SSE4_1)) {
-    CpuFeatures::Scope scope(SSE4_1);
-    if (instr->hydrogen()->CheckFlag(HValue::kBailoutOnMinusZero)) {
-      // Deoptimize if minus zero.
-      __ movq(output_reg, input_reg);
-      __ subq(output_reg, Immediate(1));
-      DeoptimizeIf(overflow, instr->environment());
-    }
-    __ roundsd(xmm_scratch, input_reg, Assembler::kRoundDown);
-    __ cvttsd2si(output_reg, xmm_scratch);
-    __ cmpl(output_reg, Immediate(0x80000000));
-    DeoptimizeIf(equal, instr->environment());
+  if (instr->hydrogen()->CheckFlag(HValue::kBailoutOnMinusZero)) {
+    DeoptimizeIf(below_equal, instr->environment());
   } else {
-    __ xorps(xmm_scratch, xmm_scratch);  // Zero the register.
-    __ ucomisd(input_reg, xmm_scratch);
-
-    if (instr->hydrogen()->CheckFlag(HValue::kBailoutOnMinusZero)) {
-      DeoptimizeIf(below_equal, instr->environment());
-    } else {
-      DeoptimizeIf(below, instr->environment());
-    }
-
-    // Use truncating instruction (OK because input is positive).
-    __ cvttsd2si(output_reg, input_reg);
-
-    // Overflow is signalled with minint.
-    __ cmpl(output_reg, Immediate(0x80000000));
-    DeoptimizeIf(equal, instr->environment());
+    DeoptimizeIf(below, instr->environment());
   }
+
+  // Use truncating instruction (OK because input is positive).
+  __ cvttsd2si(output_reg, input_reg);
+
+  // Overflow is signalled with minint.
+  __ cmpl(output_reg, Immediate(0x80000000));
+  DeoptimizeIf(equal, instr->environment());
 }
 
 
@@ -2732,44 +2721,33 @@
   Register output_reg = ToRegister(instr->result());
   XMMRegister input_reg = ToDoubleRegister(instr->InputAt(0));
 
-  Label done;
   // xmm_scratch = 0.5
   __ movq(kScratchRegister, V8_INT64_C(0x3FE0000000000000), RelocInfo::NONE);
   __ movq(xmm_scratch, kScratchRegister);
-  NearLabel below_half;
-  __ ucomisd(xmm_scratch, input_reg);
-  __ j(above, &below_half);  // If input_reg is NaN, this doesn't jump.
-  // input = input + 0.5
-  // This addition might give a result that isn't the correct for
-  // rounding, due to loss of precision, but only for a number that's
-  // so big that the conversion below will overflow anyway.
-  __ addsd(input_reg, xmm_scratch);
-  // Compute Math.floor(input).
-  // Use truncating instruction (OK because input is positive).
-  __ cvttsd2si(output_reg, input_reg);
-  // Overflow is signalled with minint.
-  __ cmpl(output_reg, Immediate(0x80000000));
-  DeoptimizeIf(equal, instr->environment());
-  __ jmp(&done);
 
-  __ bind(&below_half);
+  // input = input + 0.5
+  __ addsd(input_reg, xmm_scratch);
+
+  // We need to return -0 for the input range [-0.5, 0[, otherwise
+  // compute Math.floor(value + 0.5).
   if (instr->hydrogen()->CheckFlag(HValue::kBailoutOnMinusZero)) {
-    // Bailout if negative (including -0).
-    __ movq(output_reg, input_reg);
-    __ testq(output_reg, output_reg);
-    DeoptimizeIf(negative, instr->environment());
+    __ ucomisd(input_reg, xmm_scratch);
+    DeoptimizeIf(below_equal, instr->environment());
   } else {
-    // Bailout if below -0.5, otherwise round to (positive) zero, even
-    // if negative.
-    // xmm_scrach = -0.5
-    __ movq(kScratchRegister, V8_INT64_C(0xBFE0000000000000), RelocInfo::NONE);
-    __ movq(xmm_scratch, kScratchRegister);
+    // If we don't need to bailout on -0, we check only bailout
+    // on negative inputs.
+    __ xorpd(xmm_scratch, xmm_scratch);  // Zero the register.
     __ ucomisd(input_reg, xmm_scratch);
     DeoptimizeIf(below, instr->environment());
   }
-  __ xorl(output_reg, output_reg);
 
-  __ bind(&done);
+  // Compute Math.floor(value + 0.5).
+  // Use truncating instruction (OK because input is positive).
+  __ cvttsd2si(output_reg, input_reg);
+
+  // Overflow is signalled with minint.
+  __ cmpl(output_reg, Immediate(0x80000000));
+  DeoptimizeIf(equal, instr->environment());
 }
 
 
@@ -2784,7 +2762,7 @@
   XMMRegister xmm_scratch = xmm0;
   XMMRegister input_reg = ToDoubleRegister(instr->InputAt(0));
   ASSERT(ToDoubleRegister(instr->result()).is(input_reg));
-  __ xorps(xmm_scratch, xmm_scratch);
+  __ xorpd(xmm_scratch, xmm_scratch);
   __ addsd(input_reg, xmm_scratch);  // Convert -0 to +0.
   __ sqrtsd(input_reg, input_reg);
 }
@@ -2800,7 +2778,7 @@
   if (exponent_type.IsDouble()) {
     __ PrepareCallCFunction(2);
     // Move arguments to correct registers
-    __ movaps(xmm0, left_reg);
+    __ movsd(xmm0, left_reg);
     ASSERT(ToDoubleRegister(right).is(xmm1));
     __ CallCFunction(
         ExternalReference::power_double_double_function(isolate()), 2);
@@ -2808,7 +2786,7 @@
     __ PrepareCallCFunction(2);
     // Move arguments to correct registers: xmm0 and edi (not rdi).
     // On Windows, the registers are xmm0 and edx.
-    __ movaps(xmm0, left_reg);
+    __ movsd(xmm0, left_reg);
 #ifdef _WIN64
     ASSERT(ToRegister(right).is(rdx));
 #else
@@ -2834,13 +2812,13 @@
     __ bind(&call);
     __ PrepareCallCFunction(2);
     // Move arguments to correct registers xmm0 and xmm1.
-    __ movaps(xmm0, left_reg);
+    __ movsd(xmm0, left_reg);
     // Right argument is already in xmm1.
     __ CallCFunction(
         ExternalReference::power_double_double_function(isolate()), 2);
   }
   // Return value is in xmm0.
-  __ movaps(result_reg, xmm0);
+  __ movsd(result_reg, xmm0);
   // Restore context register.
   __ movq(rsi, Operand(rbp, StandardFrameConstants::kContextOffset));
 }
@@ -2903,21 +2881,6 @@
 }
 
 
-void LCodeGen::DoInvokeFunction(LInvokeFunction* instr) {
-  ASSERT(ToRegister(instr->function()).is(rdi));
-  ASSERT(instr->HasPointerMap());
-  ASSERT(instr->HasDeoptimizationEnvironment());
-  LPointerMap* pointers = instr->pointer_map();
-  LEnvironment* env = instr->deoptimization_environment();
-  RecordPosition(pointers->position());
-  RegisterEnvironmentForDeoptimization(env);
-  SafepointGenerator generator(this, pointers, env->deoptimization_index());
-  ParameterCount count(instr->arity());
-  __ InvokeFunction(rdi, count, CALL_FUNCTION, &generator);
-  __ movq(rsi, Operand(rbp, StandardFrameConstants::kContextOffset));
-}
-
-
 void LCodeGen::DoCallKeyed(LCallKeyed* instr) {
   ASSERT(ToRegister(instr->key()).is(rcx));
   ASSERT(ToRegister(instr->result()).is(rax));
@@ -3124,14 +3087,6 @@
 }
 
 
-void LCodeGen::DoStringAdd(LStringAdd* instr) {
-  EmitPushTaggedOperand(instr->left());
-  EmitPushTaggedOperand(instr->right());
-  StringAddStub stub(NO_STRING_CHECK_IN_STUB);
-  CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
-}
-
-
 void LCodeGen::DoStringCharCodeAt(LStringCharCodeAt* instr) {
   class DeferredStringCharCodeAt: public LDeferredCode {
    public:
@@ -3422,7 +3377,7 @@
   DeoptimizeIf(not_equal, env);
 
   // Convert undefined to NaN. Compute NaN as 0/0.
-  __ xorps(result_reg, result_reg);
+  __ xorpd(result_reg, result_reg);
   __ divsd(result_reg, result_reg);
   __ jmp(&done);
 
@@ -3791,7 +3746,14 @@
 
 void LCodeGen::DoTypeof(LTypeof* instr) {
   LOperand* input = instr->InputAt(0);
-  EmitPushTaggedOperand(input);
+  if (input->IsConstantOperand()) {
+    __ Push(ToHandle(LConstantOperand::cast(input)));
+  } else if (input->IsRegister()) {
+    __ push(ToRegister(input));
+  } else {
+    ASSERT(input->IsStackSlot());
+    __ push(ToOperand(input));
+  }
   CallRuntime(Runtime::kTypeof, 1, instr);
 }
 
@@ -3819,14 +3781,19 @@
 }
 
 
-void LCodeGen::EmitPushTaggedOperand(LOperand* operand) {
-  ASSERT(!operand->IsDoubleRegister());
-  if (operand->IsConstantOperand()) {
-    __ Push(ToHandle(LConstantOperand::cast(operand)));
-  } else if (operand->IsRegister()) {
-    __ push(ToRegister(operand));
+void LCodeGen::EmitPushConstantOperand(LOperand* operand) {
+  ASSERT(operand->IsConstantOperand());
+  LConstantOperand* const_op = LConstantOperand::cast(operand);
+  Handle<Object> literal = chunk_->LookupLiteral(const_op);
+  Representation r = chunk_->LookupLiteralRepresentation(const_op);
+  if (r.IsInteger32()) {
+    ASSERT(literal->IsNumber());
+    __ push(Immediate(static_cast<int32_t>(literal->Number())));
+  } else if (r.IsDouble()) {
+    Abort("unsupported double immediate");
   } else {
-    __ push(ToOperand(operand));
+    ASSERT(r.IsTagged());
+    __ Push(literal);
   }
 }
 
@@ -3972,8 +3939,20 @@
 void LCodeGen::DoDeleteProperty(LDeleteProperty* instr) {
   LOperand* obj = instr->object();
   LOperand* key = instr->key();
-  EmitPushTaggedOperand(obj);
-  EmitPushTaggedOperand(key);
+  // Push object.
+  if (obj->IsRegister()) {
+    __ push(ToRegister(obj));
+  } else {
+    __ push(ToOperand(obj));
+  }
+  // Push key.
+  if (key->IsConstantOperand()) {
+    EmitPushConstantOperand(key);
+  } else if (key->IsRegister()) {
+    __ push(ToRegister(key));
+  } else {
+    __ push(ToOperand(key));
+  }
   ASSERT(instr->HasPointerMap() && instr->HasDeoptimizationEnvironment());
   LPointerMap* pointers = instr->pointer_map();
   LEnvironment* env = instr->deoptimization_environment();
diff --git a/src/x64/lithium-codegen-x64.h b/src/x64/lithium-codegen-x64.h
index 96e0a0f..34277f6 100644
--- a/src/x64/lithium-codegen-x64.h
+++ b/src/x64/lithium-codegen-x64.h
@@ -141,8 +141,8 @@
                        Register input,
                        Register temporary);
 
-  int GetStackSlotCount() const { return chunk()->spill_slot_count(); }
-  int GetParameterCount() const { return scope()->num_parameters(); }
+  int StackSlotCount() const { return chunk()->spill_slot_count(); }
+  int ParameterCount() const { return scope()->num_parameters(); }
 
   void Abort(const char* format, ...);
   void Comment(const char* format, ...);
@@ -268,9 +268,8 @@
                      Handle<Map> type,
                      Handle<String> name);
 
-  // Emits code for pushing either a tagged constant, a (non-double)
-  // register, or a stack slot operand.
-  void EmitPushTaggedOperand(LOperand* operand);
+  // Emits code for pushing a constant operand.
+  void EmitPushConstantOperand(LOperand* operand);
 
   struct JumpTableEntry {
     explicit inline JumpTableEntry(Address entry)
diff --git a/src/x64/lithium-gap-resolver-x64.cc b/src/x64/lithium-gap-resolver-x64.cc
index c3c617c..cedd025 100644
--- a/src/x64/lithium-gap-resolver-x64.cc
+++ b/src/x64/lithium-gap-resolver-x64.cc
@@ -214,7 +214,7 @@
   } else if (source->IsDoubleRegister()) {
     XMMRegister src = cgen_->ToDoubleRegister(source);
     if (destination->IsDoubleRegister()) {
-      __ movaps(cgen_->ToDoubleRegister(destination), src);
+      __ movsd(cgen_->ToDoubleRegister(destination), src);
     } else {
       ASSERT(destination->IsDoubleStackSlot());
       __ movsd(cgen_->ToOperand(destination), src);
@@ -273,9 +273,9 @@
     // Swap two double registers.
     XMMRegister source_reg = cgen_->ToDoubleRegister(source);
     XMMRegister destination_reg = cgen_->ToDoubleRegister(destination);
-    __ movaps(xmm0, source_reg);
-    __ movaps(source_reg, destination_reg);
-    __ movaps(destination_reg, xmm0);
+    __ movsd(xmm0, source_reg);
+    __ movsd(source_reg, destination_reg);
+    __ movsd(destination_reg, xmm0);
 
   } else if (source->IsDoubleRegister() || destination->IsDoubleRegister()) {
     // Swap a double register and a double stack slot.
diff --git a/src/x64/lithium-x64.cc b/src/x64/lithium-x64.cc
index 620bbc9..07ca3a5 100644
--- a/src/x64/lithium-x64.cc
+++ b/src/x64/lithium-x64.cc
@@ -71,21 +71,22 @@
 
 #ifdef DEBUG
 void LInstruction::VerifyCall() {
-  // Call instructions can use only fixed registers as temporaries and
-  // outputs because all registers are blocked by the calling convention.
-  // Inputs operands must use a fixed register or use-at-start policy or
-  // a non-register policy.
+  // Call instructions can use only fixed registers as
+  // temporaries and outputs because all registers
+  // are blocked by the calling convention.
+  // Inputs must use a fixed register.
   ASSERT(Output() == NULL ||
          LUnallocated::cast(Output())->HasFixedPolicy() ||
          !LUnallocated::cast(Output())->HasRegisterPolicy());
   for (UseIterator it(this); it.HasNext(); it.Advance()) {
-    LUnallocated* operand = LUnallocated::cast(it.Next());
-    ASSERT(operand->HasFixedPolicy() ||
-           operand->IsUsedAtStart());
+    LOperand* operand = it.Next();
+    ASSERT(LUnallocated::cast(operand)->HasFixedPolicy() ||
+           !LUnallocated::cast(operand)->HasRegisterPolicy());
   }
   for (TempIterator it(this); it.HasNext(); it.Advance()) {
-    LUnallocated* operand = LUnallocated::cast(it.Next());
-    ASSERT(operand->HasFixedPolicy() ||!operand->HasRegisterPolicy());
+    LOperand* operand = it.Next();
+    ASSERT(LUnallocated::cast(operand)->HasFixedPolicy() ||
+           !LUnallocated::cast(operand)->HasRegisterPolicy());
   }
 }
 #endif
@@ -302,13 +303,6 @@
 }
 
 
-void LInvokeFunction::PrintDataTo(StringStream* stream) {
-  stream->Add("= ");
-  InputAt(0)->PrintTo(stream);
-  stream->Add(" #%d / ", arity());
-}
-
-
 void LCallKeyed::PrintDataTo(StringStream* stream) {
   stream->Add("[rcx] #%d / ", arity());
 }
@@ -1217,14 +1211,6 @@
 }
 
 
-LInstruction* LChunkBuilder::DoInvokeFunction(HInvokeFunction* instr) {
-  LOperand* function = UseFixed(instr->function(), rdi);
-  argument_count_ -= instr->argument_count();
-  LInvokeFunction* result = new LInvokeFunction(function);
-  return MarkAsCall(DefineFixed(result, rax), instr, CANNOT_DEOPTIMIZE_EAGERLY);
-}
-
-
 LInstruction* LChunkBuilder::DoUnaryMathOperation(HUnaryMathOperation* instr) {
   BuiltinFunctionId op = instr->op();
   if (op == kMathLog || op == kMathSin || op == kMathCos) {
@@ -1955,13 +1941,6 @@
 }
 
 
-LInstruction* LChunkBuilder::DoStringAdd(HStringAdd* instr) {
-  LOperand* left = UseOrConstantAtStart(instr->left());
-  LOperand* right = UseOrConstantAtStart(instr->right());
-  return MarkAsCall(DefineFixed(new LStringAdd(left, right), rax), instr);
-}
-
-
 LInstruction* LChunkBuilder::DoStringCharCodeAt(HStringCharCodeAt* instr) {
   LOperand* string = UseRegister(instr->string());
   LOperand* index = UseRegisterOrConstant(instr->index());
@@ -2005,8 +1984,7 @@
 
 LInstruction* LChunkBuilder::DoDeleteProperty(HDeleteProperty* instr) {
   LDeleteProperty* result =
-      new LDeleteProperty(UseAtStart(instr->object()),
-                          UseOrConstantAtStart(instr->key()));
+      new LDeleteProperty(Use(instr->object()), UseOrConstant(instr->key()));
   return MarkAsCall(DefineFixed(result, rax), instr);
 }
 
diff --git a/src/x64/lithium-x64.h b/src/x64/lithium-x64.h
index 74f4820..15bb894 100644
--- a/src/x64/lithium-x64.h
+++ b/src/x64/lithium-x64.h
@@ -98,15 +98,14 @@
   V(GlobalObject)                               \
   V(GlobalReceiver)                             \
   V(Goto)                                       \
-  V(HasCachedArrayIndex)                        \
-  V(HasCachedArrayIndexAndBranch)               \
   V(HasInstanceType)                            \
   V(HasInstanceTypeAndBranch)                   \
+  V(HasCachedArrayIndex)                        \
+  V(HasCachedArrayIndexAndBranch)               \
   V(InstanceOf)                                 \
   V(InstanceOfAndBranch)                        \
   V(InstanceOfKnownGlobal)                      \
   V(Integer32ToDouble)                          \
-  V(InvokeFunction)                             \
   V(IsNull)                                     \
   V(IsNullAndBranch)                            \
   V(IsObject)                                   \
@@ -153,7 +152,6 @@
   V(StoreKeyedSpecializedArrayElement)          \
   V(StoreNamedField)                            \
   V(StoreNamedGeneric)                          \
-  V(StringAdd)                                  \
   V(StringCharCodeAt)                           \
   V(StringCharFromCode)                         \
   V(StringLength)                               \
@@ -1395,23 +1393,6 @@
 };
 
 
-class LInvokeFunction: public LTemplateInstruction<1, 1, 0> {
- public:
-  explicit LInvokeFunction(LOperand* function) {
-    inputs_[0] = function;
-  }
-
-  DECLARE_CONCRETE_INSTRUCTION(InvokeFunction, "invoke-function")
-  DECLARE_HYDROGEN_ACCESSOR(InvokeFunction)
-
-  LOperand* function() { return inputs_[0]; }
-
-  virtual void PrintDataTo(StringStream* stream);
-
-  int arity() const { return hydrogen()->argument_count() - 1; }
-};
-
-
 class LCallKeyed: public LTemplateInstruction<1, 1, 0> {
  public:
   explicit LCallKeyed(LOperand* key) {
@@ -1703,21 +1684,6 @@
 };
 
 
-class LStringAdd: public LTemplateInstruction<1, 2, 0> {
- public:
-  LStringAdd(LOperand* left, LOperand* right) {
-    inputs_[0] = left;
-    inputs_[1] = right;
-  }
-
-  DECLARE_CONCRETE_INSTRUCTION(StringAdd, "string-add")
-  DECLARE_HYDROGEN_ACCESSOR(StringAdd)
-
-  LOperand* left() { return inputs_[0]; }
-  LOperand* right() { return inputs_[1]; }
-};
-
-
 class LStringCharCodeAt: public LTemplateInstruction<1, 2, 0> {
  public:
   LStringCharCodeAt(LOperand* string, LOperand* index) {
diff --git a/src/x64/macro-assembler-x64.cc b/src/x64/macro-assembler-x64.cc
index 3394206..7f027f7 100644
--- a/src/x64/macro-assembler-x64.cc
+++ b/src/x64/macro-assembler-x64.cc
@@ -650,7 +650,6 @@
   Label leave_exit_frame;
   Label write_back;
 
-  Factory* factory = isolate()->factory();
   ExternalReference next_address =
       ExternalReference::handle_scope_next_address();
   const int kNextOffset = 0;
@@ -698,7 +697,7 @@
 
   // Check if the function scheduled an exception.
   movq(rsi, scheduled_exception_address);
-  Cmp(Operand(rsi, 0), factory->the_hole_value());
+  Cmp(Operand(rsi, 0), FACTORY->the_hole_value());
   j(not_equal, &promote_scheduled_exception);
 
   LeaveApiExitFrame();
@@ -713,7 +712,7 @@
 
   bind(&empty_result);
   // It was zero; the result is undefined.
-  Move(rax, factory->undefined_value());
+  Move(rax, FACTORY->undefined_value());
   jmp(&prologue);
 
   // HandleScope limit has changed. Delete allocated extensions.
@@ -1248,17 +1247,12 @@
                             Register src2) {
   // No overflow checking. Use only when it's known that
   // overflowing is impossible.
+  ASSERT(!dst.is(src2));
   if (!dst.is(src1)) {
-    if (emit_debug_code()) {
-      movq(kScratchRegister, src1);
-      addq(kScratchRegister, src2);
-      Check(no_overflow, "Smi addition overflow");
-    }
-    lea(dst, Operand(src1, src2, times_1, 0));
-  } else {
-    addq(dst, src2);
-    Assert(no_overflow, "Smi addition overflow");
+    movq(dst, src1);
   }
+  addq(dst, src2);
+  Assert(no_overflow, "Smi addition overflow");
 }
 
 
@@ -1901,7 +1895,7 @@
   Condition is_smi = CheckSmi(object);
   j(is_smi, &ok);
   Cmp(FieldOperand(object, HeapObject::kMapOffset),
-      isolate()->factory()->heap_number_map());
+      FACTORY->heap_number_map());
   Assert(equal, "Operand not a number");
   bind(&ok);
 }
@@ -2158,7 +2152,7 @@
   push(kScratchRegister);
   if (emit_debug_code()) {
     movq(kScratchRegister,
-         isolate()->factory()->undefined_value(),
+         FACTORY->undefined_value(),
          RelocInfo::EMBEDDED_OBJECT);
     cmpq(Operand(rsp, 0), kScratchRegister);
     Check(not_equal, "code object not properly patched");
@@ -2326,7 +2320,7 @@
   // Check the context is a global context.
   if (emit_debug_code()) {
     Cmp(FieldOperand(scratch, HeapObject::kMapOffset),
-        isolate()->factory()->global_context_map());
+        FACTORY->global_context_map());
     Check(equal, "JSGlobalObject::global_context should be a global context.");
   }
 
@@ -2828,7 +2822,7 @@
   movq(map, FieldOperand(function, JSFunction::kPrototypeOrInitialMapOffset));
   if (emit_debug_code()) {
     Label ok, fail;
-    CheckMap(map, isolate()->factory()->meta_map(), &fail, false);
+    CheckMap(map, FACTORY->meta_map(), &fail, false);
     jmp(&ok);
     bind(&fail);
     Abort("Global functions must have initial map");
diff --git a/src/x64/regexp-macro-assembler-x64.cc b/src/x64/regexp-macro-assembler-x64.cc
index d4ccb0e..c16da94 100644
--- a/src/x64/regexp-macro-assembler-x64.cc
+++ b/src/x64/regexp-macro-assembler-x64.cc
@@ -703,7 +703,7 @@
 }
 
 
-Handle<Object> RegExpMacroAssemblerX64::GetCode(Handle<String> source) {
+Handle<HeapObject> RegExpMacroAssemblerX64::GetCode(Handle<String> source) {
   // Finalize code - write the entry point code now we know how many
   // registers we need.
   // Entry code:
@@ -972,7 +972,7 @@
       code_desc, Code::ComputeFlags(Code::REGEXP),
       masm_.CodeObject());
   PROFILE(isolate, RegExpCodeCreateEvent(*code, *source));
-  return Handle<Object>::cast(code);
+  return Handle<HeapObject>::cast(code);
 }
 
 
diff --git a/src/x64/regexp-macro-assembler-x64.h b/src/x64/regexp-macro-assembler-x64.h
index a83f8cb..02b510f 100644
--- a/src/x64/regexp-macro-assembler-x64.h
+++ b/src/x64/regexp-macro-assembler-x64.h
@@ -75,7 +75,7 @@
   virtual bool CheckSpecialCharacterClass(uc16 type,
                                           Label* on_no_match);
   virtual void Fail();
-  virtual Handle<Object> GetCode(Handle<String> source);
+  virtual Handle<HeapObject> GetCode(Handle<String> source);
   virtual void GoTo(Label* label);
   virtual void IfRegisterGE(int reg, int comparand, Label* if_ge);
   virtual void IfRegisterLT(int reg, int comparand, Label* if_lt);
diff --git a/test/cctest/test-compiler.cc b/test/cctest/test-compiler.cc
index d3dd9c6..4c5f197 100644
--- a/test/cctest/test-compiler.cc
+++ b/test/cctest/test-compiler.cc
@@ -31,6 +31,8 @@
 #include "v8.h"
 
 #include "compiler.h"
+#include "disasm.h"
+#include "disassembler.h"
 #include "execution.h"
 #include "factory.h"
 #include "platform.h"
@@ -348,3 +350,51 @@
     CHECK_EQ(i, f->GetScriptLineNumber());
   }
 }
+
+
+#ifdef ENABLE_DISASSEMBLER
+static Handle<JSFunction> GetJSFunction(v8::Handle<v8::Object> obj,
+                                 const char* property_name) {
+  v8::Local<v8::Function> fun =
+      v8::Local<v8::Function>::Cast(obj->Get(v8_str(property_name)));
+  return v8::Utils::OpenHandle(*fun);
+}
+
+
+static void CheckCodeForUnsafeLiteral(Handle<JSFunction> f) {
+  // Create a disassembler with default name lookup.
+  disasm::NameConverter name_converter;
+  disasm::Disassembler d(name_converter);
+
+  if (f->code()->kind() == Code::FUNCTION) {
+    Address pc = f->code()->instruction_start();
+    int decode_size =
+        Min(f->code()->instruction_size(),
+            static_cast<int>(f->code()->stack_check_table_offset()));
+    Address end = pc + decode_size;
+
+    v8::internal::EmbeddedVector<char, 128> decode_buffer;
+    while (pc < end) {
+      pc += d.InstructionDecode(decode_buffer, pc);
+      CHECK(strstr(decode_buffer.start(), "mov eax,0x178c29c") == NULL);
+      CHECK(strstr(decode_buffer.start(), "push 0x178c29c") == NULL);
+      CHECK(strstr(decode_buffer.start(), "0x178c29c") == NULL);
+    }
+  }
+}
+
+
+TEST(SplitConstantsInFullCompiler) {
+  v8::HandleScope scope;
+  LocalContext env;
+
+  CompileRun("function f() { a = 12345678 }; f();");
+  CheckCodeForUnsafeLiteral(GetJSFunction(env->Global(), "f"));
+  CompileRun("function f(x) { a = 12345678 + x}; f(1);");
+  CheckCodeForUnsafeLiteral(GetJSFunction(env->Global(), "f"));
+  CompileRun("function f(x) { var arguments = 1; x += 12345678}; f(1);");
+  CheckCodeForUnsafeLiteral(GetJSFunction(env->Global(), "f"));
+  CompileRun("function f(x) { var arguments = 1; x = 12345678}; f(1);");
+  CheckCodeForUnsafeLiteral(GetJSFunction(env->Global(), "f"));
+}
+#endif
diff --git a/test/cctest/test-cpu-profiler.cc b/test/cctest/test-cpu-profiler.cc
index 749ac15..17611ac 100644
--- a/test/cctest/test-cpu-profiler.cc
+++ b/test/cctest/test-cpu-profiler.cc
@@ -238,6 +238,49 @@
 }
 
 
+// http://code.google.com/p/v8/issues/detail?id=1398
+// Long stacks (exceeding max frames limit) must not be erased.
+TEST(Issue1398) {
+  TestSetup test_setup;
+  CpuProfilesCollection profiles;
+  profiles.StartProfiling("", 1);
+  ProfileGenerator generator(&profiles);
+  ProfilerEventsProcessor processor(i::Isolate::Current(), &generator);
+  processor.Start();
+  while (!processor.running()) {
+    i::Thread::YieldCPU();
+  }
+
+  processor.CodeCreateEvent(i::Logger::BUILTIN_TAG,
+                            "bbb",
+                            ToAddress(0x1200),
+                            0x80);
+
+  i::TickSample* sample = processor.TickSampleEvent();
+  sample->pc = ToAddress(0x1200);
+  sample->tos = 0;
+  sample->frames_count = i::TickSample::kMaxFramesCount;
+  for (int i = 0; i < sample->frames_count; ++i) {
+    sample->stack[i] = ToAddress(0x1200);
+  }
+
+  processor.Stop();
+  processor.Join();
+  CpuProfile* profile =
+      profiles.StopProfiling(TokenEnumerator::kNoSecurityToken, "", 1);
+  CHECK_NE(NULL, profile);
+
+  int actual_depth = 0;
+  const ProfileNode* node = profile->top_down()->root();
+  while (node->children()->length() > 0) {
+    node = node->children()->last();
+    ++actual_depth;
+  }
+
+  CHECK_EQ(1 + i::TickSample::kMaxFramesCount, actual_depth);  // +1 for PC.
+}
+
+
 TEST(DeleteAllCpuProfiles) {
   InitializeVM();
   TestSetup test_setup;
diff --git a/test/cctest/test-deoptimization.cc b/test/cctest/test-deoptimization.cc
index 5ab84f9..056c981 100644
--- a/test/cctest/test-deoptimization.cc
+++ b/test/cctest/test-deoptimization.cc
@@ -97,8 +97,8 @@
 };
 
 
-Handle<JSFunction> GetJSFunction(v8::Handle<v8::Object> obj,
-                                 const char* property_name) {
+static Handle<JSFunction> GetJSFunction(v8::Handle<v8::Object> obj,
+                                        const char* property_name) {
   v8::Local<v8::Function> fun =
       v8::Local<v8::Function>::Cast(obj->Get(v8_str(property_name)));
   return v8::Utils::OpenHandle(*fun);
diff --git a/test/mjsunit/apply.js b/test/mjsunit/apply.js
index c166110..613d37d 100644
--- a/test/mjsunit/apply.js
+++ b/test/mjsunit/apply.js
@@ -33,43 +33,43 @@
   return a;
 }
 
-assertSame(this, f0.apply(), "1-0");
+assertTrue(this === f0.apply(), "1-0");
 
-assertSame(this, f0.apply(this), "2a");
-assertSame(this, f0.apply(this, new Array(1)), "2b");
-assertSame(this, f0.apply(this, new Array(2)), "2c");
-assertSame(this, f0.apply(this, new Array(4242)), "2d");
+assertTrue(this === f0.apply(this), "2a");
+assertTrue(this === f0.apply(this, new Array(1)), "2b");
+assertTrue(this === f0.apply(this, new Array(2)), "2c");
+assertTrue(this === f0.apply(this, new Array(4242)), "2d");
 
-assertSame(this, f0.apply(null), "3a");
-assertSame(this, f0.apply(null, new Array(1)), "3b");
-assertSame(this, f0.apply(null, new Array(2)), "3c");
-assertSame(this, f0.apply(this, new Array(4242)), "3d");
+assertTrue(this === f0.apply(null), "3a");
+assertTrue(this === f0.apply(null, new Array(1)), "3b");
+assertTrue(this === f0.apply(null, new Array(2)), "3c");
+assertTrue(this === f0.apply(this, new Array(4242)), "3d");
 
-assertSame(this, f0.apply(void 0), "4a");
-assertSame(this, f0.apply(void 0, new Array(1)), "4b");
-assertSame(this, f0.apply(void 0, new Array(2)), "4c");
+assertTrue(this === f0.apply(void 0), "4a");
+assertTrue(this === f0.apply(void 0, new Array(1)), "4b");
+assertTrue(this === f0.apply(void 0, new Array(2)), "4c");
 
-assertEquals(void 0, f1.apply(), "1-1");
+assertTrue(void 0 === f1.apply(), "1-1");
 
-assertEquals(void 0, f1.apply(this), "5a");
-assertEquals(void 0, f1.apply(this, new Array(1)), "5b");
-assertEquals(void 0, f1.apply(this, new Array(2)), "5c");
-assertEquals(void 0, f1.apply(this, new Array(4242)), "5d");
-assertEquals(42, f1.apply(this, new Array(42, 43)), "5e");
+assertTrue(void 0 === f1.apply(this), "5a");
+assertTrue(void 0 === f1.apply(this, new Array(1)), "5b");
+assertTrue(void 0 === f1.apply(this, new Array(2)), "5c");
+assertTrue(void 0 === f1.apply(this, new Array(4242)), "5d");
+assertTrue(42 === f1.apply(this, new Array(42, 43)), "5e");
 assertEquals("foo", f1.apply(this, new Array("foo", "bar", "baz", "bo")), "5f");
 
-assertEquals(void 0, f1.apply(null), "6a");
-assertEquals(void 0, f1.apply(null, new Array(1)), "6b");
-assertEquals(void 0, f1.apply(null, new Array(2)), "6c");
-assertEquals(void 0, f1.apply(null, new Array(4242)), "6d");
-assertEquals(42, f1.apply(null, new Array(42, 43)), "6e");
+assertTrue(void 0 === f1.apply(null), "6a");
+assertTrue(void 0 === f1.apply(null, new Array(1)), "6b");
+assertTrue(void 0 === f1.apply(null, new Array(2)), "6c");
+assertTrue(void 0 === f1.apply(null, new Array(4242)), "6d");
+assertTrue(42 === f1.apply(null, new Array(42, 43)), "6e");
 assertEquals("foo", f1.apply(null, new Array("foo", "bar", "baz", "bo")), "6f");
 
-assertEquals(void 0, f1.apply(void 0), "7a");
-assertEquals(void 0, f1.apply(void 0, new Array(1)), "7b");
-assertEquals(void 0, f1.apply(void 0, new Array(2)), "7c");
-assertEquals(void 0, f1.apply(void 0, new Array(4242)), "7d");
-assertEquals(42, f1.apply(void 0, new Array(42, 43)), "7e");
+assertTrue(void 0 === f1.apply(void 0), "7a");
+assertTrue(void 0 === f1.apply(void 0, new Array(1)), "7b");
+assertTrue(void 0 === f1.apply(void 0, new Array(2)), "7c");
+assertTrue(void 0 === f1.apply(void 0, new Array(4242)), "7d");
+assertTrue(42 === f1.apply(void 0, new Array(42, 43)), "7e");
 assertEquals("foo", f1.apply(void 0, new Array("foo", "bar", "ba", "b")), "7f");
 
 var arr = new Array(42, "foo", "fish", "horse");
@@ -108,7 +108,7 @@
 assertEquals("bar42foofishhorse", s.apply("bar", arr), "apply to string");
 
 function al() {
-  assertEquals(Object(345), this);
+  assertEquals(345, this);
   return arguments.length + arguments[arguments.length - 1];
 }
 
@@ -186,7 +186,7 @@
 primes[1] = holey;
 assertThrows("String.prototype.concat.apply.apply('foo', primes)");
 assertEquals("morseper",
-    String.prototype.concat.apply.apply(String.prototype.concat, primes),
+    String.prototype.concat.apply.apply(String.prototype.concat, primes), 
     "moreseper-prime");
 
 delete(Array.prototype["1"]);
diff --git a/test/mjsunit/arguments-apply.js b/test/mjsunit/arguments-apply.js
index 48c4234..5a91228 100644
--- a/test/mjsunit/arguments-apply.js
+++ b/test/mjsunit/arguments-apply.js
@@ -73,11 +73,11 @@
   return ReturnReceiver.apply(receiver, arguments);
 }
 
-assertEquals(Object(42), NonObjectReceiver(42));
+assertEquals(42, NonObjectReceiver(42));
 assertEquals("object", typeof NonObjectReceiver(42));
-assertInstanceof(NonObjectReceiver(42), Number);
-assertSame(this, NonObjectReceiver(null));
-assertSame(this, NonObjectReceiver(void 0));
+assertTrue(NonObjectReceiver(42) instanceof Number);
+assertTrue(this === NonObjectReceiver(null));
+assertTrue(this === NonObjectReceiver(void 0));
 
 
 function FunctionReceiver() {
diff --git a/test/mjsunit/arguments-opt.js b/test/mjsunit/arguments-opt.js
index b8280b4..c74fc75 100644
--- a/test/mjsunit/arguments-opt.js
+++ b/test/mjsunit/arguments-opt.js
@@ -79,38 +79,36 @@
 assertTrue(typeof(A(10000, 0)) == 'undefined');
 
 // String access.
-assertEquals('0', A('0'));
-assertEquals('0', A('0',1));
+assertEquals(0, A('0'));
+assertEquals(0, A('0',1));
 assertEquals(2, A('1',2));
 assertEquals(2, A('1',2,3,4,5));
 assertEquals(5, A('4',2,3,4,5));
-assertEquals('undefined', typeof A('1'));
-assertEquals('undefined', typeof A('3',2,1));
+assertTrue(typeof A('1') == 'undefined');
+assertTrue(typeof A('3',2,1) == 'undefined');
 assertEquals(A, A('callee'));
 assertEquals(1, A('length'));
 assertEquals(2, A('length',2));
 assertEquals(5, A('length',2,3,4,5));
 assertEquals({}.toString, A('toString'));
 assertEquals({}.isPrototypeOf, A('isPrototypeOf'));
-assertEquals('undefined', typeof A('xxx'));
+assertTrue(typeof A('xxx') == 'undefined');
 
 // Object access.
 function O(key) {
   return { toString: function() { return key; } };
 }
 
-var O0 = O(0);
-assertSame(O0, A(O0));
-assertSame(O0, A(O0,1));
+assertEquals(0, A(O(0)));
+assertEquals(0, A(O(0),1));
 assertEquals(2, A(O(1),2));
 assertEquals(2, A(O(1),2,3,4,5));
 assertEquals(5, A(O(4),2,3,4,5));
 assertTrue(typeof A(O(1)) == 'undefined');
 assertTrue(typeof A(O(3),2,1) == 'undefined');
 
-O0 = O('0');
-assertSame(O0, A(O0));
-assertSame(O0, A(O0,1));
+assertEquals(0, A(O('0')));
+assertEquals(0, A(O('0'),1));
 assertEquals(2, A(O('1'),2));
 assertEquals(2, A(O('1'),2,3,4,5));
 assertEquals(5, A(O('4'),2,3,4,5));
diff --git a/test/mjsunit/array-length.js b/test/mjsunit/array-length.js
index 16867db..967d720 100644
--- a/test/mjsunit/array-length.js
+++ b/test/mjsunit/array-length.js
@@ -102,7 +102,7 @@
 
 
 var a = new Array();
-assertEquals(Object(12), a.length = new Number(12));
+assertEquals(12, a.length = new Number(12));
 assertEquals(12, a.length);
 
 
diff --git a/test/mjsunit/compiler/logical-and.js b/test/mjsunit/compiler/logical-and.js
index 783edb6..1d31a0a 100644
--- a/test/mjsunit/compiler/logical-and.js
+++ b/test/mjsunit/compiler/logical-and.js
@@ -46,8 +46,8 @@
 assertFalse(AndBB(0, 1));
 assertFalse(AndBB(1, 1));
 
-assertEquals(0, AndBN(0, 0));
-assertEquals(1, AndBN(0, 1));
+assertFalse(AndBN(0, 0));
+assertTrue(AndBN(0, 1));
 assertFalse(AndBN(1, 0));
 assertEquals(1, AndBN(0, 1));
 assertEquals(2, AndBN(0, 2));
diff --git a/src/proxy.js b/test/mjsunit/compiler/regress-1394.js
similarity index 77%
copy from src/proxy.js
copy to test/mjsunit/compiler/regress-1394.js
index 2516983..b1ce192 100644
--- a/src/proxy.js
+++ b/test/mjsunit/compiler/regress-1394.js
@@ -25,4 +25,35 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-global.Proxy = new $Object();
+// Flags: --allow-natives-syntax
+
+function f(x) {
+  var ret = -1;
+  switch(x){
+    default:
+    case 0:
+      ret = 0;
+      break;
+    case 1:
+      ret = 1;
+      break;
+    case 2:
+      ret = 2;
+      break;
+    case 3:
+      ret = 3;
+      break;
+    case 4:
+      ret = 4;
+      break;
+  }
+  return ret;
+};
+
+for (var i = 0; i < 3; i++) assertEquals(i, f(i));
+
+%OptimizeFunctionOnNextCall(f);
+
+assertEquals(0, f(0));
+assertEquals(1, f(1));
+
diff --git a/test/mjsunit/const.js b/test/mjsunit/const.js
index adb0b7a..a48e82d 100644
--- a/test/mjsunit/const.js
+++ b/test/mjsunit/const.js
@@ -50,20 +50,20 @@
 var valueOfCount = 0;
 
 function g() {
-  const o = { valueOf: function() { valueOfCount++; return 42; } };
-  assertEquals(42, +o);
+  const o = { valueOf: function() { valueOfCount++; return 42; } }
+  assertEquals(42, o);
   assertEquals(1, valueOfCount);
   o++;
-  assertEquals(42, +o);
+  assertEquals(42, o);
   assertEquals(3, valueOfCount);
   ++o;
-  assertEquals(42, +o);
+  assertEquals(42, o);
   assertEquals(5, valueOfCount);
   o--;
-  assertEquals(42, +o);
+  assertEquals(42, o);
   assertEquals(7, valueOfCount);
   --o;
-  assertEquals(42, +o);
+  assertEquals(42, o);
   assertEquals(9, valueOfCount);
 }
 
diff --git a/test/mjsunit/cyrillic.js b/test/mjsunit/cyrillic.js
index 9b21c4f..c5712e6 100644
--- a/test/mjsunit/cyrillic.js
+++ b/test/mjsunit/cyrillic.js
@@ -187,9 +187,9 @@
       var ignore_case = (j == 0);
       var flag = ignore_case ? "i" : "";
       var re = new RegExp(mixed, flag);
-      var expected =
-          ignore_case || (full && !!add_non_ascii_character_to_subject);
-      assertEquals(expected, re.test("A" + suffix), 58 + flag + f);
+      assertEquals(ignore_case || (full && add_non_ascii_character_to_subject),
+                   re.test("A" + suffix),
+                   58 + flag + f);
       assertTrue(re.test("a" + suffix), 59 + flag + f);
       assertTrue(re.test("~" + suffix), 60 + flag + f);
       assertTrue(re.test(cyrillic.MIDDLE), 61 + flag + f);
diff --git a/test/mjsunit/debug-evaluate-with.js b/test/mjsunit/debug-evaluate-with.js
index c19a707..9d95a9f 100644
--- a/test/mjsunit/debug-evaluate-with.js
+++ b/test/mjsunit/debug-evaluate-with.js
@@ -42,13 +42,13 @@
         // Break point in first with block.
         assertEquals(2, exec_state.frame(0).evaluate('a').value());
         assertEquals(2, exec_state.frame(0).evaluate('b').value());
-      } else if (breakPointCount == 2) {
+      } else {
         // Break point in second with block.
         assertEquals(3, exec_state.frame(0).evaluate('a').value());
         assertEquals(1, exec_state.frame(0).evaluate('b').value());
-      } else if (breakPointCount == 3) {
-        // Break point in eval with block.
-        assertEquals('local', exec_state.frame(0).evaluate('foo').value());
+
+        // Indicate that all was processed.
+        listenerComplete = true;
       }
     }
   } catch (e) {
@@ -72,10 +72,6 @@
 };
 
 f();
-
-var foo = "global";
-eval("with({bar:'with'}) { (function g() { var foo = 'local'; debugger; })(); }");
-
 // Make sure that the debug event listener vas invoked.
-assertEquals(3, breakPointCount);
+assertTrue(listenerComplete);
 assertFalse(exception, "exception in listener")
diff --git a/test/mjsunit/debug-scopes.js b/test/mjsunit/debug-scopes.js
index 40adf5b..674f2da 100644
--- a/test/mjsunit/debug-scopes.js
+++ b/test/mjsunit/debug-scopes.js
@@ -31,9 +31,9 @@
 
 
 // Get the Debug object exposed from the debug context global object.
-Debug = debug.Debug;
+Debug = debug.Debug
 
-var test_name;
+var name;
 var listener_delegate;
 var listener_called;
 var exception;
@@ -48,7 +48,7 @@
     if (event == Debug.DebugEvent.Break) {
       break_count++;
       listener_called = true;
-      listener_delegate(exec_state);
+      listener_delegate(exec_state)
     }
   } catch (e) {
     exception = e;
@@ -59,7 +59,7 @@
 Debug.setListener(listener);
 
 
-// Initialize for a new test.
+// Initialize for a noew test.
 function BeginTest(name) {
   test_name = name;
   listener_delegate = null;
@@ -72,7 +72,7 @@
 // Check result of a test.
 function EndTest() {
   assertTrue(listener_called, "listerner not called for " + test_name);
-  assertNull(exception, test_name);
+  assertNull(exception, test_name)
   end_test_count++;
 }
 
@@ -87,9 +87,7 @@
 
     // Check the global object when hitting the global scope.
     if (scopes[i] == debug.ScopeType.Global) {
-      // Objects don't have same class (one is "global", other is "Object",
-      // so just check the properties directly.
-      assertPropertiesEqual(this, scope.scopeObject().value());
+      assertEquals(this, scope.scopeObject().value());
     }
   }
 
@@ -98,7 +96,7 @@
 
   // Send a scopes request and check the result.
   var json;
-  var request_json = '{"seq":0,"type":"request","command":"scopes"}';
+  request_json = '{"seq":0,"type":"request","command":"scopes"}'
   var response_json = dcp.processDebugJSONRequest(request_json);
   var response = JSON.parse(response_json);
   assertEquals(scopes.length, response.body.scopes.length);
@@ -123,7 +121,7 @@
 // Check that the content of the scope is as expected. For functions just check
 // that there is a function.
 function CheckScopeContent(content, number, exec_state) {
-  var scope = exec_state.frame().scope(number);
+  var scope = exec_state.frame().scope(number)
   var count = 0;
   for (var p in content) {
     var property_mirror = scope.scopeObject().property(p);
@@ -165,9 +163,9 @@
 
   // Send a scope request for information on a single scope and check the
   // result.
-  var request_json = '{"seq":0,"type":"request","command":"scope","arguments":{"number":';
+  request_json = '{"seq":0,"type":"request","command":"scope","arguments":{"number":'
   request_json += scope.scopeIndex();
-  request_json += '}}';
+  request_json += '}}'
   var response_json = dcp.processDebugJSONRequest(request_json);
   var response = JSON.parse(response_json);
   assertEquals(scope.scopeType(), response.body.type);
@@ -197,8 +195,8 @@
   CheckScopeChain([debug.ScopeType.Local,
                    debug.ScopeType.Global], exec_state);
   CheckScopeContent({}, 0, exec_state);
-};
-local_1();
+}
+local_1()
 EndTest();
 
 
@@ -213,8 +211,8 @@
   CheckScopeChain([debug.ScopeType.Local,
                    debug.ScopeType.Global], exec_state);
   CheckScopeContent({a:1}, 0, exec_state);
-};
-local_2(1);
+}
+local_2(1)
 EndTest();
 
 
@@ -230,8 +228,8 @@
   CheckScopeChain([debug.ScopeType.Local,
                    debug.ScopeType.Global], exec_state);
   CheckScopeContent({a:1,x:3}, 0, exec_state);
-};
-local_3(1);
+}
+local_3(1)
 EndTest();
 
 
@@ -248,8 +246,8 @@
   CheckScopeChain([debug.ScopeType.Local,
                    debug.ScopeType.Global], exec_state);
   CheckScopeContent({a:1,b:2,x:3,y:4}, 0, exec_state);
-};
-local_4(1, 2);
+}
+local_4(1, 2)
 EndTest();
 
 
@@ -265,8 +263,8 @@
   CheckScopeChain([debug.ScopeType.Local,
                    debug.ScopeType.Global], exec_state);
   CheckScopeContent({}, 0, exec_state);
-};
-local_5();
+}
+local_5()
 EndTest();
 
 
@@ -282,8 +280,8 @@
   CheckScopeChain([debug.ScopeType.Local,
                    debug.ScopeType.Global], exec_state);
   CheckScopeContent({i:5}, 0, exec_state);
-};
-local_6();
+}
+local_6()
 EndTest();
 
 
@@ -303,8 +301,8 @@
   CheckScopeChain([debug.ScopeType.Local,
                    debug.ScopeType.Global], exec_state);
   CheckScopeContent({a:1,b:2,x:3,y:4,i:5,j:6}, 0, exec_state);
-};
-local_7(1, 2);
+}
+local_7(1, 2)
 EndTest();
 
 
@@ -322,8 +320,8 @@
                    debug.ScopeType.Local,
                    debug.ScopeType.Global], exec_state);
   CheckScopeContent({}, 0, exec_state);
-};
-with_1();
+}
+with_1()
 EndTest();
 
 
@@ -345,8 +343,8 @@
                    debug.ScopeType.Global], exec_state);
   CheckScopeContent({}, 0, exec_state);
   CheckScopeContent({}, 1, exec_state);
-};
-with_2();
+}
+with_2()
 EndTest();
 
 
@@ -364,8 +362,8 @@
                    debug.ScopeType.Local,
                    debug.ScopeType.Global], exec_state);
   CheckScopeContent({a:1,b:2}, 0, exec_state);
-};
-with_3();
+}
+with_3()
 EndTest();
 
 
@@ -387,8 +385,8 @@
                    debug.ScopeType.Global], exec_state);
   CheckScopeContent({a:2,b:1}, 0, exec_state);
   CheckScopeContent({a:1,b:2}, 1, exec_state);
-};
-with_4();
+}
+with_4()
 EndTest();
 
 
@@ -413,8 +411,8 @@
   CheckScopeContent(with_object, 1, exec_state);
   assertEquals(exec_state.frame().scope(0).scopeObject(), exec_state.frame().scope(1).scopeObject());
   assertEquals(with_object, exec_state.frame().scope(1).scopeObject().value());
-};
-with_5();
+}
+with_5()
 EndTest();
 
 
@@ -435,8 +433,8 @@
                    debug.ScopeType.Closure,
                    debug.ScopeType.Global], exec_state);
   CheckScopeContent({a:1}, 1, exec_state);
-};
-closure_1(1)();
+}
+closure_1(1)()
 EndTest();
 
 
@@ -460,8 +458,8 @@
                    debug.ScopeType.Closure,
                    debug.ScopeType.Global], exec_state);
   CheckScopeContent({a:1,x:3}, 1, exec_state);
-};
-closure_2(1, 2)();
+}
+closure_2(1, 2)()
 EndTest();
 
 
@@ -486,8 +484,8 @@
                    debug.ScopeType.Closure,
                    debug.ScopeType.Global], exec_state);
   CheckScopeContent({a:1,b:2,x:3,y:4}, 1, exec_state);
-};
-closure_3(1, 2)();
+}
+closure_3(1, 2)()
 EndTest();
 
 
@@ -515,8 +513,8 @@
                    debug.ScopeType.Closure,
                    debug.ScopeType.Global], exec_state);
   CheckScopeContent({a:1,b:2,x:3,y:4,f:function(){}}, 1, exec_state);
-};
-closure_4(1, 2)();
+}
+closure_4(1, 2)()
 EndTest();
 
 
@@ -543,8 +541,8 @@
                    debug.ScopeType.Closure,
                    debug.ScopeType.Global], exec_state);
   CheckScopeContent({a:1,b:2,x:3,y:4,f:function(){}}, 1, exec_state);
-};
-closure_5(1, 2)();
+}
+closure_5(1, 2)()
 EndTest();
 
 
@@ -561,7 +559,7 @@
       debugger;
       some_global = a;
       return f;
-    };
+    }
   }
   return f(a, b);
 }
@@ -573,8 +571,8 @@
                    debug.ScopeType.Global], exec_state);
   CheckScopeContent({a:1}, 1, exec_state);
   CheckScopeContent({f:function(){}}, 2, exec_state);
-};
-closure_6(1, 2)();
+}
+closure_6(1, 2)()
 EndTest();
 
 
@@ -595,7 +593,7 @@
       debugger;
       some_global = a;
       return f;
-    };
+    }
   }
   return f(a, b);
 }
@@ -608,8 +606,8 @@
   CheckScopeContent({}, 0, exec_state);
   CheckScopeContent({a:1,b:2,x:3,y:4,i:5,j:6}, 1, exec_state);
   CheckScopeContent({a:1,b:2,x:3,y:4,i:5,j:6,f:function(){}}, 2, exec_state);
-};
-closure_7(1, 2)();
+}
+closure_7(1, 2)()
 EndTest();
 
 
@@ -625,7 +623,7 @@
   CheckScopeChain([debug.ScopeType.Local,
                    debug.ScopeType.Global], exec_state);
   CheckScopeContent({x: 2}, 0, exec_state);
-};
+}
 closure_8();
 EndTest();
 
@@ -635,7 +633,7 @@
   eval("var y = 1;");
   eval("var z = 1;");
   (function inner(x) {
-    y++;
+    y++; 
     z++;
     debugger;
   })(2);
@@ -645,7 +643,7 @@
   CheckScopeChain([debug.ScopeType.Local,
                    debug.ScopeType.Closure,
                    debug.ScopeType.Global], exec_state);
-};
+}
 closure_9();
 EndTest();
 
@@ -672,7 +670,7 @@
             return f;
           }
         }
-      };
+      }
     }
   }
   return f(a, b);
@@ -692,8 +690,8 @@
   CheckScopeContent({j:13}, 3, exec_state);
   CheckScopeContent({a:1,b:2,x:9,y:10,i:11,j:12}, 4, exec_state);
   CheckScopeContent({a:1,b:2,x:3,y:4,i:5,j:6,f:function(){}}, 5, exec_state);
-};
-the_full_monty(1, 2)();
+}
+the_full_monty(1, 2)()
 EndTest();
 
 
@@ -712,7 +710,7 @@
                    debug.ScopeType.Closure,
                    debug.ScopeType.Global], exec_state);
   CheckScopeContent({x: 2}, 0, exec_state);
-};
+}
 closure_in_with_1();
 EndTest();
 
@@ -737,7 +735,7 @@
   CheckScopeContent({x: 3}, 0, exec_state);
   CheckScopeContent({x: 2}, 1, exec_state);
   CheckScopeContent({x: 1}, 2, exec_state);
-};
+}
 closure_in_with_2();
 EndTest();
 
@@ -752,7 +750,7 @@
          debugger;
        }
      })(2);
-   };
+   }
 }
 
 function closure_in_with_3() {
@@ -775,7 +773,7 @@
 BeginTest("Global");
 listener_delegate = function(exec_state) {
   CheckScopeChain([debug.ScopeType.Global], exec_state);
-};
+}
 debugger;
 EndTest();
 
@@ -795,8 +793,8 @@
                    debug.ScopeType.Local,
                    debug.ScopeType.Global], exec_state);
   CheckScopeContent({e:'Exception'}, 0, exec_state);
-};
-catch_block_1();
+}
+catch_block_1()
 EndTest();
 
 
@@ -819,8 +817,8 @@
                    debug.ScopeType.Global], exec_state);
   CheckScopeContent({n:10}, 0, exec_state);
   CheckScopeContent({e:'Exception'}, 1, exec_state);
-};
-catch_block_2();
+}
+catch_block_2()
 EndTest();
 
 
@@ -843,8 +841,8 @@
                    debug.ScopeType.Global], exec_state);
   CheckScopeContent({e:'Exception'}, 0, exec_state);
   CheckScopeContent({y:78}, 1, exec_state);
-};
-catch_block_3();
+}
+catch_block_3()
 EndTest();
 
 
@@ -870,12 +868,10 @@
   CheckScopeContent({n:10}, 0, exec_state);
   CheckScopeContent({e:'Exception'}, 1, exec_state);
   CheckScopeContent({y:98}, 2, exec_state);
-};
-catch_block_4();
+}
+catch_block_4()
 EndTest();
 
 
-assertEquals(begin_test_count, break_count,
-             'one or more tests did not enter the debugger');
-assertEquals(begin_test_count, end_test_count,
-             'one or more tests did not have its result checked');
+assertEquals(begin_test_count, break_count, 'one or more tests did not enter the debugger');
+assertEquals(begin_test_count, end_test_count, 'one or more tests did not have its result checked');
diff --git a/test/mjsunit/execScript-case-insensitive.js b/test/mjsunit/execScript-case-insensitive.js
deleted file mode 100644
index 468d657..0000000
--- a/test/mjsunit/execScript-case-insensitive.js
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2008 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-//       copyright notice, this list of conditions and the following
-//       disclaimer in the documentation and/or other materials provided
-//       with the distribution.
-//     * Neither the name of Google Inc. nor the names of its
-//       contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-var x  = 0;
-execScript('x = 1', 'javascript');
-assertEquals(1, x);
-
-execScript('x = 2', 'JavaScript');
-assertEquals(2, x);
-
diff --git a/test/mjsunit/function-names.js b/test/mjsunit/function-names.js
index c083f18..5ed0b79 100644
--- a/test/mjsunit/function-names.js
+++ b/test/mjsunit/function-names.js
@@ -128,6 +128,6 @@
     "encodeURI", "encodeURIComponent", "Error", "TypeError",
     "RangeError", "SyntaxError", "ReferenceError", "EvalError",
     "URIError", "isNaN", "isFinite", "parseInt", "parseFloat",
-    "eval", "execScript"];
+    "eval"];
 
 TestFunctionNames(this, globalFunctions);
diff --git a/test/mjsunit/compiler/inline-throw.js b/test/mjsunit/limit-locals.js
similarity index 71%
rename from test/mjsunit/compiler/inline-throw.js
rename to test/mjsunit/limit-locals.js
index e3aab39..ad9ec43 100644
--- a/test/mjsunit/compiler/inline-throw.js
+++ b/test/mjsunit/limit-locals.js
@@ -25,45 +25,22 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-// Flags: --allow-natives-syntax
+// Test that there is a limit of 32767 locals.
 
-// Test inlined functions contain throw.
-function doThrow() {
-  throw "uha";
+function function_with_n_locals(n) {
+  test_prefix = "prefix ";
+  test_suffix = " suffix";
+  var src = "test_prefix + (function () {"
+  for (var i = 1; i <= n; i++) {
+    src += "var x" + i + ";";
+  }
+  src += "return " + n + ";})() + test_suffix";
+  return eval(src);
 }
 
-function f(x) {
-  if (x == 42) throw doThrow();
-  if (x == 43) throw "wow";
-  return x == 0;
-}
+assertEquals("prefix 0 suffix", function_with_n_locals(0));
+assertEquals("prefix 16000 suffix", function_with_n_locals(16000));
+assertEquals("prefix 32767 suffix", function_with_n_locals(32767));
 
-function g(x) {
-  return f(x);
-}
-
-for (var i = 0; i < 5; i++) g(0);
-%OptimizeFunctionOnNextCall(g);
-assertEquals(true, g(0));
-
-try {
-  g(42);
-} catch(e) {
-  assertEquals("uha", e);
-}
-
-// Test inlining in a test context.
-function h(x) {
-  return f(x) ? "yes" : "no";
-}
-
-for (var i = 0; i < 5; i++) h(0);
-%OptimizeFunctionOnNextCall(h);
-assertEquals("yes", h(0));
-
-try {
-  h(43);
-} catch(e) {
-  assertEquals("wow", e);
-}
-
+assertThrows("function_with_n_locals(32768)");
+assertThrows("function_with_n_locals(100000)");
diff --git a/test/mjsunit/math-abs.js b/test/mjsunit/math-abs.js
index 33df6f4..bec1a01 100644
--- a/test/mjsunit/math-abs.js
+++ b/test/mjsunit/math-abs.js
@@ -35,13 +35,13 @@
 function test() {
   assertEquals(0, Math.abs(0));
   assertEquals(0, Math.abs(zero()));
-  assertEquals(0, Math.abs(-0));
+  assertEquals(1/0, 1/Math.abs(-0));  // 0 == -0, so we use reciprocals.
   assertEquals(Infinity, Math.abs(Infinity));
   assertEquals(Infinity, Math.abs(-Infinity));
-  assertEquals(NaN, Math.abs(NaN));
-  assertEquals(NaN, Math.abs(-NaN));
-  assertEquals('Infinity', Math.abs(Number('+Infinity')).toString());
-  assertEquals('Infinity', Math.abs(Number('-Infinity')).toString());
+  assertNaN(Math.abs(NaN));
+  assertNaN(Math.abs(-NaN));
+  assertEquals('Infinity', Math.abs(Number('+Infinity').toString()));
+  assertEquals('Infinity', Math.abs(Number('-Infinity').toString()));
   assertEquals('NaN', Math.abs(NaN).toString());
   assertEquals('NaN', Math.abs(-NaN).toString());
 
@@ -85,8 +85,8 @@
   assertEquals(two_31 - 1, Math.abs(two_31 - 1));
   assertEquals(two_31 - 1, Math.abs(-two_31 + 1));
 
-  assertEquals(NaN, Math.abs("not a number"));
-  assertEquals(NaN, Math.abs([1, 2, 3]));
+  assertNaN(Math.abs("not a number"));
+  assertNaN(Math.abs([1, 2, 3]));
   assertEquals(42, Math.abs({valueOf: function() { return 42; } }));
   assertEquals(42, Math.abs({valueOf: function() { return -42; } }));
 }
diff --git a/test/mjsunit/math-floor.js b/test/mjsunit/math-floor.js
index 11f4cd7..0d1c0ac 100644
--- a/test/mjsunit/math-floor.js
+++ b/test/mjsunit/math-floor.js
@@ -1,4 +1,4 @@
-// Copyright 2011 the V8 project authors. All rights reserved.
+// Copyright 2010 the V8 project authors. All rights reserved.
 // Redistribution and use in source and binary forms, with or without
 // modification, are permitted provided that the following conditions are
 // met:
@@ -25,18 +25,7 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-// Flags: --max-new-space-size=256 --allow-natives-syntax
-
-function testFloor(expect, input) {
-  function test(n) {
-    return Math.floor(n);
-  }
-  assertEquals(expect, test(input));
-  assertEquals(expect, test(input));
-  assertEquals(expect, test(input));
-  %OptimizeFunctionOnNextCall(test);
-  assertEquals(expect, test(input));
-}
+// Flags: --max-new-space-size=256
 
 function zero() {
   var x = 0.5;
@@ -44,84 +33,82 @@
 }
 
 function test() {
-  testFloor(0, 0);
-  testFloor(0, zero());
-  testFloor(-0, -0);
-  testFloor(Infinity, Infinity);
-  testFloor(-Infinity, -Infinity);
-  testFloor(NaN, NaN);
+  assertEquals(0, Math.floor(0));
+  assertEquals(0, Math.floor(zero()));
+  assertEquals(1/-0, 1/Math.floor(-0));  // 0 == -0, so we use reciprocals.
+  assertEquals(Infinity, Math.floor(Infinity));
+  assertEquals(-Infinity, Math.floor(-Infinity));
+  assertNaN(Math.floor(NaN));
 
-  testFloor(0, 0.1);
-  testFloor(0, 0.49999999999999994);
-  testFloor(0, 0.5);
-  testFloor(0, 0.7);
-  testFloor(-1, -0.1);
-  testFloor(-1, -0.49999999999999994);
-  testFloor(-1, -0.5);
-  testFloor(-1, -0.7);
-  testFloor(1, 1);
-  testFloor(1, 1.1);
-  testFloor(1, 1.5);
-  testFloor(1, 1.7);
-  testFloor(-1, -1);
-  testFloor(-2, -1.1);
-  testFloor(-2, -1.5);
-  testFloor(-2, -1.7);
+  assertEquals(0, Math.floor(0.1));
+  assertEquals(0, Math.floor(0.5));
+  assertEquals(0, Math.floor(0.7));
+  assertEquals(-1, Math.floor(-0.1));
+  assertEquals(-1, Math.floor(-0.5));
+  assertEquals(-1, Math.floor(-0.7));
+  assertEquals(1, Math.floor(1));
+  assertEquals(1, Math.floor(1.1));
+  assertEquals(1, Math.floor(1.5));
+  assertEquals(1, Math.floor(1.7));
+  assertEquals(-1, Math.floor(-1));
+  assertEquals(-2, Math.floor(-1.1));
+  assertEquals(-2, Math.floor(-1.5));
+  assertEquals(-2, Math.floor(-1.7));
 
-  testFloor(0, Number.MIN_VALUE);
-  testFloor(-1, -Number.MIN_VALUE);
-  testFloor(Number.MAX_VALUE, Number.MAX_VALUE);
-  testFloor(-Number.MAX_VALUE, -Number.MAX_VALUE);
-  testFloor(Infinity, Infinity);
-  testFloor(-Infinity, -Infinity);
+  assertEquals(0, Math.floor(Number.MIN_VALUE));
+  assertEquals(-1, Math.floor(-Number.MIN_VALUE));
+  assertEquals(Number.MAX_VALUE, Math.floor(Number.MAX_VALUE));
+  assertEquals(-Number.MAX_VALUE, Math.floor(-Number.MAX_VALUE));
+  assertEquals(Infinity, Math.floor(Infinity));
+  assertEquals(-Infinity, Math.floor(-Infinity));
 
   // 2^30 is a smi boundary.
   var two_30 = 1 << 30;
 
-  testFloor(two_30, two_30);
-  testFloor(two_30, two_30 + 0.1);
-  testFloor(two_30, two_30 + 0.5);
-  testFloor(two_30, two_30 + 0.7);
+  assertEquals(two_30, Math.floor(two_30));
+  assertEquals(two_30, Math.floor(two_30 + 0.1));
+  assertEquals(two_30, Math.floor(two_30 + 0.5));
+  assertEquals(two_30, Math.floor(two_30 + 0.7));
 
-  testFloor(two_30 - 1, two_30 - 1);
-  testFloor(two_30 - 1, two_30 - 1 + 0.1);
-  testFloor(two_30 - 1, two_30 - 1 + 0.5);
-  testFloor(two_30 - 1, two_30 - 1 + 0.7);
+  assertEquals(two_30 - 1, Math.floor(two_30 - 1));
+  assertEquals(two_30 - 1, Math.floor(two_30 - 1 + 0.1));
+  assertEquals(two_30 - 1, Math.floor(two_30 - 1 + 0.5));
+  assertEquals(two_30 - 1, Math.floor(two_30 - 1 + 0.7));
 
-  testFloor(-two_30, -two_30);
-  testFloor(-two_30, -two_30 + 0.1);
-  testFloor(-two_30, -two_30 + 0.5);
-  testFloor(-two_30, -two_30 + 0.7);
+  assertEquals(-two_30, Math.floor(-two_30));
+  assertEquals(-two_30, Math.floor(-two_30 + 0.1));
+  assertEquals(-two_30, Math.floor(-two_30 + 0.5));
+  assertEquals(-two_30, Math.floor(-two_30 + 0.7));
 
-  testFloor(-two_30 + 1, -two_30 + 1);
-  testFloor(-two_30 + 1, -two_30 + 1 + 0.1);
-  testFloor(-two_30 + 1, -two_30 + 1 + 0.5);
-  testFloor(-two_30 + 1, -two_30 + 1 + 0.7);
+  assertEquals(-two_30 + 1, Math.floor(-two_30 + 1));
+  assertEquals(-two_30 + 1, Math.floor(-two_30 + 1 + 0.1));
+  assertEquals(-two_30 + 1, Math.floor(-two_30 + 1 + 0.5));
+  assertEquals(-two_30 + 1, Math.floor(-two_30 + 1 + 0.7));
 
   // 2^52 is a precision boundary.
   var two_52 = (1 << 30) * (1 << 22);
 
-  testFloor(two_52, two_52);
-  testFloor(two_52, two_52 + 0.1);
+  assertEquals(two_52, Math.floor(two_52));
+  assertEquals(two_52, Math.floor(two_52 + 0.1));
   assertEquals(two_52, two_52 + 0.5);
-  testFloor(two_52, two_52 + 0.5);
+  assertEquals(two_52, Math.floor(two_52 + 0.5));
   assertEquals(two_52 + 1, two_52 + 0.7);
-  testFloor(two_52 + 1, two_52 + 0.7);
+  assertEquals(two_52 + 1, Math.floor(two_52 + 0.7));
 
-  testFloor(two_52 - 1, two_52 - 1);
-  testFloor(two_52 - 1, two_52 - 1 + 0.1);
-  testFloor(two_52 - 1, two_52 - 1 + 0.5);
-  testFloor(two_52 - 1, two_52 - 1 + 0.7);
+  assertEquals(two_52 - 1, Math.floor(two_52 - 1));
+  assertEquals(two_52 - 1, Math.floor(two_52 - 1 + 0.1));
+  assertEquals(two_52 - 1, Math.floor(two_52 - 1 + 0.5));
+  assertEquals(two_52 - 1, Math.floor(two_52 - 1 + 0.7));
 
-  testFloor(-two_52, -two_52);
-  testFloor(-two_52, -two_52 + 0.1);
-  testFloor(-two_52, -two_52 + 0.5);
-  testFloor(-two_52, -two_52 + 0.7);
+  assertEquals(-two_52, Math.floor(-two_52));
+  assertEquals(-two_52, Math.floor(-two_52 + 0.1));
+  assertEquals(-two_52, Math.floor(-two_52 + 0.5));
+  assertEquals(-two_52, Math.floor(-two_52 + 0.7));
 
-  testFloor(-two_52 + 1, -two_52 + 1);
-  testFloor(-two_52 + 1, -two_52 + 1 + 0.1);
-  testFloor(-two_52 + 1, -two_52 + 1 + 0.5);
-  testFloor(-two_52 + 1, -two_52 + 1 + 0.7);
+  assertEquals(-two_52 + 1, Math.floor(-two_52 + 1));
+  assertEquals(-two_52 + 1, Math.floor(-two_52 + 1 + 0.1));
+  assertEquals(-two_52 + 1, Math.floor(-two_52 + 1 + 0.5));
+  assertEquals(-two_52 + 1, Math.floor(-two_52 + 1 + 0.7));
 }
 
 
diff --git a/test/mjsunit/math-min-max.js b/test/mjsunit/math-min-max.js
index 0833c5c..13d54a3 100644
--- a/test/mjsunit/math-min-max.js
+++ b/test/mjsunit/math-min-max.js
@@ -76,9 +76,9 @@
 assertEquals(-1, Math.min(-1, +0, -0));
 assertEquals(-1, Math.min(+0, -1, -0));
 assertEquals(-1, Math.min(-0, -1, +0));
-assertEquals(NaN, Math.min('oxen'));
-assertEquals(NaN, Math.min('oxen', 1));
-assertEquals(NaN, Math.min(1, 'oxen'));
+assertNaN(Math.min('oxen'));
+assertNaN(Math.min('oxen', 1));
+assertNaN(Math.min(1, 'oxen'));
 
 
 // Test Math.max().
@@ -109,9 +109,9 @@
 assertEquals(1, Math.max(+1, +0, -0));
 assertEquals(1, Math.max(+0, +1, -0));
 assertEquals(1, Math.max(-0, +1, +0));
-assertEquals(NaN, Math.max('oxen'));
-assertEquals(NaN, Math.max('oxen', 1));
-assertEquals(NaN, Math.max(1, 'oxen'));
+assertNaN(Math.max('oxen'));
+assertNaN(Math.max('oxen', 1));
+assertNaN(Math.max(1, 'oxen'));
 
 assertEquals(Infinity, 1/Math.max(ZERO, -0));
 assertEquals(Infinity, 1/Math.max(-0, ZERO));
diff --git a/test/mjsunit/math-round.js b/test/mjsunit/math-round.js
index 1366557..3b06088 100644
--- a/test/mjsunit/math-round.js
+++ b/test/mjsunit/math-round.js
@@ -25,133 +25,77 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-// Flags: --allow-natives-syntax
+assertEquals(0, Math.round(0));
+assertEquals(-0, Math.round(-0));
+assertEquals(Infinity, Math.round(Infinity));
+assertEquals(-Infinity, Math.round(-Infinity));
+assertNaN(Math.round(NaN));
 
-function testRound(expect, input) {
-  function doRound(input) {
-    return Math.round(input);
-  }
-  assertEquals(expect, doRound(input));
-  assertEquals(expect, doRound(input));
-  assertEquals(expect, doRound(input));
-  %OptimizeFunctionOnNextCall(doRound);
-  assertEquals(expect, doRound(input));
-}
+assertEquals(1, Math.round(0.5));
+assertEquals(1, Math.round(0.7));
+assertEquals(1, Math.round(1));
+assertEquals(1, Math.round(1.1));
+assertEquals(1, Math.round(1.49999));
+assertEquals(1/-0, 1/Math.round(-0.5));  // Test for -0 result.
+assertEquals(-1, Math.round(-0.5000000000000001));
+assertEquals(-1, Math.round(-0.7));
+assertEquals(-1, Math.round(-1));
+assertEquals(-1, Math.round(-1.1));
+assertEquals(-1, Math.round(-1.49999));
+assertEquals(-1, Math.round(-1.5));
 
-testRound(0, 0);
-testRound(-0, -0);
-testRound(Infinity, Infinity);
-testRound(-Infinity, -Infinity);
-testRound(NaN, NaN);
+assertEquals(9007199254740990, Math.round(9007199254740990));
+assertEquals(9007199254740991, Math.round(9007199254740991));
+assertEquals(-9007199254740990, Math.round(-9007199254740990));
+assertEquals(-9007199254740991, Math.round(-9007199254740991));
+assertEquals(Number.MAX_VALUE, Math.round(Number.MAX_VALUE));
+assertEquals(-Number.MAX_VALUE, Math.round(-Number.MAX_VALUE));
 
-testRound(1, 0.5);
-testRound(1, 0.7);
-testRound(1, 1);
-testRound(1, 1.1);
-testRound(1, 1.49999);
-testRound(-0, -0.5);
-testRound(-1, -0.5000000000000001);
-testRound(-1, -0.7);
-testRound(-1, -1);
-testRound(-1, -1.1);
-testRound(-1, -1.49999);
-testRound(-1, -1.5);
-
-testRound(9007199254740990, 9007199254740990);
-testRound(9007199254740991, 9007199254740991);
-testRound(-9007199254740990, -9007199254740990);
-testRound(-9007199254740991, -9007199254740991);
-testRound(Number.MAX_VALUE, Number.MAX_VALUE);
-testRound(-Number.MAX_VALUE, -Number.MAX_VALUE);
-
-testRound(536870911, 536870910.5);
-testRound(536870911, 536870911);
-testRound(536870911, 536870911.4);
-testRound(536870912, 536870911.5);
-testRound(536870912, 536870912);
-testRound(536870912, 536870912.4);
-testRound(536870913, 536870912.5);
-testRound(536870913, 536870913);
-testRound(536870913, 536870913.4);
-testRound(1073741823, 1073741822.5);
-testRound(1073741823, 1073741823);
-testRound(1073741823, 1073741823.4);
-testRound(1073741824, 1073741823.5);
-testRound(1073741824, 1073741824);
-testRound(1073741824, 1073741824.4);
-testRound(1073741825, 1073741824.5);
-testRound(2147483647, 2147483646.5);
-testRound(2147483647, 2147483647);
-testRound(2147483647, 2147483647.4);
-testRound(2147483648, 2147483647.5);
-testRound(2147483648, 2147483648);
-testRound(2147483648, 2147483648.4);
-testRound(2147483649, 2147483648.5);
+assertEquals(536870911, Math.round(536870910.5));
+assertEquals(536870911, Math.round(536870911));
+assertEquals(536870911, Math.round(536870911.4));
+assertEquals(536870912, Math.round(536870911.5));
+assertEquals(536870912, Math.round(536870912));
+assertEquals(536870912, Math.round(536870912.4));
+assertEquals(536870913, Math.round(536870912.5));
+assertEquals(536870913, Math.round(536870913));
+assertEquals(536870913, Math.round(536870913.4));
+assertEquals(1073741823, Math.round(1073741822.5));
+assertEquals(1073741823, Math.round(1073741823));
+assertEquals(1073741823, Math.round(1073741823.4));
+assertEquals(1073741824, Math.round(1073741823.5));
+assertEquals(1073741824, Math.round(1073741824));
+assertEquals(1073741824, Math.round(1073741824.4));
+assertEquals(1073741825, Math.round(1073741824.5));
+assertEquals(2147483647, Math.round(2147483646.5));
+assertEquals(2147483647, Math.round(2147483647));
+assertEquals(2147483647, Math.round(2147483647.4));
+assertEquals(2147483648, Math.round(2147483647.5));
+assertEquals(2147483648, Math.round(2147483648));
+assertEquals(2147483648, Math.round(2147483648.4));
+assertEquals(2147483649, Math.round(2147483648.5));
 
 // Tests based on WebKit LayoutTests
 
-testRound(0, 0.4);
-testRound(-0, -0.4);
-testRound(-0, -0.5);
-testRound(1, 0.6);
-testRound(-1, -0.6);
-testRound(2, 1.5);
-testRound(2, 1.6);
-testRound(-2, -1.6);
-testRound(8640000000000000, 8640000000000000);
-testRound(8640000000000001, 8640000000000001);
-testRound(8640000000000002, 8640000000000002);
-testRound(9007199254740990, 9007199254740990);
-testRound(9007199254740991, 9007199254740991);
-testRound(1.7976931348623157e+308, 1.7976931348623157e+308);
-testRound(-8640000000000000, -8640000000000000);
-testRound(-8640000000000001, -8640000000000001);
-testRound(-8640000000000002, -8640000000000002);
-testRound(-9007199254740990, -9007199254740990);
-testRound(-9007199254740991, -9007199254740991);
-testRound(-1.7976931348623157e+308, -1.7976931348623157e+308);
-testRound(Infinity, Infinity);
-testRound(-Infinity, -Infinity);
-
-  // Some special double number cases.
-var ulp = Math.pow(2, -1022 - 52);
-var max_denormal = (Math.pow(2, 52) - 1) * ulp;
-var min_normal = Math.pow(2, -1022);
-var max_fraction = Math.pow(2, 52) - 0.5;
-var min_nonfraction = Math.pow(2, 52);
-var max_non_infinite = Number.MAX_VALUE;
-
-var max_smi31 = Math.pow(2,30) - 1;
-var min_smi31 = -Math.pow(2,30);
-var max_smi32 = Math.pow(2,31) - 1;
-var min_smi32 = -Math.pow(2,31);
-
-testRound(0, ulp);
-testRound(0, max_denormal);
-testRound(0, min_normal);
-testRound(0, 0.49999999999999994);
-testRound(1, 0.5);
-testRound(Math.pow(2,52), max_fraction);
-testRound(min_nonfraction, min_nonfraction);
-testRound(max_non_infinite, max_non_infinite);
-
-testRound(max_smi31, max_smi31 - 0.5);
-testRound(max_smi31 + 1, max_smi31 + 0.5);
-testRound(max_smi32, max_smi32 - 0.5);
-testRound(max_smi32 + 1, max_smi32 + 0.5);
-
-testRound(-0, -ulp);
-testRound(-0, -max_denormal);
-testRound(-0, -min_normal);
-testRound(-0, -0.49999999999999994);
-testRound(-0, -0.5);
-testRound(-Math.pow(2,52)+1, -max_fraction);
-testRound(-min_nonfraction, -min_nonfraction);
-testRound(-max_non_infinite, -max_non_infinite);
-
-testRound(min_smi31, min_smi31 - 0.5);
-testRound(min_smi31 + 1, min_smi31 + 0.5);
-testRound(min_smi32, min_smi32 - 0.5);
-testRound(min_smi32 + 1, min_smi32 + 0.5);
-
-
+assertEquals(0, Math.round(0.4));
+assertEquals(-0, Math.round(-0.4));
+assertEquals(-0, Math.round(-0.5));
+assertEquals(1, Math.round(0.6));
+assertEquals(-1, Math.round(-0.6));
+assertEquals(2, Math.round(1.5));
+assertEquals(2, Math.round(1.6));
+assertEquals(-2, Math.round(-1.6));
+assertEquals(8640000000000000, Math.round(8640000000000000));
+assertEquals(8640000000000001, Math.round(8640000000000001));
+assertEquals(8640000000000002, Math.round(8640000000000002));
+assertEquals(9007199254740990, Math.round(9007199254740990));
+assertEquals(9007199254740991, Math.round(9007199254740991));
+assertEquals(1.7976931348623157e+308, Math.round(1.7976931348623157e+308));
+assertEquals(-8640000000000000, Math.round(-8640000000000000));
+assertEquals(-8640000000000001, Math.round(-8640000000000001));
+assertEquals(-8640000000000002, Math.round(-8640000000000002));
+assertEquals(-9007199254740990, Math.round(-9007199254740990));
+assertEquals(-9007199254740991, Math.round(-9007199254740991));
+assertEquals(-1.7976931348623157e+308, Math.round(-1.7976931348623157e+308));
+assertEquals(Infinity, Math.round(Infinity));
+assertEquals(-Infinity, Math.round(-Infinity));
diff --git a/test/mjsunit/mirror-number.js b/test/mjsunit/mirror-number.js
index fc71c12..2db5df4 100644
--- a/test/mjsunit/mirror-number.js
+++ b/test/mjsunit/mirror-number.js
@@ -50,10 +50,10 @@
   // Parse JSON representation and check.
   var fromJSON = eval('(' + json + ')');
   assertEquals('number', fromJSON.type);
-  if (isFinite(n)) {
+  if (!isNaN(n)) {
     assertEquals(n, fromJSON.value);
   } else {
-    // NaN and Infinity values are encoded as strings.
+    // NaN values are encoded as strings.
     assertTrue(typeof fromJSON.value == 'string');
     if (n === Infinity) {
       assertEquals('Infinity', fromJSON.value);
diff --git a/test/mjsunit/mirror-object.js b/test/mjsunit/mirror-object.js
index d4d228c..1888554 100644
--- a/test/mjsunit/mirror-object.js
+++ b/test/mjsunit/mirror-object.js
@@ -38,7 +38,7 @@
 
 MirrorRefCache.prototype.lookup = function(handle) {
   return this.refs_[handle];
-};
+}
 
 function testObjectMirror(obj, cls_name, ctor_name, hasSpecialProperties) {
   // Create mirror and JSON representation.
@@ -66,7 +66,7 @@
   assertFalse(mirror.hasIndexedInterceptor(), 'No indexed interceptor expected');
 
   var names = mirror.propertyNames();
-  var properties = mirror.properties();
+  var properties = mirror.properties()
   assertEquals(names.length, properties.length);
   for (var i = 0; i < properties.length; i++) {
     assertTrue(properties[i] instanceof debug.Mirror, 'Unexpected mirror hierachy');
@@ -130,20 +130,15 @@
           assertTrue(typeof(fromJSON.properties[i].attributes) === 'undefined', 'Unexpected serialized attributes');
         }
 
-        // Lookup the serialized object from the handle reference.
+        // Lookup the serialized object from the handle reference.        
         var o = refs.lookup(fromJSON.properties[i].ref);
         assertTrue(o != void 0, 'Referenced object is not serialized');
 
         assertEquals(properties[i].value().type(), o.type, 'Unexpected serialized property type for ' + name);
         if (properties[i].value().isPrimitive()) {
-          if (properties[i].value().type() == "null" ||
-              properties[i].value().type() == "undefined") {
-            // Null and undefined has no value property.
-            assertFalse("value" in o, 'Unexpected value property for ' + name);
-          } else if (properties[i].value().type() == "number" &&
-                     !isFinite(properties[i].value().value())) {
-            assertEquals(String(properties[i].value().value()), o.value,
-                         'Unexpected serialized property value for ' + name);
+          // Special check for NaN as NaN == NaN is false.
+          if (properties[i].value().isNumber() && isNaN(properties[i].value().value())) {
+            assertEquals('NaN', o.value, 'Unexpected serialized property value for ' + name);
           } else {
             assertEquals(properties[i].value().value(), o.value, 'Unexpected serialized property value for ' + name);
           }
diff --git a/test/mjsunit/mjsunit.js b/test/mjsunit/mjsunit.js
index faa5a43..436bdc8 100644
--- a/test/mjsunit/mjsunit.js
+++ b/test/mjsunit/mjsunit.js
@@ -31,325 +31,234 @@
   this.stack = new Error("").stack;
 }
 
+MjsUnitAssertionError.prototype.toString = function () {
+  return this.message;
+}
+
 /*
  * This file is included in all mini jsunit test cases.  The test
  * framework expects lines that signal failed tests to start with
  * the f-word and ignore all other lines.
  */
 
-
-MjsUnitAssertionError.prototype.toString = function () {
-  return this.message;
-};
-
-
-// Expected and found values the same objects, or the same primitive
-// values.
-// For known primitive values, please use assertEquals.
-var assertSame;
-
-// Expected and found values are identical primitive values or functions
-// or similarly structured objects (checking internal properties
-// of, e.g., Number and Date objects, the elements of arrays
-// and the properties of non-Array objects).
-var assertEquals;
-
-// The found object is an Array with the same length and elements
-// as the expected object. The expected object doesn't need to be an Array,
-// as long as it's "array-ish".
-var assertArrayEquals;
-
-// The found object must have the same enumerable properties as the
-// expected object. The type of object isn't checked.
-var assertPropertiesEqual;
-
-// Assert that the string conversion of the found value is equal to
-// the expected string. Only kept for backwards compatability, please
-// check the real structure of the found value.
-var assertToStringEquals;
-
-// Checks that the found value is true. Use with boolean expressions
-// for tests that doesn't have their own assertXXX function.
-var assertTrue;
-
-// Checks that the found value is false.
-var assertFalse;
-
-// Checks that the found value is null. Kept for historical compatability,
-// please just use assertEquals(null, expected).
-var assertNull;
-
-// Checks that the found value is *not* null.
-var assertNotNull;
-
-// Assert that the passed function or eval code throws an exception.
-// The optional second argument is an exception constructor that the
-// thrown exception is checked against with "instanceof".
-// The optional third argument is a message type string that is compared
-// to the type property on the thrown exception.
-var assertThrows;
-
-// Assert that the passed function or eval code does not throw an exception.
-var assertDoesNotThrow;
-
-// Asserts that the found value is an instance of the constructor passed
-// as the second argument.
-var assertInstanceof;
-
-// Assert that this code is never executed (i.e., always fails if executed).
-var assertUnreachable;
-
-(function () {  // Scope for utility functions.
-
-  function classOf(object) {
-    // Argument must not be null or undefined.
-    var string = Object.prototype.toString.call(object);
-    // String has format [object <ClassName>].
-    return string.substring(8, string.length - 1);
-  }
-
-
-  function PrettyPrint(value) {
-    switch (typeof value) {
-      case "string":
-        return JSON.stringify(value);
-      case "number":
-        if (value === 0 && (1 / value) < 0) return "-0";
-        // FALLTHROUGH.
-      case "boolean":
-      case "undefined":
-      case "function":
-        return String(value);
-      case "object":
-        if (value === null) return "null";
-        var objectClass = classOf(value);
-        switch (objectClass) {
+function MjsUnitToString(value) {
+  switch (typeof value) {
+    case "string":
+      return JSON.stringify(value);
+    case "number":
+      if (value === 0 && (1 / value) < 0) return "-0";
+    case "boolean":
+    case "null":
+    case "undefined":
+    case "function":
+      return String(value);
+    case "object":
+      if (value === null) return "null";
+      var clazz = Object.prototype.toString.call(value);
+      clazz = clazz.substring(8, clazz.length - 1);
+      switch (clazz) {
         case "Number":
         case "String":
         case "Boolean":
         case "Date":
-          return objectClass + "(" + PrettyPrint(value.valueOf()) + ")";
+          return clazz + "(" + MjsUnitToString(value.valueOf()) + ")";
         case "RegExp":
           return value.toString();
         case "Array":
-          return "[" + value.map(PrettyPrintArrayElement).join(",") + "]";
+          return "[" + value.map(MjsUnitArrayElementToString).join(",") + "]";
         case "Object":
           break;
         default:
-          return objectClass + "()";
-        }
-        // [[Class]] is "Object".
-        var name = value.constructor.name;
-        if (name) return name + "()";
-        return "Object()";
-      default:
-        return "-- unknown value --";
-    }
+          return clazz + "()";
+      }
+      // [[Class]] is "Object".
+      var constructor = value.constructor.name;
+      if (name) return name + "()";
+      return "Object()";
+    default:
+      return "-- unknown value --";
+  }
+}
+
+
+function MjsUnitArrayElementToString(value, index, array) {
+  if (value === undefined && !(index in array)) return "";
+  return MjsUnitToString(value);
+}
+
+
+function fail(expected, found, name_opt) {
+  var message = "Fail" + "ure";
+  if (name_opt) {
+    // Fix this when we ditch the old test runner.
+    message += " (" + name_opt + ")";
   }
 
-
-  function PrettyPrintArrayElement(value, index, array) {
-    if (value === undefined && !(index in array)) return "";
-    return PrettyPrint(value);
-  }
+  message += ": expected <" + MjsUnitToString(expected) +
+      "> found <" + MjsUnitToString(found) + ">";
+  throw new MjsUnitAssertionError(message);
+}
 
 
-  function fail(expectedText, found, name_opt) {
-    var message = "Fail" + "ure";
-    if (name_opt) {
-      // Fix this when we ditch the old test runner.
-      message += " (" + name_opt + ")";
-    }
-
-    message += ": expected <" + expectedText +
-        "> found <" + PrettyPrint(found) + ">";
-    throw new MjsUnitAssertionError(message);
-  }
-
-
-  function deepObjectEquals(a, b) {
-    var aProps = Object.keys(a);
-    aProps.sort();
-    var bProps = Object.keys(b);
-    bProps.sort();
-    if (!deepEquals(aProps, bProps)) {
+function deepObjectEquals(a, b) {
+  var aProps = [];
+  for (var key in a)
+    aProps.push(key);
+  var bProps = [];
+  for (var key in b)
+    bProps.push(key);
+  aProps.sort();
+  bProps.sort();
+  if (!deepEquals(aProps, bProps))
+    return false;
+  for (var i = 0; i < aProps.length; i++) {
+    if (!deepEquals(a[aProps[i]], b[aProps[i]]))
       return false;
-    }
-    for (var i = 0; i < aProps.length; i++) {
-      if (!deepEquals(a[aProps[i]], b[aProps[i]])) {
+  }
+  return true;
+}
+
+
+function deepEquals(a, b) {
+  if (a == b) {
+    // Check for -0.
+    if (a === 0 && b === 0) return (1 / a) === (1 / b);
+    return true;
+  }
+  if (typeof a == "number" && typeof b == "number" && isNaN(a) && isNaN(b)) {
+    return true;
+  }
+  if (a == null || b == null) return false;
+  if (a.constructor === RegExp || b.constructor === RegExp) {
+    return (a.constructor === b.constructor) && (a.toString() === b.toString());
+  }
+  if ((typeof a) !== 'object' || (typeof b) !== 'object' ||
+      (a === null) || (b === null))
+    return false;
+  if (a.constructor === Array) {
+    if (b.constructor !== Array)
+      return false;
+    if (a.length != b.length)
+      return false;
+    for (var i = 0; i < a.length; i++) {
+      if (i in a) {
+        if (!(i in b) || !(deepEquals(a[i], b[i])))
+          return false;
+      } else if (i in b) {
         return false;
       }
     }
     return true;
-  }
-
-
-  function deepEquals(a, b) {
-    if (a === b) {
-      // Check for -0.
-      if (a === 0) return (1 / a) === (1 / b);
-      return true;
-    }
-    if (typeof a != typeof b) return false;
-    if (typeof a == "number") return isNaN(a) && isNaN(b);
-    if (typeof a !== "object" && typeof a !== "function") return false;
-    // Neither a nor b is primitive.
-    var objectClass = classOf(a);
-    if (objectClass !== classOf(b)) return false;
-    if (objectClass === "RegExp") {
-      // For RegExp, just compare pattern and flags using its toString.
-      return (a.toString() === b.toString());
-    }
-    // Functions are only identical to themselves.
-    if (objectClass === "Function") return false;
-    if (objectClass === "Array") {
-      var elementCount = 0;
-      if (a.length != b.length) {
-        return false;
-      }
-      for (var i = 0; i < a.length; i++) {
-        if (!deepEquals(a[i], b[i])) return false;
-      }
-      return true;
-    }
-    if (objectClass == "String" || objectClass == "Number" ||
-      objectClass == "Boolean" || objectClass == "Date") {
-      if (a.valueOf() !== b.valueOf()) return false;
-    }
+  } else {
     return deepObjectEquals(a, b);
   }
+}
 
 
-  assertSame = function assertSame(expected, found, name_opt) {
-    if (found === expected) {
-      if (expected !== 0 || (1 / expected) == (1 / found)) return;
-    } else if (isNaN(expected) && isNaN(found)) {
-      return;
+function assertSame(expected, found, name_opt) {
+  if (found !== expected) {
+    fail(expected, found, name_opt);
+  }
+}
+
+
+function assertEquals(expected, found, name_opt) {
+  if (!deepEquals(found, expected)) {
+    fail(expected, found, name_opt);
+  }
+}
+
+
+function assertArrayEquals(expected, found, name_opt) {
+  var start = "";
+  if (name_opt) {
+    start = name_opt + " - ";
+  }
+  assertEquals(expected.length, found.length, start + "array length");
+  if (expected.length == found.length) {
+    for (var i = 0; i < expected.length; ++i) {
+      assertEquals(expected[i], found[i], start + "array element at index " + i);
     }
-    fail(PrettyPrint(expected), found, name_opt);
-  };
+  }
+}
 
 
-  assertEquals = function assertEquals(expected, found, name_opt) {
-    if (!deepEquals(found, expected)) {
-      fail(PrettyPrint(expected), found, name_opt);
+function assertTrue(value, name_opt) {
+  assertEquals(true, value, name_opt);
+}
+
+
+function assertFalse(value, name_opt) {
+  assertEquals(false, value, name_opt);
+}
+
+
+function assertNaN(value, name_opt) {
+  if (!isNaN(value)) {
+    fail("NaN", value, name_opt);
+  }
+}
+
+
+function assertNull(value, name_opt) {
+  if (value !== null) {
+    fail("null", value, name_opt);
+  }
+}
+
+
+function assertNotNull(value, name_opt) {
+  if (value === null) {
+    fail("not null", value, name_opt);
+  }
+}
+
+
+function assertThrows(code, type_opt, cause_opt) {
+  var threwException = true;
+  try {
+    if (typeof code == 'function') {
+      code();
+    } else {
+      eval(code);
     }
-  };
+    threwException = false;
+  } catch (e) {
+    if (typeof type_opt == 'function')
+      assertInstanceof(e, type_opt);
+    if (arguments.length >= 3)
+      assertEquals(e.type, cause_opt);
+    // Do nothing.
+  }
+  if (!threwException) assertTrue(false, "did not throw exception");
+}
 
 
-  assertArrayEquals = function assertArrayEquals(expected, found, name_opt) {
-    var start = "";
-    if (name_opt) {
-      start = name_opt + " - ";
+function assertInstanceof(obj, type) {
+  if (!(obj instanceof type)) {
+    assertTrue(false, "Object <" + obj + "> is not an instance of <" + type + ">");
+  }
+}
+
+
+function assertDoesNotThrow(code) {
+  try {
+    if (typeof code == 'function') {
+      code();
+    } else {
+      eval(code);
     }
-    assertEquals(expected.length, found.length, start + "array length");
-    if (expected.length == found.length) {
-      for (var i = 0; i < expected.length; ++i) {
-        assertEquals(expected[i], found[i],
-                     start + "array element at index " + i);
-      }
-    }
-  };
+  } catch (e) {
+    assertTrue(false, "threw an exception: " + (e.message || e));
+  }
+}
 
 
-  assertPropertiesEqual = function assertPropertiesEqual(expected, found,
-                                                         name_opt) {
-    // Check properties only.
-    if (!deepObjectEquals(expected, found)) {
-      fail(expected, found, name_opt);
-    }
-  };
-
-
-  assertToStringEquals = function assertToStringEquals(expected, found,
-                                                       name_opt) {
-    if (expected != String(found)) {
-      fail(expected, found, name_opt);
-    }
-  };
-
-
-  assertTrue = function assertTrue(value, name_opt) {
-    assertEquals(true, value, name_opt);
-  };
-
-
-  assertFalse = function assertFalse(value, name_opt) {
-    assertEquals(false, value, name_opt);
-  };
-
-
-  assertNull = function assertNull(value, name_opt) {
-    if (value !== null) {
-      fail("null", value, name_opt);
-    }
-  };
-
-
-  assertNotNull = function assertNotNull(value, name_opt) {
-    if (value === null) {
-      fail("not null", value, name_opt);
-    }
-  };
-
-
-  assertThrows = function assertThrows(code, type_opt, cause_opt) {
-    var threwException = true;
-    try {
-      if (typeof code == 'function') {
-        code();
-      } else {
-        eval(code);
-      }
-      threwException = false;
-    } catch (e) {
-      if (typeof type_opt == 'function') {
-        assertInstanceof(e, type_opt);
-      }
-      if (arguments.length >= 3) {
-        assertEquals(e.type, cause_opt);
-      }
-      // Success.
-      return;
-    }
-    throw new MjsUnitAssertionError("Did not throw exception");
-  };
-
-
-  assertInstanceof = function assertInstanceof(obj, type) {
-    if (!(obj instanceof type)) {
-      var actualTypeName = null;
-      var actualConstructor = Object.prototypeOf(obj).constructor;
-      if (typeof actualConstructor == "function") {
-        actualTypeName = actualConstructor.name || String(actualConstructor);
-      }
-      fail("Object <" + PrettyPrint(obj) + "> is not an instance of <" +
-               (type.name || type) + ">" +
-               (actualTypeName ? " but of < " + actualTypeName + ">" : ""));
-    }
-  };
-
-
-   assertDoesNotThrow = function assertDoesNotThrow(code, name_opt) {
-    try {
-      if (typeof code == 'function') {
-        code();
-      } else {
-        eval(code);
-      }
-    } catch (e) {
-      fail("threw an exception: ", e.message || e, name_opt);
-    }
-  };
-
-  assertUnreachable = function assertUnreachable(name_opt) {
-    // Fix this when we ditch the old test runner.
-    var message = "Fail" + "ure: unreachable";
-    if (name_opt) {
-      message += " - " + name_opt;
-    }
-    throw new MjsUnitAssertionError(message);
-  };
-
-})();
-
+function assertUnreachable(name_opt) {
+  // Fix this when we ditch the old test runner.
+  var message = "Fail" + "ure: unreachable";
+  if (name_opt) {
+    message += " - " + name_opt;
+  }
+  throw new MjsUnitAssertionError(message);
+}
diff --git a/test/mjsunit/number-string-index-call.js b/test/mjsunit/number-string-index-call.js
index 4391917..6f540c0 100644
--- a/test/mjsunit/number-string-index-call.js
+++ b/test/mjsunit/number-string-index-call.js
@@ -26,7 +26,7 @@
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 // Flags: --call_regexp
-var callbacks = [ function() { return 'foo'; }, "nonobject", /abc/ ];
+var callbacks = [ function() {return 'foo'}, "nonobject", /abc/ ];
 assertEquals('foo', callbacks['0']());
 assertThrows("callbacks['1']()");
-assertEquals(['abc'], callbacks['2']("abcdefg"));
+assertEquals('abc', callbacks['2']("abcdefg"));
diff --git a/test/mjsunit/number-tostring.js b/test/mjsunit/number-tostring.js
index 35e77e2..8312080 100644
--- a/test/mjsunit/number-tostring.js
+++ b/test/mjsunit/number-tostring.js
@@ -55,7 +55,7 @@
 assertEquals("-90.12", (-90.12).toString());
 assertEquals("-0.1", (-0.1).toString());
 assertEquals("-0.01", (-0.01).toString());
-assertEquals("-0.0123", (-0.0123).toString());
+assertEquals("-0.0123", (-0.0123).toString())
 assertEquals("-111111111111111110000", (-111111111111111111111).toString());
 assertEquals("-1.1111111111111111e+21", (-1111111111111111111111).toString());
 assertEquals("-1.1111111111111111e+22", (-11111111111111111111111).toString());
@@ -219,7 +219,7 @@
 // Test that we round up even when the last digit generated is even.
 // dtoa does not do this in its original form.
 assertEquals("1", 0.5.toFixed(0), "0.5.toFixed(0)");
-assertEquals("-1", (-0.5).toFixed(0), "(-0.5).toFixed(0)");
+assertEquals("-1", -0.5.toFixed(0), "-0.5.toFixed(0)");
 assertEquals("1.3", 1.25.toFixed(1), "1.25.toFixed(1)");
 // This is bizare, but Spidermonkey and KJS behave the same.
 assertEquals("234.2040", (234.20405).toFixed(4), "234.2040.toFixed(4)");
diff --git a/test/mjsunit/object-seal.js b/test/mjsunit/object-seal.js
index fb9bb92..3ce2367 100644
--- a/test/mjsunit/object-seal.js
+++ b/test/mjsunit/object-seal.js
@@ -91,7 +91,7 @@
 // Since writable is not affected by seal we should still be able to
 // update the values.
 obj.x = "43";
-assertEquals("43", obj.x);
+assertEquals(43, obj.x);
 
 // Test on accessors.
 var obj2 = {};
@@ -142,7 +142,7 @@
 Object.seal(arr);
 assertTrue(Object.isSealed(arr));
 assertFalse(Object.isExtensible(arr));
-// Since the values in the array is still writable this object
+// Since the values in the array is still writable this object 
 // is not frozen.
 assertFalse(Object.isFrozen(arr));
 
@@ -186,5 +186,5 @@
 assertFalse(Object.isSealed(obj4));
 
 // Make sure that Object.seal returns the sealed object.
-var obj4 = {};
-assertTrue(obj4 === Object.seal(obj4));
+var obj4 = {}
+assertTrue(obj4 === Object.seal(obj4))
diff --git a/test/mjsunit/override-eval-with-non-function.js b/test/mjsunit/override-eval-with-non-function.js
index edbcb19..aa93b25 100644
--- a/test/mjsunit/override-eval-with-non-function.js
+++ b/test/mjsunit/override-eval-with-non-function.js
@@ -30,7 +30,7 @@
 
 function test() {
   eval = /foo/;
-  assertEquals(["foo"], eval("foobar"));
+  assertEquals("foo", eval("foobar"));
 }
 
 test();
diff --git a/test/mjsunit/regexp-capture.js b/test/mjsunit/regexp-capture.js
index 8aae717..dc24491 100755
--- a/test/mjsunit/regexp-capture.js
+++ b/test/mjsunit/regexp-capture.js
@@ -39,20 +39,19 @@
 assertEquals("z", "y".replace(/(x)?\1y/, "z"));
 assertEquals("", "y".replace(/(x)?y/, "$1"));
 assertEquals("undefined", "y".replace(/(x)?\1y/,
-    function($0, $1){
-        return String($1);
+    function($0, $1){ 
+        return String($1); 
     }));
-assertEquals("undefined", "y".replace(/(x)?y/,
-    function($0, $1){
-        return String($1);
+assertEquals("undefined", "y".replace(/(x)?y/, 
+    function($0, $1){ 
+        return String($1); 
     }));
-assertEquals("undefined", "y".replace(/(x)?y/,
-    function($0, $1){
-        return $1;
+assertEquals("undefined", "y".replace(/(x)?y/, 
+    function($0, $1){ 
+        return $1; 
     }));
 
 // See https://bugzilla.mozilla.org/show_bug.cgi?id=476146
-assertEquals(["bbc", "b"], /^(b+|a){1,2}?bc/.exec("bbc"));
-assertEquals(["bbaa", "a", "", "a"],
-             /((\3|b)\2(a)){2,}/.exec("bbaababbabaaaaabbaaaabba"));
+assertEquals("bbc,b", /^(b+|a){1,2}?bc/.exec("bbc"));
+assertEquals("bbaa,a,,a", /((\3|b)\2(a)){2,}/.exec("bbaababbabaaaaabbaaaabba"));
 
diff --git a/test/mjsunit/regexp-compile.js b/test/mjsunit/regexp-compile.js
index 6a24325..6f8e751 100644
--- a/test/mjsunit/regexp-compile.js
+++ b/test/mjsunit/regexp-compile.js
@@ -27,16 +27,16 @@
 
 // Test that we don't cache the result of a regexp match across a
 // compile event.
-var re = /x/;
+var re = /x/; 
 assertEquals("a.yb", "axyb".replace(re, "."));
 
-re.compile("y");
+re.compile("y")
 assertEquals("ax.b", "axyb".replace(re, "."));
 
 re.compile("(x)");
 
-assertEquals(["x", "x"], re.exec("axyb"));
+assertEquals("x,x", re.exec("axyb"));
 
 re.compile("(y)");
 
-assertEquals(["y", "y"], re.exec("axyb"));
+assertEquals("y,y", re.exec("axyb"));
diff --git a/test/mjsunit/regexp-static.js b/test/mjsunit/regexp-static.js
index 0f84968..9e73f3d 100644
--- a/test/mjsunit/regexp-static.js
+++ b/test/mjsunit/regexp-static.js
@@ -134,8 +134,7 @@
 assertEquals('abcd', 'abcd'.replace(re, f));
 
 // lastParen where the last parenthesis didn't match.
-assertEquals(["foo",undefined], /foo(?:a(x))?/.exec("foobx"),
-             "lastParen setup");
+assertEquals("foo,", /foo(?:a(x))?/.exec("foobx"), "lastParen setup");
 assertEquals("", RegExp.lastParen, "lastParen");
 
 // The same test for $1 to $9.
diff --git a/test/mjsunit/regexp-string-methods.js b/test/mjsunit/regexp-string-methods.js
index 56604a6..ef3bf6e 100644
--- a/test/mjsunit/regexp-string-methods.js
+++ b/test/mjsunit/regexp-string-methods.js
@@ -28,18 +28,18 @@
 // Regexp shouldn't use String.prototype.slice()
 var s = new String("foo");
 assertEquals("f", s.slice(0,1));
-String.prototype.slice = function() { return "x"; };
+String.prototype.slice = function() { return "x"; }
 assertEquals("x", s.slice(0,1));
-assertEquals(["g"], /g/.exec("gg"));
+assertEquals("g", /g/.exec("gg"));
 
 // Regexp shouldn't use String.prototype.charAt()
 var f1 = new RegExp("f", "i");
-assertEquals(["F"], f1.exec("F"));
+assertEquals("F", f1.exec("F"));
 assertEquals("f", "foo".charAt(0));
 String.prototype.charAt = function(idx) { return 'g'; };
 assertEquals("g", "foo".charAt(0));
 var f2 = new RegExp("[g]", "i");
-assertEquals(["G"], f2.exec("G"));
+assertEquals("G", f2.exec("G"));
 assertTrue(f2.ignoreCase);
 
 // On the other hand test is defined in a semi-coherent way as a call to exec.
@@ -47,5 +47,5 @@
 // We match other browsers in using the original value of RegExp.prototype.exec.
 // I.e., RegExp.prototype.test shouldn't use the current value of
 // RegExp.prototype.exec.
-RegExp.prototype.exec = function(string) { return 'x'; };
+RegExp.prototype.exec = function(string) { return 'x'; }
 assertFalse(/f/.test('x'));
diff --git a/test/mjsunit/regexp.js b/test/mjsunit/regexp.js
index 3c4f883..24e1b21 100644
--- a/test/mjsunit/regexp.js
+++ b/test/mjsunit/regexp.js
@@ -333,9 +333,9 @@
 
 // Check decimal escapes doesn't overflow.
 // (Note: \214 is interpreted as octal).
-assertArrayEquals(["\x8c7483648"],
-                  /\2147483648/.exec("\x8c7483648"),
-                  "Overflow decimal escape");
+assertEquals(/\2147483648/.exec("\x8c7483648"),
+             ["\x8c7483648"],
+             "Overflow decimal escape");
 
 
 // Check numbers in quantifiers doesn't overflow and doesn't throw on
@@ -435,8 +435,8 @@
 re.lastIndex = 42;
 re.someOtherProperty = 42;
 re.someDeletableProperty = 42;
-re[37] = 37;
-re[42] = 42;
+re[37] = 37;  
+re[42] = 42;  
 
 re.compile("ra+", "i");
 assertEquals("ra+", re.source);
@@ -466,7 +466,7 @@
 assertEquals(37, re[42]);
 
 // Test boundary-checks.
-function assertRegExpTest(re, input, test) {
+function assertRegExpTest(re, input, test) { 
   assertEquals(test, re.test(input), "test:" + re + ":" + input);
 }
 
@@ -525,7 +525,7 @@
   assertEquals(1, res.index);
   assertEquals("axyzb", res.input);
   assertEquals(undefined, res.foobar);
-
+  
   res.foobar = "Arglebargle";
   res[3] = "Glopglyf";
   assertEquals("Arglebargle", res.foobar);
@@ -534,18 +534,18 @@
 // Test that we perform the spec required conversions in the correct order.
 var log;
 var string = "the string";
-var fakeLastIndex = {
-      valueOf: function() {
+var fakeLastIndex = { 
+      valueOf: function() { 
         log.push("li");
         return 0;
-      }
+      } 
     };
-var fakeString = {
+var fakeString = { 
       toString: function() {
         log.push("ts");
         return string;
-      },
-      length: 0
+      }, 
+      length: 0 
     };
 
 var re = /str/;
diff --git a/test/mjsunit/regress/regress-1122.js b/test/mjsunit/regress/regress-1122.js
index 7dc9b24..815511d 100644
--- a/test/mjsunit/regress/regress-1122.js
+++ b/test/mjsunit/regress/regress-1122.js
@@ -25,12 +25,14 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-// Test that we can handle functions with up to 32766 arguments, and that
-// functions with more arguments throw an exception.
+// Test that we can handle function calls with up to 32766 arguments, and
+// that function calls with more arguments throw an exception.  Apply a
+// similar limit to the number of function parameters.
 
-// See http://code.google.com/p/v8/issues/detail?id=1122.
+// See http://code.google.com/p/v8/issues/detail?id=1122 and
+// http://code.google.com/p/v8/issues/detail?id=1413.
 
-function function_with_n_args(n) {
+function function_with_n_params_and_m_args(n, m) {
   test_prefix = 'prefix ';
   test_suffix = ' suffix';
   var source = 'test_prefix + (function f(';
@@ -39,7 +41,7 @@
     source += 'arg' + arg;
   }
   source += ') { return arg' + (n - n % 2) / 2 + '; })(';
-  for (var arg = 0; arg < n ; arg++) {
+  for (var arg = 0; arg < m ; arg++) {
     if (arg != 0) source += ',';
     source += arg;
   }
@@ -47,9 +49,20 @@
   return eval(source);
 }
 
-assertEquals('prefix 4000 suffix', function_with_n_args(8000));
-assertEquals('prefix 9000 suffix', function_with_n_args(18000));
-assertEquals('prefix 16000 suffix', function_with_n_args(32000));
+assertEquals('prefix 4000 suffix',
+             function_with_n_params_and_m_args(8000, 8000));
+assertEquals('prefix 3000 suffix',
+             function_with_n_params_and_m_args(6000, 8000));
+assertEquals('prefix 5000 suffix',
+             function_with_n_params_and_m_args(10000, 8000));
+assertEquals('prefix 9000 suffix',
+             function_with_n_params_and_m_args(18000, 18000));
+assertEquals('prefix 16000 suffix',
+             function_with_n_params_and_m_args(32000, 32000));
+assertEquals('prefix undefined suffix',
+             function_with_n_params_and_m_args(32000, 10000));
 
-assertThrows("function_with_n_args(35000)");
-assertThrows("function_with_n_args(100000)");
+assertThrows("function_with_n_params_and_m_args(35000, 35000)");
+assertThrows("function_with_n_params_and_m_args(100000, 100000)");
+assertThrows("function_with_n_params_and_m_args(35000, 30000)");
+assertThrows("function_with_n_params_and_m_args(30000, 35000)");
diff --git a/test/mjsunit/regress/regress-1199637.js b/test/mjsunit/regress/regress-1199637.js
index 9c560a9..d9116c1 100644
--- a/test/mjsunit/regress/regress-1199637.js
+++ b/test/mjsunit/regress/regress-1199637.js
@@ -34,43 +34,43 @@
 const READ_ONLY = 1;
 
 // Use DeclareGlobal...
-%SetProperty(this.__proto__, "a", 1234, NONE);
+%SetProperty(this.__proto__, "a", "1234", NONE);
 assertEquals(1234, a);
 eval("var a = 5678;");
 assertEquals(5678, a);
 
-%SetProperty(this.__proto__, "b", 1234, NONE);
+%SetProperty(this.__proto__, "b", "1234", NONE);
 assertEquals(1234, b);
 eval("const b = 5678;");
 assertEquals(5678, b);
 
-%SetProperty(this.__proto__, "c", 1234, READ_ONLY);
+%SetProperty(this.__proto__, "c", "1234", READ_ONLY);
 assertEquals(1234, c);
 eval("var c = 5678;");
 assertEquals(5678, c);
 
-%SetProperty(this.__proto__, "d", 1234, READ_ONLY);
+%SetProperty(this.__proto__, "d", "1234", READ_ONLY);
 assertEquals(1234, d);
 eval("const d = 5678;");
 assertEquals(5678, d);
 
 // Use DeclareContextSlot...
-%SetProperty(this.__proto__, "x", 1234, NONE);
+%SetProperty(this.__proto__, "x", "1234", NONE);
 assertEquals(1234, x);
 eval("with({}) { var x = 5678; }");
 assertEquals(5678, x);
 
-%SetProperty(this.__proto__, "y", 1234, NONE);
+%SetProperty(this.__proto__, "y", "1234", NONE);
 assertEquals(1234, y);
 eval("with({}) { const y = 5678; }");
 assertEquals(5678, y);
 
-%SetProperty(this.__proto__, "z", 1234, READ_ONLY);
+%SetProperty(this.__proto__, "z", "1234", READ_ONLY);
 assertEquals(1234, z);
 eval("with({}) { var z = 5678; }");
 assertEquals(5678, z);
 
-%SetProperty(this.__proto__, "w", 1234, READ_ONLY);
+%SetProperty(this.__proto__, "w", "1234", READ_ONLY);
 assertEquals(1234, w);
 eval("with({}) { const w = 5678; }");
 assertEquals(5678, w);
diff --git a/test/mjsunit/regress/regress-1341167.js b/test/mjsunit/regress/regress-1341167.js
deleted file mode 100644
index 194a7b8..0000000
--- a/test/mjsunit/regress/regress-1341167.js
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2008 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-//       copyright notice, this list of conditions and the following
-//       disclaimer in the documentation and/or other materials provided
-//       with the distribution.
-//     * Neither the name of Google Inc. nor the names of its
-//       contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Make sure that 'this' is bound to the global object when using
-// execScript.
-
-var result;
-execScript("result = this");
-assertTrue(result === this);
diff --git a/src/proxy.js b/test/mjsunit/regress/regress-1403.js
similarity index 88%
rename from src/proxy.js
rename to test/mjsunit/regress/regress-1403.js
index 2516983..f2520cc 100644
--- a/src/proxy.js
+++ b/test/mjsunit/regress/regress-1403.js
@@ -25,4 +25,12 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-global.Proxy = new $Object();
+// See: http://code.google.com/p/v8/issues/detail?id=1403
+
+a = [];
+Object.prototype.__proto__ = { __proto__: null };
+a.shift();
+
+a = [];
+Array.prototype.__proto__ = { __proto__: null };
+a.shift();
diff --git a/test/mjsunit/regress/regress-176.js b/test/mjsunit/regress/regress-176.js
index ef0c4f1..b204812 100644
--- a/test/mjsunit/regress/regress-176.js
+++ b/test/mjsunit/regress/regress-176.js
@@ -27,24 +27,24 @@
 
 // See http://code.google.com/p/v8/issues/detail?id=176
 
-assertArrayEquals(["f", undefined],
-                  "foo".match(/(?:(?=(f)o))?f/),
-                  "zero length match in (?:) with capture in lookahead");
-assertArrayEquals(["f", undefined],
-                  "foo".match(/(?=(f)o)?f/),
-                  "zero length match in (?=) with capture in lookahead");
-assertArrayEquals(["fo", "f"],
-                  "foo".match(/(?:(?=(f)o)f)?o/),
-                  "non-zero length match with capture in lookahead");
-assertArrayEquals(["fo", "f"],
-                  "foo".match(/(?:(?=(f)o)f?)?o/),
-                  "non-zero length match with greedy ? in (?:)");
-assertArrayEquals(["fo", "f"],
-                  "foo".match(/(?:(?=(f)o)f??)?o/),
-                  "non-zero length match with non-greedy ? in (?:), o forces backtrack");
-assertArrayEquals(["fo", "f"],
-                  "foo".match(/(?:(?=(f)o)f??)?./),
-                  "non-zero length match with non-greedy ? in (?:), zero length match causes backtrack");
-assertArrayEquals(["f", undefined],
-                  "foo".match(/(?:(?=(f)o)fx)?./),
-                  "x causes backtrack inside (?:)");
+assertEquals("f,",
+             "foo".match(/(?:(?=(f)o))?f/).toString(),
+             "zero length match in (?:) with capture in lookahead");
+assertEquals("f,",
+             "foo".match(/(?=(f)o)?f/).toString(),
+             "zero length match in (?=) with capture in lookahead");
+assertEquals("fo,f",
+             "foo".match(/(?:(?=(f)o)f)?o/),
+             "non-zero length match with capture in lookahead");
+assertEquals("fo,f",
+             "foo".match(/(?:(?=(f)o)f?)?o/),
+             "non-zero length match with greedy ? in (?:)");
+assertEquals("fo,f",
+             "foo".match(/(?:(?=(f)o)f??)?o/),
+             "non-zero length match with non-greedy ? in (?:), o forces backtrack");
+assertEquals("fo,f",
+             "foo".match(/(?:(?=(f)o)f??)?./),
+             "non-zero length match with non-greedy ? in (?:), zero length match causes backtrack");
+assertEquals("f,",
+             "foo".match(/(?:(?=(f)o)fx)?./),
+             "x causes backtrack inside (?:)");
diff --git a/test/mjsunit/regress/regress-187.js b/test/mjsunit/regress/regress-187.js
index 2f8b0a1..44d8d7a 100644
--- a/test/mjsunit/regress/regress-187.js
+++ b/test/mjsunit/regress/regress-187.js
@@ -27,4 +27,4 @@
 
 // See http://code.google.com/p/v8/issues/detail?id=187
 
-assertEquals(["f", undefined], "foo".match(/(?:(?=(f)o)fx|)./));
+assertEquals("f,", "foo".match(/(?:(?=(f)o)fx|)./));
diff --git a/test/mjsunit/regress/regress-399.js b/test/mjsunit/regress/regress-399.js
index 6c8eab5..2ee998b 100644
--- a/test/mjsunit/regress/regress-399.js
+++ b/test/mjsunit/regress/regress-399.js
@@ -28,5 +28,5 @@
 // See http://code.google.com/p/v8/issues/detail?id=399
 
 var date = new Date(1.009804e12);
-var year = Number(String(date).match(/.*(200\d)/)[1]);
+var year = String(date).match(/.*(200\d)/)[1];
 assertEquals(year, date.getFullYear());
diff --git a/src/proxy.js b/test/mjsunit/regress/splice-missing-wb.js
similarity index 67%
copy from src/proxy.js
copy to test/mjsunit/regress/splice-missing-wb.js
index 2516983..5ff0d81 100644
--- a/src/proxy.js
+++ b/test/mjsunit/regress/splice-missing-wb.js
@@ -25,4 +25,32 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-global.Proxy = new $Object();
+// Flags: --expose-gc
+
+// Create array large enough to span several page regions.
+var a = new Array(500);
+
+// Fill it with values.
+for (var i = 0; i < a.length; i++) a[i] = {idx:i};
+
+// Force it into oldspace.
+gc();
+gc();
+
+// Array should be in old space now. Store young object into array.
+// Region will be marked.
+a[0] = {idx:0};
+
+// Delete elements a[2] .. a[201]. Internally we will use
+// trimming of backing store. a[0] a[1] will be moved to
+// memory location previously occupied by a[200] a[201].
+a.splice(2, 200);
+
+// Force gc and heap verification.
+gc();
+
+// Try accessing a[0].idx. It will segfault if write-barrier was accidentally
+// omitted.
+assertEquals(0, a[0].idx);
+assertEquals(1, a[1].idx);
+assertEquals(202, a[2].idx);
diff --git a/test/mjsunit/string-fromcharcode.js b/test/mjsunit/string-fromcharcode.js
index 1986dda..7a2db5f 100644
--- a/test/mjsunit/string-fromcharcode.js
+++ b/test/mjsunit/string-fromcharcode.js
@@ -65,10 +65,8 @@
   assertEquals("  ", fcc(0x20 + 0.5, 0x20));
 
   var receiver = (num < 5) ? String : (num < 9) ? "dummy" : 42;
-  fcc2 = (num < 5) ? fcc
-                   : (num < 9) ? constFun(Object("dummy"))
-                               : constFun(Object(42));
-  var expected = (num < 5) ? " " : (num < 9) ? Object("dummy") : Object(42);
+  fcc2 = (num < 5) ? fcc : (num < 9) ? constFun("dummy") : constFun(42);
+  var expected = (num < 5) ? " " : (num < 9) ? "dummy" : 42;
   assertEquals(expected, receiver.fromCharCode(0x20));
   assertEquals(expected, receiver.fromCharCode(0x20 - 0x10000));
   assertEquals(expected, receiver.fromCharCode(0x20 + 0.5));
diff --git a/test/mjsunit/string-index.js b/test/mjsunit/string-index.js
index 315708c..1d6476e 100644
--- a/test/mjsunit/string-index.js
+++ b/test/mjsunit/string-index.js
@@ -61,7 +61,7 @@
 assertEquals("undefined", typeof(foo[-2]), "negative index");
 
 var S = new String("foo");
-assertEquals(Object("foo"), S);
+assertEquals("foo", S);
 assertEquals("f", S[0], "string object");
 assertEquals("f", S["0"], "string object");
 S[0] = 'bente';
@@ -131,7 +131,7 @@
 assertEquals(false, "3" in S);
 
 var N = new Number(43);
-assertEquals(Object(43), N);
+assertEquals(43, N);
 N[-2] = "Alpha";
 assertEquals("Alpha", N[-2]);
 N[0] = "Zappa";
diff --git a/test/mjsunit/testcfg.py b/test/mjsunit/testcfg.py
index f7b6d4d..3dd6581 100644
--- a/test/mjsunit/testcfg.py
+++ b/test/mjsunit/testcfg.py
@@ -107,7 +107,7 @@
     return self_script
 
   def AfterRun(self, result):
-    if self.self_script and (not result or (not result.HasPreciousOutput())):
+    if self.self_script and (not result.HasPreciousOutput()):
       test.CheckedUnlink(self.self_script)
 
 class MjsunitTestConfiguration(test.TestConfiguration):
diff --git a/test/mjsunit/third_party/object-keys.js b/test/mjsunit/third_party/object-keys.js
index d09265c..999ce70 100644
--- a/test/mjsunit/third_party/object-keys.js
+++ b/test/mjsunit/third_party/object-keys.js
@@ -54,7 +54,7 @@
 assertEquals('string', typeof(Object.keys([1])[0]));
 
 function argsTest(a, b, c) {
-  assertEquals(['0', '1', '2'], Object.keys(arguments));
+  assertEquals([0, 1, 2], Object.keys(arguments));
 }
 
 argsTest(1, 2, 3);
diff --git a/test/mjsunit/third_party/regexp-pcre.js b/test/mjsunit/third_party/regexp-pcre.js
index c049fb4..dcb1b32 100644
--- a/test/mjsunit/third_party/regexp-pcre.js
+++ b/test/mjsunit/third_party/regexp-pcre.js
@@ -1643,135 +1643,135 @@
 res[1564] = /[^\xaa]/m;
 res[1565] = /[^\xaa]/m;
 res[1566] = / End of testinput10 /;
-assertToStringEquals("abc", res[1].exec("abc"), 0);
-assertToStringEquals("abc", res[1].exec("defabc"), 1);
-assertToStringEquals("abc", res[1].exec("Aabc"), 2);
-assertNull(res[1].exec("*** Failers", 3));
-assertToStringEquals("abc", res[1].exec("Adefabc"), 4);
-assertToStringEquals("ABC", res[1].exec("ABC"), 5);
-assertToStringEquals("abc", res[2].exec("abc"), 6);
-assertNull(res[2].exec("Aabc", 7));
-assertNull(res[2].exec("*** Failers", 8));
-assertNull(res[2].exec("defabc", 9));
-assertNull(res[2].exec("Adefabc", 10));
-assertToStringEquals("abc", res[7].exec("abc"), 11);
-assertNull(res[7].exec("*** Failers", 12));
-assertNull(res[7].exec("def\nabc", 13));
+assertEquals("abc", res[1].exec("abc"), 0);
+assertEquals("abc", res[1].exec("defabc"), 1);
+assertEquals("abc", res[1].exec("Aabc"), 2);
+assertEquals(null, res[1].exec("*** Failers", 3));
+assertEquals("abc", res[1].exec("Adefabc"), 4);
+assertEquals("ABC", res[1].exec("ABC"), 5);
+assertEquals("abc", res[2].exec("abc"), 6);
+assertEquals(null, res[2].exec("Aabc", 7));
+assertEquals(null, res[2].exec("*** Failers", 8));
+assertEquals(null, res[2].exec("defabc", 9));
+assertEquals(null, res[2].exec("Adefabc", 10));
+assertEquals("abc", res[7].exec("abc"), 11);
+assertEquals(null, res[7].exec("*** Failers", 12));
+assertEquals(null, res[7].exec("def\nabc", 13));
 assertThrows("var re = /x{5,4}/;", 14);
 assertThrows("var re = /[abcd/;", 15);
 assertThrows("var re = /[z-a]/;", 16);
 assertThrows("var re = /^*/;", 17);
 assertThrows("var re = /(abc/;", 18);
 assertThrows("var re = /(?# abc/;", 19);
-assertToStringEquals("cat", res[11].exec("this sentence eventually mentions a cat"), 20);
-assertToStringEquals("elephant", res[11].exec("this sentences rambles on and on for a while and then reaches elephant"), 21);
-assertToStringEquals("cat", res[12].exec("this sentence eventually mentions a cat"), 22);
-assertToStringEquals("elephant", res[12].exec("this sentences rambles on and on for a while and then reaches elephant"), 23);
-assertToStringEquals("CAT", res[13].exec("this sentence eventually mentions a CAT cat"), 24);
-assertToStringEquals("elephant", res[13].exec("this sentences rambles on and on for a while to elephant ElePhant"), 25);
+assertEquals("cat", res[11].exec("this sentence eventually mentions a cat"), 20);
+assertEquals("elephant", res[11].exec("this sentences rambles on and on for a while and then reaches elephant"), 21);
+assertEquals("cat", res[12].exec("this sentence eventually mentions a cat"), 22);
+assertEquals("elephant", res[12].exec("this sentences rambles on and on for a while and then reaches elephant"), 23);
+assertEquals("CAT", res[13].exec("this sentence eventually mentions a CAT cat"), 24);
+assertEquals("elephant", res[13].exec("this sentences rambles on and on for a while to elephant ElePhant"), 25);
 assertThrows("var re = /{4,5}abc/;", 26);
-assertToStringEquals("abcb,a,b,c", res[18].exec("abcb"), 27);
-assertToStringEquals("abcb,a,b,c", res[18].exec("O0abcb"), 28);
-assertToStringEquals("abcb,a,b,c", res[18].exec("O3abcb"), 29);
-assertToStringEquals("abcb,a,b,c", res[18].exec("O6abcb"), 30);
-assertToStringEquals("abcb,a,b,c", res[18].exec("O9abcb"), 31);
-assertToStringEquals("abcb,a,b,c", res[18].exec("O12abcb"), 32);
-assertToStringEquals("abc,a,,", res[19].exec("abc"), 33);
-assertToStringEquals("abc,a,,", res[19].exec("O0abc"), 34);
-assertToStringEquals("abc,a,,", res[19].exec("O3abc"), 35);
-assertToStringEquals("abc,a,,", res[19].exec("O6abc"), 36);
-assertToStringEquals("aba,,a,b", res[19].exec("aba"), 37);
-assertToStringEquals("aba,,a,b", res[19].exec("O0aba"), 38);
-assertToStringEquals("aba,,a,b", res[19].exec("O3aba"), 39);
-assertToStringEquals("aba,,a,b", res[19].exec("O6aba"), 40);
-assertToStringEquals("aba,,a,b", res[19].exec("O9aba"), 41);
-assertToStringEquals("aba,,a,b", res[19].exec("O12aba"), 42);
-assertToStringEquals("abc", res[20].exec("abc"), 43);
-assertNull(res[20].exec("*** Failers", 44));
-assertNull(res[20].exec("abc\n", 45));
-assertNull(res[20].exec("abc\ndef", 46));
-assertToStringEquals("the quick brown fox", res[22].exec("the quick brown fox"), 47);
-assertToStringEquals("the quick brown fox", res[22].exec("this is a line with the quick brown fox"), 48);
-assertToStringEquals("abc", res[23].exec("abcdef"), 49);
-assertToStringEquals("abc", res[23].exec("abcdefB"), 50);
-assertToStringEquals("defabc,abc,abc,", res[24].exec("defabc"), 51);
-assertToStringEquals("Zdefabc,abc,abc,", res[24].exec("Zdefabc"), 52);
-assertToStringEquals("abc", res[25].exec("abc"), 53);
-assertNull(res[25].exec("*** Failers", 54));
-assertToStringEquals("abc", res[26].exec("abcdef"), 55);
-assertToStringEquals("abc", res[26].exec("abcdefB"), 56);
-assertToStringEquals("defabc,abc,abc,", res[27].exec("defabc"), 57);
-assertToStringEquals("Zdefabc,abc,abc,", res[27].exec("Zdefabc"), 58);
-assertToStringEquals("the quick brown fox", res[28].exec("the quick brown fox"), 59);
-assertNull(res[28].exec("*** Failers", 60));
-assertToStringEquals("The Quick Brown Fox", res[28].exec("The Quick Brown Fox"), 61);
-assertToStringEquals("the quick brown fox", res[29].exec("the quick brown fox"), 62);
-assertToStringEquals("The Quick Brown Fox", res[29].exec("The Quick Brown Fox"), 63);
-assertNull(res[30].exec("*** Failers", 64));
-assertNull(res[30].exec("abc\ndef", 65));
-assertToStringEquals("abc", res[31].exec("abc"), 66);
-assertNull(res[31].exec("abc\n", 67));
-assertToStringEquals("abc,abc", res[33].exec("abc"), 68);
+assertEquals("abcb,a,b,c", res[18].exec("abcb"), 27);
+assertEquals("abcb,a,b,c", res[18].exec("O0abcb"), 28);
+assertEquals("abcb,a,b,c", res[18].exec("O3abcb"), 29);
+assertEquals("abcb,a,b,c", res[18].exec("O6abcb"), 30);
+assertEquals("abcb,a,b,c", res[18].exec("O9abcb"), 31);
+assertEquals("abcb,a,b,c", res[18].exec("O12abcb"), 32);
+assertEquals("abc,a,,", res[19].exec("abc"), 33);
+assertEquals("abc,a,,", res[19].exec("O0abc"), 34);
+assertEquals("abc,a,,", res[19].exec("O3abc"), 35);
+assertEquals("abc,a,,", res[19].exec("O6abc"), 36);
+assertEquals("aba,,a,b", res[19].exec("aba"), 37);
+assertEquals("aba,,a,b", res[19].exec("O0aba"), 38);
+assertEquals("aba,,a,b", res[19].exec("O3aba"), 39);
+assertEquals("aba,,a,b", res[19].exec("O6aba"), 40);
+assertEquals("aba,,a,b", res[19].exec("O9aba"), 41);
+assertEquals("aba,,a,b", res[19].exec("O12aba"), 42);
+assertEquals("abc", res[20].exec("abc"), 43);
+assertEquals(null, res[20].exec("*** Failers", 44));
+assertEquals(null, res[20].exec("abc\n", 45));
+assertEquals(null, res[20].exec("abc\ndef", 46));
+assertEquals("the quick brown fox", res[22].exec("the quick brown fox"), 47);
+assertEquals("the quick brown fox", res[22].exec("this is a line with the quick brown fox"), 48);
+assertEquals("abc", res[23].exec("abcdef"), 49);
+assertEquals("abc", res[23].exec("abcdefB"), 50);
+assertEquals("defabc,abc,abc,", res[24].exec("defabc"), 51);
+assertEquals("Zdefabc,abc,abc,", res[24].exec("Zdefabc"), 52);
+assertEquals("abc", res[25].exec("abc"), 53);
+assertEquals(null, res[25].exec("*** Failers", 54));
+assertEquals("abc", res[26].exec("abcdef"), 55);
+assertEquals("abc", res[26].exec("abcdefB"), 56);
+assertEquals("defabc,abc,abc,", res[27].exec("defabc"), 57);
+assertEquals("Zdefabc,abc,abc,", res[27].exec("Zdefabc"), 58);
+assertEquals("the quick brown fox", res[28].exec("the quick brown fox"), 59);
+assertEquals(null, res[28].exec("*** Failers", 60));
+assertEquals("The Quick Brown Fox", res[28].exec("The Quick Brown Fox"), 61);
+assertEquals("the quick brown fox", res[29].exec("the quick brown fox"), 62);
+assertEquals("The Quick Brown Fox", res[29].exec("The Quick Brown Fox"), 63);
+assertEquals(null, res[30].exec("*** Failers", 64));
+assertEquals(null, res[30].exec("abc\ndef", 65));
+assertEquals("abc", res[31].exec("abc"), 66);
+assertEquals(null, res[31].exec("abc\n", 67));
+assertEquals("abc,abc", res[33].exec("abc"), 68);
 assertThrows("var re = /)/;", 69);
-assertToStringEquals("-pr", res[35].exec("co-processors, and for"), 70);
-assertToStringEquals("<def>ghi<klm>", res[36].exec("abc<def>ghi<klm>nop"), 71);
-assertToStringEquals("<def>", res[37].exec("abc<def>ghi<klm>nop"), 72);
-assertToStringEquals("<def>", res[37].exec("abc<def>ghi<klm>nop"), 73);
-assertNull(res[37].exec("abc========def", 74));
-assertNull(res[37].exec("foo", 75));
-assertNull(res[37].exec("catfoo", 76));
-assertNull(res[37].exec("*** Failers", 77));
-assertNull(res[37].exec("the barfoo", 78));
-assertNull(res[37].exec("and cattlefoo", 79));
-assertToStringEquals("a", res[40].exec("a"), 80);
-assertNull(res[40].exec("a\n", 81));
-assertNull(res[40].exec("*** Failers", 82));
-assertToStringEquals("a", res[40].exec("Za"), 83);
-assertNull(res[40].exec("Za\n", 84));
-assertToStringEquals("a", res[41].exec("a"), 85);
-assertToStringEquals("a", res[41].exec("a\n"), 86);
-assertToStringEquals("a", res[41].exec("Za\n"), 87);
-assertNull(res[41].exec("*** Failers", 88));
-assertToStringEquals("a", res[41].exec("Za"), 89);
-assertToStringEquals("b", res[44].exec("foo\nbarbar"), 90);
-assertToStringEquals("a", res[44].exec("***Failers"), 91);
-assertToStringEquals("b", res[44].exec("rhubarb"), 92);
-assertToStringEquals("b", res[44].exec("barbell"), 93);
-assertToStringEquals("a", res[44].exec("abc\nbarton"), 94);
-assertToStringEquals("b", res[44].exec("foo\nbarbar"), 95);
-assertToStringEquals("a", res[44].exec("***Failers"), 96);
-assertToStringEquals("b", res[44].exec("rhubarb"), 97);
-assertToStringEquals("b", res[44].exec("barbell"), 98);
-assertToStringEquals("a", res[44].exec("abc\nbarton"), 99);
-assertToStringEquals("a", res[44].exec("abc"), 100);
-assertToStringEquals("a", res[44].exec("def\nabc"), 101);
-assertToStringEquals("a", res[44].exec("*** Failers"), 102);
-assertToStringEquals("a", res[44].exec("defabc"), 103);
-assertNull(res[45].exec("the bullock-cart", 104));
-assertNull(res[45].exec("a donkey-cart race", 105));
-assertNull(res[45].exec("*** Failers", 106));
-assertNull(res[45].exec("cart", 107));
-assertNull(res[45].exec("horse-and-cart", 108));
-assertNull(res[45].exec("alphabetabcd", 109));
-assertNull(res[45].exec("endingxyz", 110));
-assertNull(res[45].exec("abxyZZ", 111));
-assertNull(res[45].exec("abXyZZ", 112));
-assertNull(res[45].exec("ZZZ", 113));
-assertNull(res[45].exec("zZZ", 114));
-assertNull(res[45].exec("bZZ", 115));
-assertNull(res[45].exec("BZZ", 116));
-assertNull(res[45].exec("*** Failers", 117));
-assertNull(res[45].exec("ZZ", 118));
-assertNull(res[45].exec("abXYZZ", 119));
-assertNull(res[45].exec("zzz", 120));
-assertNull(res[45].exec("bzz", 121));
-assertNull(res[45].exec("bar", 122));
-assertNull(res[45].exec("foobbar", 123));
-assertNull(res[45].exec("*** Failers", 124));
-assertNull(res[45].exec("fooabar", 125));
-assertNull(res[46].exec("*** Failers", 126));
-assertNull(res[46].exec("a", 127));
-assertNull(res[48].exec("aaaaaa", 128));
+assertEquals("-pr", res[35].exec("co-processors, and for"), 70);
+assertEquals("<def>ghi<klm>", res[36].exec("abc<def>ghi<klm>nop"), 71);
+assertEquals("<def>", res[37].exec("abc<def>ghi<klm>nop"), 72);
+assertEquals("<def>", res[37].exec("abc<def>ghi<klm>nop"), 73);
+assertEquals(null, res[37].exec("abc========def", 74));
+assertEquals(null, res[37].exec("foo", 75));
+assertEquals(null, res[37].exec("catfoo", 76));
+assertEquals(null, res[37].exec("*** Failers", 77));
+assertEquals(null, res[37].exec("the barfoo", 78));
+assertEquals(null, res[37].exec("and cattlefoo", 79));
+assertEquals("a", res[40].exec("a"), 80);
+assertEquals(null, res[40].exec("a\n", 81));
+assertEquals(null, res[40].exec("*** Failers", 82));
+assertEquals("a", res[40].exec("Za"), 83);
+assertEquals(null, res[40].exec("Za\n", 84));
+assertEquals("a", res[41].exec("a"), 85);
+assertEquals("a", res[41].exec("a\n"), 86);
+assertEquals("a", res[41].exec("Za\n"), 87);
+assertEquals(null, res[41].exec("*** Failers", 88));
+assertEquals("a", res[41].exec("Za"), 89);
+assertEquals("b", res[44].exec("foo\nbarbar"), 90);
+assertEquals("a", res[44].exec("***Failers"), 91);
+assertEquals("b", res[44].exec("rhubarb"), 92);
+assertEquals("b", res[44].exec("barbell"), 93);
+assertEquals("a", res[44].exec("abc\nbarton"), 94);
+assertEquals("b", res[44].exec("foo\nbarbar"), 95);
+assertEquals("a", res[44].exec("***Failers"), 96);
+assertEquals("b", res[44].exec("rhubarb"), 97);
+assertEquals("b", res[44].exec("barbell"), 98);
+assertEquals("a", res[44].exec("abc\nbarton"), 99);
+assertEquals("a", res[44].exec("abc"), 100);
+assertEquals("a", res[44].exec("def\nabc"), 101);
+assertEquals("a", res[44].exec("*** Failers"), 102);
+assertEquals("a", res[44].exec("defabc"), 103);
+assertEquals(null, res[45].exec("the bullock-cart", 104));
+assertEquals(null, res[45].exec("a donkey-cart race", 105));
+assertEquals(null, res[45].exec("*** Failers", 106));
+assertEquals(null, res[45].exec("cart", 107));
+assertEquals(null, res[45].exec("horse-and-cart", 108));
+assertEquals(null, res[45].exec("alphabetabcd", 109));
+assertEquals(null, res[45].exec("endingxyz", 110));
+assertEquals(null, res[45].exec("abxyZZ", 111));
+assertEquals(null, res[45].exec("abXyZZ", 112));
+assertEquals(null, res[45].exec("ZZZ", 113));
+assertEquals(null, res[45].exec("zZZ", 114));
+assertEquals(null, res[45].exec("bZZ", 115));
+assertEquals(null, res[45].exec("BZZ", 116));
+assertEquals(null, res[45].exec("*** Failers", 117));
+assertEquals(null, res[45].exec("ZZ", 118));
+assertEquals(null, res[45].exec("abXYZZ", 119));
+assertEquals(null, res[45].exec("zzz", 120));
+assertEquals(null, res[45].exec("bzz", 121));
+assertEquals(null, res[45].exec("bar", 122));
+assertEquals(null, res[45].exec("foobbar", 123));
+assertEquals(null, res[45].exec("*** Failers", 124));
+assertEquals(null, res[45].exec("fooabar", 125));
+assertEquals(null, res[46].exec("*** Failers", 126));
+assertEquals(null, res[46].exec("a", 127));
+assertEquals(null, res[48].exec("aaaaaa", 128));
 assertThrows("var re = /a[b-a]/;", 129);
 assertThrows("var re = /a[/;", 130);
 assertThrows("var re = /*a/;", 131);
@@ -1794,4810 +1794,4810 @@
 assertThrows("var re = /a(?{\"{\"}})b/;", 148);
 assertThrows("var re = /[a[:xyz:/;", 149);
 assertThrows("var re = /a{37,17}/;", 150);
-assertToStringEquals("abcd,a,d", res[58].exec("abcd"), 151);
-assertToStringEquals("abcd,a,d", res[58].exec("abcdC2"), 152);
-assertToStringEquals("abcd,a,d", res[58].exec("abcdC5"), 153);
-assertToStringEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst", res[59].exec("abcdefghijklmnopqrstuvwxyz"), 154);
-assertToStringEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst", res[59].exec("abcdefghijklmnopqrstuvwxyzC1"), 155);
-assertToStringEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst", res[59].exec("abcdefghijklmnopqrstuvwxyzG1"), 156);
-assertToStringEquals("abcdefghijklmno,abcdefghijklmno", res[60].exec("abcdefghijklmnopqrstuvwxyz"), 157);
-assertToStringEquals("abcdefghijklmno,abcdefghijklmno", res[60].exec("abcdefghijklmnopqrstuvwxyzC1G1"), 158);
-assertToStringEquals("abcdefghijklmnop,abcdefghijklmnop", res[61].exec("abcdefghijklmnopqrstuvwxyz"), 159);
-assertToStringEquals("abcdefghijklmnop,abcdefghijklmnop", res[61].exec("abcdefghijklmnopqrstuvwxyzC1G1L"), 160);
-assertToStringEquals("adef,a,,f", res[62].exec("adefG1G2G3G4L"), 161);
-assertToStringEquals("bcdef,bc,bc,f", res[62].exec("bcdefG1G2G3G4L"), 162);
-assertToStringEquals("adef,a,,f", res[62].exec("adefghijkC0"), 163);
-assertToStringEquals("abc\x00def", res[63].exec("abc\x00defLC0"), 164);
-assertToStringEquals("iss", res[69].exec("Mississippi"), 165);
-assertToStringEquals("iss", res[70].exec("Mississippi"), 166);
-assertToStringEquals("iss", res[71].exec("Mississippi"), 167);
-assertToStringEquals("iss", res[72].exec("Mississippi"), 168);
-assertToStringEquals("iss", res[73].exec("Mississippi"), 169);
-assertNull(res[73].exec("*** Failers", 170));
-assertToStringEquals("iss", res[73].exec("MississippiA"), 171);
-assertToStringEquals("iss", res[73].exec("Mississippi"), 172);
-assertNull(res[73].exec("Mississippi", 173));
-assertToStringEquals("iss", res[74].exec("ississippi"), 174);
-assertToStringEquals("abciss", res[75].exec("abciss\nxyzisspqr"), 175);
-assertToStringEquals("Mis", res[76].exec("Mississippi"), 176);
-assertToStringEquals("sis", res[76].exec("MississippiA"), 177);
-assertToStringEquals("ri ", res[76].exec("Missouri river"), 178);
-assertToStringEquals("riv", res[76].exec("Missouri riverA"), 179);
-assertToStringEquals("Mis", res[77].exec("Mississippi"), 180);
-assertToStringEquals("ab\n", res[78].exec("ab\nab\ncd"), 181);
-assertToStringEquals("ab\n", res[79].exec("ab\nab\ncd"), 182);
-assertToStringEquals("a", res[115].exec("a"), 183);
-assertToStringEquals("b", res[115].exec("b"), 184);
-assertToStringEquals("ab", res[115].exec("ab"), 185);
-assertToStringEquals("", res[115].exec("\\"), 186);
-assertToStringEquals("", res[115].exec("*** Failers"), 187);
-assertToStringEquals("", res[115].exec("N"), 188);
-assertToStringEquals("", res[116].exec("abcd"), 189);
-assertToStringEquals("", res[116].exec("-abc"), 190);
-assertToStringEquals("", res[116].exec("Nab-c"), 191);
-assertToStringEquals("", res[116].exec("*** Failers"), 192);
-assertToStringEquals("", res[116].exec("Nabc"), 193);
-assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzz"), 194);
-assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO0"), 195);
-assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO1"), 196);
-assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO2"), 197);
-assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO3"), 198);
-assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO4"), 199);
-assertToStringEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO5"), 200);
-assertToStringEquals("(abcd", res[118].exec("(abcd)"), 201);
-assertToStringEquals("(abcd", res[118].exec("(abcd)xyz"), 202);
-assertNull(res[118].exec("xyz(abcd)", 203));
-assertNull(res[118].exec("(ab(xy)cd)pqr", 204));
-assertNull(res[118].exec("(ab(xycd)pqr", 205));
-assertNull(res[118].exec("() abc ()", 206));
-assertNull(res[118].exec("12(abcde(fsh)xyz(foo(bar))lmno)89", 207));
-assertNull(res[118].exec("*** Failers", 208));
-assertToStringEquals("abcd", res[118].exec("abcd"), 209);
-assertToStringEquals("abcd", res[118].exec("abcd)"), 210);
-assertToStringEquals("(abcd", res[118].exec("(abcd"), 211);
-assertNull(res[118].exec("(ab(xy)cd)pqr", 212));
-assertNull(res[118].exec("1(abcd)(x(y)z)pqr", 213));
-assertToStringEquals("(abcd", res[118].exec("(abcd)"), 214);
-assertNull(res[118].exec("(ab(xy)cd)", 215));
-assertNull(res[118].exec("(a(b(c)d)e)", 216));
-assertNull(res[118].exec("((ab))", 217));
-assertNull(res[118].exec("*** Failers", 218));
-assertNull(res[118].exec("()", 219));
-assertNull(res[118].exec("()", 220));
-assertNull(res[118].exec("12(abcde(fsh)xyz(foo(bar))lmno)89", 221));
-assertNull(res[118].exec("(ab(xy)cd)", 222));
-assertNull(res[118].exec("(ab(xy)cd)", 223));
-assertNull(res[118].exec("(ab(xy)cd)", 224));
-assertNull(res[118].exec("(123ab(xy)cd)", 225));
-assertNull(res[118].exec("(ab(xy)cd)", 226));
-assertNull(res[118].exec("(123ab(xy)cd)", 227));
-assertNull(res[118].exec("(ab(xy)cd)", 228));
-assertToStringEquals("(abcd", res[118].exec("(abcd(xyz<p>qrs)123)"), 229);
-assertNull(res[118].exec("(ab(cd)ef)", 230));
-assertNull(res[118].exec("(ab(cd(ef)gh)ij)", 231));
-assertNull(res[146].exec("A", 232));
-assertNull(res[146].exec("a", 233));
-assertNull(res[147].exec("A", 234));
-assertNull(res[147].exec("a", 235));
-assertNull(res[147].exec("ab", 236));
-assertNull(res[147].exec("aB", 237));
-assertNull(res[147].exec("*** Failers", 238));
-assertNull(res[147].exec("Ab", 239));
-assertNull(res[147].exec("AB", 240));
+assertEquals("abcd,a,d", res[58].exec("abcd"), 151);
+assertEquals("abcd,a,d", res[58].exec("abcdC2"), 152);
+assertEquals("abcd,a,d", res[58].exec("abcdC5"), 153);
+assertEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst", res[59].exec("abcdefghijklmnopqrstuvwxyz"), 154);
+assertEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst", res[59].exec("abcdefghijklmnopqrstuvwxyzC1"), 155);
+assertEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst", res[59].exec("abcdefghijklmnopqrstuvwxyzG1"), 156);
+assertEquals("abcdefghijklmno,abcdefghijklmno", res[60].exec("abcdefghijklmnopqrstuvwxyz"), 157);
+assertEquals("abcdefghijklmno,abcdefghijklmno", res[60].exec("abcdefghijklmnopqrstuvwxyzC1G1"), 158);
+assertEquals("abcdefghijklmnop,abcdefghijklmnop", res[61].exec("abcdefghijklmnopqrstuvwxyz"), 159);
+assertEquals("abcdefghijklmnop,abcdefghijklmnop", res[61].exec("abcdefghijklmnopqrstuvwxyzC1G1L"), 160);
+assertEquals("adef,a,,f", res[62].exec("adefG1G2G3G4L"), 161);
+assertEquals("bcdef,bc,bc,f", res[62].exec("bcdefG1G2G3G4L"), 162);
+assertEquals("adef,a,,f", res[62].exec("adefghijkC0"), 163);
+assertEquals("abc\x00def", res[63].exec("abc\x00defLC0"), 164);
+assertEquals("iss", res[69].exec("Mississippi"), 165);
+assertEquals("iss", res[70].exec("Mississippi"), 166);
+assertEquals("iss", res[71].exec("Mississippi"), 167);
+assertEquals("iss", res[72].exec("Mississippi"), 168);
+assertEquals("iss", res[73].exec("Mississippi"), 169);
+assertEquals(null, res[73].exec("*** Failers", 170));
+assertEquals("iss", res[73].exec("MississippiA"), 171);
+assertEquals("iss", res[73].exec("Mississippi"), 172);
+assertEquals(null, res[73].exec("Mississippi", 173));
+assertEquals("iss", res[74].exec("ississippi"), 174);
+assertEquals("abciss", res[75].exec("abciss\nxyzisspqr"), 175);
+assertEquals("Mis", res[76].exec("Mississippi"), 176);
+assertEquals("sis", res[76].exec("MississippiA"), 177);
+assertEquals("ri ", res[76].exec("Missouri river"), 178);
+assertEquals("riv", res[76].exec("Missouri riverA"), 179);
+assertEquals("Mis", res[77].exec("Mississippi"), 180);
+assertEquals("ab\n", res[78].exec("ab\nab\ncd"), 181);
+assertEquals("ab\n", res[79].exec("ab\nab\ncd"), 182);
+assertEquals("a", res[115].exec("a"), 183);
+assertEquals("b", res[115].exec("b"), 184);
+assertEquals("ab", res[115].exec("ab"), 185);
+assertEquals("", res[115].exec("\\"), 186);
+assertEquals("", res[115].exec("*** Failers"), 187);
+assertEquals("", res[115].exec("N"), 188);
+assertEquals("", res[116].exec("abcd"), 189);
+assertEquals("", res[116].exec("-abc"), 190);
+assertEquals("", res[116].exec("Nab-c"), 191);
+assertEquals("", res[116].exec("*** Failers"), 192);
+assertEquals("", res[116].exec("Nabc"), 193);
+assertEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzz"), 194);
+assertEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO0"), 195);
+assertEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO1"), 196);
+assertEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO2"), 197);
+assertEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO3"), 198);
+assertEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO4"), 199);
+assertEquals("aaaabbbbzz,bbbb,z,z", res[117].exec("aaaabbbbzzzzO5"), 200);
+assertEquals("(abcd", res[118].exec("(abcd)"), 201);
+assertEquals("(abcd", res[118].exec("(abcd)xyz"), 202);
+assertEquals(null, res[118].exec("xyz(abcd)", 203));
+assertEquals(null, res[118].exec("(ab(xy)cd)pqr", 204));
+assertEquals(null, res[118].exec("(ab(xycd)pqr", 205));
+assertEquals(null, res[118].exec("() abc ()", 206));
+assertEquals(null, res[118].exec("12(abcde(fsh)xyz(foo(bar))lmno)89", 207));
+assertEquals(null, res[118].exec("*** Failers", 208));
+assertEquals("abcd", res[118].exec("abcd"), 209);
+assertEquals("abcd", res[118].exec("abcd)"), 210);
+assertEquals("(abcd", res[118].exec("(abcd"), 211);
+assertEquals(null, res[118].exec("(ab(xy)cd)pqr", 212));
+assertEquals(null, res[118].exec("1(abcd)(x(y)z)pqr", 213));
+assertEquals("(abcd", res[118].exec("(abcd)"), 214);
+assertEquals(null, res[118].exec("(ab(xy)cd)", 215));
+assertEquals(null, res[118].exec("(a(b(c)d)e)", 216));
+assertEquals(null, res[118].exec("((ab))", 217));
+assertEquals(null, res[118].exec("*** Failers", 218));
+assertEquals(null, res[118].exec("()", 219));
+assertEquals(null, res[118].exec("()", 220));
+assertEquals(null, res[118].exec("12(abcde(fsh)xyz(foo(bar))lmno)89", 221));
+assertEquals(null, res[118].exec("(ab(xy)cd)", 222));
+assertEquals(null, res[118].exec("(ab(xy)cd)", 223));
+assertEquals(null, res[118].exec("(ab(xy)cd)", 224));
+assertEquals(null, res[118].exec("(123ab(xy)cd)", 225));
+assertEquals(null, res[118].exec("(ab(xy)cd)", 226));
+assertEquals(null, res[118].exec("(123ab(xy)cd)", 227));
+assertEquals(null, res[118].exec("(ab(xy)cd)", 228));
+assertEquals("(abcd", res[118].exec("(abcd(xyz<p>qrs)123)"), 229);
+assertEquals(null, res[118].exec("(ab(cd)ef)", 230));
+assertEquals(null, res[118].exec("(ab(cd(ef)gh)ij)", 231));
+assertEquals(null, res[146].exec("A", 232));
+assertEquals(null, res[146].exec("a", 233));
+assertEquals(null, res[147].exec("A", 234));
+assertEquals(null, res[147].exec("a", 235));
+assertEquals(null, res[147].exec("ab", 236));
+assertEquals(null, res[147].exec("aB", 237));
+assertEquals(null, res[147].exec("*** Failers", 238));
+assertEquals(null, res[147].exec("Ab", 239));
+assertEquals(null, res[147].exec("AB", 240));
 assertThrows("var re = /[\\200-\\110]/;", 241);
-assertToStringEquals("1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ABC ABC,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12 ,13 ,14 ,15 ,16 ,17 ,18 ,19 ,20 ,21 ,22 ,23 ,24 ,25 ,26 ,27 ,28 ,29 ,30 ,31 ,32 ,33 ,34 ,35 ,36 ,37 ,38 ,39 ,40 ,41 ,42 ,43 ,44 ,45 ,46 ,47 ,48 ,49 ,50 ,51 ,52 ,53 ,54 ,55 ,56 ,57 ,58 ,59 ,60 ,61 ,62 ,63 ,64 ,65 ,66 ,67 ,68 ,69 ,70 ,71 ,72 ,73 ,74 ,75 ,76 ,77 ,78 ,79 ,80 ,81 ,82 ,83 ,84 ,85 ,86 ,87 ,88 ,89 ,90 ,91 ,92 ,93 ,94 ,95 ,96 ,97 ,98 ,99 ,100 ,101 ,102 ,103 ,104 ,105 ,106 ,107 ,108 ,109 ,110 ,111 ,112 ,113 ,114 ,115 ,116 ,117 ,118 ,119 ,120 ,121 ,122 ,123 ,124 ,125 ,126 ,127 ,128 ,129 ,130 ,131 ,132 ,133 ,134 ,135 ,136 ,137 ,138 ,139 ,140 ,141 ,142 ,143 ,144 ,145 ,146 ,147 ,148 ,149 ,150 ,151 ,152 ,153 ,154 ,155 ,156 ,157 ,158 ,159 ,160 ,161 ,162 ,163 ,164 ,165 ,166 ,167 ,168 ,169 ,170 ,171 ,172 ,173 ,174 ,175 ,176 ,177 ,178 ,179 ,180 ,181 ,182 ,183 ,184 ,185 ,186 ,187 ,188 ,189 ,190 ,191 ,192 ,193 ,194 ,195 ,196 ,197 ,198 ,199 ,200 ,201 ,202 ,203 ,204 ,205 ,206 ,207 ,208 ,209 ,210 ,211 ,212 ,213 ,214 ,215 ,216 ,217 ,218 ,219 ,220 ,221 ,222 ,223 ,224 ,225 ,226 ,227 ,228 ,229 ,230 ,231 ,232 ,233 ,234 ,235 ,236 ,237 ,238 ,239 ,240 ,241 ,242 ,243 ,244 ,245 ,246 ,247 ,248 ,249 ,250 ,251 ,252 ,253 ,254 ,255 ,256 ,257 ,258 ,259 ,260 ,261 ,262 ,263 ,264 ,265 ,266 ,267 ,268 ,269 ,ABC,ABC", res[149].exec("O900 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ABC ABC"), 242);
-assertToStringEquals("mainmain,main,", res[151].exec("mainmain"), 243);
-assertToStringEquals("mainOmain,main,", res[151].exec("mainOmain"), 244);
-assertToStringEquals("aba,a,", res[153].exec("aba"), 245);
-assertToStringEquals("aabbaa,aa,", res[154].exec("aabbaa"), 246);
-assertToStringEquals("aabbaa,aa,", res[155].exec("aabbaa"), 247);
-assertToStringEquals("aabbaa,aa,", res[156].exec("aabbaa"), 248);
-assertToStringEquals("aabbaa,", res[157].exec("aabbaa"), 249);
-assertToStringEquals("aabbaa,aa,,", res[158].exec("aabbaa"), 250);
-assertToStringEquals("aabbaa,,", res[159].exec("aabbaa"), 251);
-assertToStringEquals("aabbaa,", res[160].exec("aabbaa"), 252);
-assertToStringEquals("aabbbaa,", res[161].exec("aabbbaa"), 253);
-assertToStringEquals("aabbbaa,", res[162].exec("aabbbaa"), 254);
-assertToStringEquals("aabbaa,", res[163].exec("aabbaa"), 255);
-assertToStringEquals("aabbbaa,", res[164].exec("aabbbaa"), 256);
-assertToStringEquals("aabbbaa,aa,,", res[165].exec("aabbbaa"), 257);
-assertToStringEquals("aabbbbaa,aa,,", res[166].exec("aabbbbaa"), 258);
+assertEquals("1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ABC ABC,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12 ,13 ,14 ,15 ,16 ,17 ,18 ,19 ,20 ,21 ,22 ,23 ,24 ,25 ,26 ,27 ,28 ,29 ,30 ,31 ,32 ,33 ,34 ,35 ,36 ,37 ,38 ,39 ,40 ,41 ,42 ,43 ,44 ,45 ,46 ,47 ,48 ,49 ,50 ,51 ,52 ,53 ,54 ,55 ,56 ,57 ,58 ,59 ,60 ,61 ,62 ,63 ,64 ,65 ,66 ,67 ,68 ,69 ,70 ,71 ,72 ,73 ,74 ,75 ,76 ,77 ,78 ,79 ,80 ,81 ,82 ,83 ,84 ,85 ,86 ,87 ,88 ,89 ,90 ,91 ,92 ,93 ,94 ,95 ,96 ,97 ,98 ,99 ,100 ,101 ,102 ,103 ,104 ,105 ,106 ,107 ,108 ,109 ,110 ,111 ,112 ,113 ,114 ,115 ,116 ,117 ,118 ,119 ,120 ,121 ,122 ,123 ,124 ,125 ,126 ,127 ,128 ,129 ,130 ,131 ,132 ,133 ,134 ,135 ,136 ,137 ,138 ,139 ,140 ,141 ,142 ,143 ,144 ,145 ,146 ,147 ,148 ,149 ,150 ,151 ,152 ,153 ,154 ,155 ,156 ,157 ,158 ,159 ,160 ,161 ,162 ,163 ,164 ,165 ,166 ,167 ,168 ,169 ,170 ,171 ,172 ,173 ,174 ,175 ,176 ,177 ,178 ,179 ,180 ,181 ,182 ,183 ,184 ,185 ,186 ,187 ,188 ,189 ,190 ,191 ,192 ,193 ,194 ,195 ,196 ,197 ,198 ,199 ,200 ,201 ,202 ,203 ,204 ,205 ,206 ,207 ,208 ,209 ,210 ,211 ,212 ,213 ,214 ,215 ,216 ,217 ,218 ,219 ,220 ,221 ,222 ,223 ,224 ,225 ,226 ,227 ,228 ,229 ,230 ,231 ,232 ,233 ,234 ,235 ,236 ,237 ,238 ,239 ,240 ,241 ,242 ,243 ,244 ,245 ,246 ,247 ,248 ,249 ,250 ,251 ,252 ,253 ,254 ,255 ,256 ,257 ,258 ,259 ,260 ,261 ,262 ,263 ,264 ,265 ,266 ,267 ,268 ,269 ,ABC,ABC", res[149].exec("O900 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ABC ABC"), 242);
+assertEquals("mainmain,main,", res[151].exec("mainmain"), 243);
+assertEquals("mainOmain,main,", res[151].exec("mainOmain"), 244);
+assertEquals("aba,a,", res[153].exec("aba"), 245);
+assertEquals("aabbaa,aa,", res[154].exec("aabbaa"), 246);
+assertEquals("aabbaa,aa,", res[155].exec("aabbaa"), 247);
+assertEquals("aabbaa,aa,", res[156].exec("aabbaa"), 248);
+assertEquals("aabbaa,", res[157].exec("aabbaa"), 249);
+assertEquals("aabbaa,aa,,", res[158].exec("aabbaa"), 250);
+assertEquals("aabbaa,,", res[159].exec("aabbaa"), 251);
+assertEquals("aabbaa,", res[160].exec("aabbaa"), 252);
+assertEquals("aabbbaa,", res[161].exec("aabbbaa"), 253);
+assertEquals("aabbbaa,", res[162].exec("aabbbaa"), 254);
+assertEquals("aabbaa,", res[163].exec("aabbaa"), 255);
+assertEquals("aabbbaa,", res[164].exec("aabbbaa"), 256);
+assertEquals("aabbbaa,aa,,", res[165].exec("aabbbaa"), 257);
+assertEquals("aabbbbaa,aa,,", res[166].exec("aabbbbaa"), 258);
 assertThrows("var re = //;", 259);
-assertToStringEquals("a", res[169].exec("ab"), 260);
-assertToStringEquals("a", res[169].exec("aB"), 261);
-assertToStringEquals("*", res[169].exec("*** Failers"), 262);
-assertToStringEquals("A", res[169].exec("AB"), 263);
-assertToStringEquals("a", res[169].exec("ab"), 264);
-assertToStringEquals("a", res[169].exec("aB"), 265);
-assertToStringEquals("*", res[169].exec("*** Failers"), 266);
-assertToStringEquals("A", res[169].exec("AB"), 267);
-assertNull(res[172].exec("\\", 268));
-assertNull(res[177].exec("*** Failers", 269));
-assertNull(res[177].exec("xxxxx", 270));
-assertNull(res[177].exec("now is the time for all good men to come to the aid of the party", 271));
-assertNull(res[177].exec("*** Failers", 272));
-assertNull(res[177].exec("this is not a line with only words and spaces!", 273));
-assertNull(res[177].exec("12345a", 274));
-assertNull(res[177].exec("*** Failers", 275));
-assertNull(res[177].exec("12345+", 276));
-assertNull(res[177].exec("aaab", 277));
-assertNull(res[177].exec("aaab", 278));
-assertNull(res[177].exec("aaab", 279));
-assertNull(res[177].exec("((abc(ade)ufh()()x", 280));
-assertNull(res[177].exec("(abc)", 281));
-assertNull(res[177].exec("(abc(def)xyz)", 282));
-assertNull(res[177].exec("*** Failers", 283));
-assertNull(res[177].exec("((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 284));
-assertNull(res[177].exec("xaaaab", 285));
-assertNull(res[177].exec("xaaaab", 286));
+assertEquals("a", res[169].exec("ab"), 260);
+assertEquals("a", res[169].exec("aB"), 261);
+assertEquals("*", res[169].exec("*** Failers"), 262);
+assertEquals("A", res[169].exec("AB"), 263);
+assertEquals("a", res[169].exec("ab"), 264);
+assertEquals("a", res[169].exec("aB"), 265);
+assertEquals("*", res[169].exec("*** Failers"), 266);
+assertEquals("A", res[169].exec("AB"), 267);
+assertEquals(null, res[172].exec("\\", 268));
+assertEquals(null, res[177].exec("*** Failers", 269));
+assertEquals(null, res[177].exec("xxxxx", 270));
+assertEquals(null, res[177].exec("now is the time for all good men to come to the aid of the party", 271));
+assertEquals(null, res[177].exec("*** Failers", 272));
+assertEquals(null, res[177].exec("this is not a line with only words and spaces!", 273));
+assertEquals(null, res[177].exec("12345a", 274));
+assertEquals(null, res[177].exec("*** Failers", 275));
+assertEquals(null, res[177].exec("12345+", 276));
+assertEquals(null, res[177].exec("aaab", 277));
+assertEquals(null, res[177].exec("aaab", 278));
+assertEquals(null, res[177].exec("aaab", 279));
+assertEquals(null, res[177].exec("((abc(ade)ufh()()x", 280));
+assertEquals(null, res[177].exec("(abc)", 281));
+assertEquals(null, res[177].exec("(abc(def)xyz)", 282));
+assertEquals(null, res[177].exec("*** Failers", 283));
+assertEquals(null, res[177].exec("((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 284));
+assertEquals(null, res[177].exec("xaaaab", 285));
+assertEquals(null, res[177].exec("xaaaab", 286));
 assertThrows("var re = /[/;", 287);
 assertThrows("var re = /[a-/;", 288);
-assertNull(res[189].exec("<>", 289));
-assertNull(res[189].exec("<abcd>", 290));
-assertNull(res[189].exec("<abc <123> hij>", 291));
-assertNull(res[189].exec("<abc <def> hij>", 292));
-assertNull(res[189].exec("<abc<>def>", 293));
-assertNull(res[189].exec("<abc<>", 294));
-assertNull(res[189].exec("*** Failers", 295));
-assertNull(res[189].exec("<abc", 296));
-assertToStringEquals("bc123bc,bc,bc", res[195].exec("abc123bc"), 297);
-assertToStringEquals("abc", res[215].exec("abcdef"), 298);
-assertToStringEquals("abc", res[215].exec("1234abcdef"), 299);
-assertNull(res[215].exec("*** Failers", 300));
-assertToStringEquals("abc", res[215].exec("abcxyz"), 301);
-assertToStringEquals("abc", res[215].exec("abcxyzf"), 302);
-assertToStringEquals("abc", res[215].exec("123abcdef"), 303);
-assertToStringEquals("abc", res[215].exec("1234abcdef"), 304);
-assertNull(res[215].exec("*** Failers", 305));
-assertToStringEquals("abc", res[215].exec("abcdef"), 306);
-assertNull(res[215].exec("*** Failers", 307));
-assertToStringEquals("abc", res[215].exec("\x83x0abcdef"), 308);
-assertToStringEquals("abc", res[215].exec("123abcdef"), 309);
-assertToStringEquals("abc", res[215].exec("123abcdefC+"), 310);
-assertToStringEquals("abc", res[215].exec("123abcdefC-"), 311);
-assertNull(res[215].exec("*** Failers", 312));
-assertToStringEquals("abc", res[215].exec("123abcdefC!1"), 313);
-assertToStringEquals("abc", res[215].exec("abcabcabc"), 314);
-assertToStringEquals("abc", res[215].exec("abcabcC!1!3"), 315);
-assertNull(res[215].exec("*** Failers", 316));
-assertToStringEquals("abc", res[215].exec("abcabcabcC!1!3"), 317);
-assertToStringEquals("C", res[215].exec("123C+"), 318);
-assertToStringEquals("C", res[215].exec("123456C+"), 319);
-assertToStringEquals("C", res[215].exec("123456789C+"), 320);
-assertToStringEquals("abc", res[215].exec("xyzabcC+"), 321);
-assertToStringEquals("abc", res[215].exec("XxyzabcC+"), 322);
-assertToStringEquals("abc", res[215].exec("abcdefC+"), 323);
-assertToStringEquals("abc", res[215].exec("abcxyzC+"), 324);
-assertToStringEquals("c", res[215].exec("abbbbbcccC*1"), 325);
-assertToStringEquals("c", res[215].exec("abbbbbcccC*1"), 326);
-assertNull(res[215].exec("xab", 327));
-assertToStringEquals("c", res[215].exec("xbc"), 328);
-assertNull(res[215].exec("xde", 329));
-assertNull(res[215].exec("xxab", 330));
-assertNull(res[215].exec("xxxab", 331));
-assertNull(res[215].exec("*** Failers", 332));
-assertNull(res[215].exec("xyab", 333));
-assertToStringEquals("abc", res[215].exec("abc"), 334);
-assertToStringEquals("c", res[215].exec("a(b)c"), 335);
-assertToStringEquals("c", res[215].exec("a(b(c))d"), 336);
-assertNull(res[215].exec("*** Failers)", 337));
-assertToStringEquals("c", res[215].exec("a(b(c)d"), 338);
-assertNull(res[215].exec("1221", 339));
-assertToStringEquals("c", res[215].exec("Satan, oscillate my metallic sonatas!"), 340);
-assertToStringEquals("c", res[215].exec("A man, a plan, a canal: Panama!"), 341);
-assertNull(res[215].exec("Able was I ere I saw Elba.", 342));
-assertNull(res[215].exec("*** Failers", 343));
-assertToStringEquals("c", res[215].exec("The quick brown fox"), 344);
-assertNull(res[215].exec("12", 345));
-assertNull(res[215].exec("(((2+2)*-3)-7)", 346));
-assertNull(res[215].exec("-12", 347));
-assertNull(res[215].exec("*** Failers", 348));
-assertNull(res[215].exec("((2+2)*-3)-7)", 349));
-assertNull(res[215].exec("xyz", 350));
-assertNull(res[215].exec("xxyzxyzz", 351));
-assertNull(res[215].exec("*** Failers", 352));
-assertNull(res[215].exec("xxyzz", 353));
-assertNull(res[215].exec("xxyzxyzxyzz", 354));
-assertNull(res[215].exec("<>", 355));
-assertToStringEquals("abc", res[215].exec("<abcd>"), 356);
-assertToStringEquals("abc", res[215].exec("<abc <123> hij>"), 357);
-assertToStringEquals("abc", res[215].exec("<abc <def> hij>"), 358);
-assertToStringEquals("abc", res[215].exec("<abc<>def>"), 359);
-assertToStringEquals("abc", res[215].exec("<abc<>"), 360);
-assertNull(res[215].exec("*** Failers", 361));
-assertToStringEquals("abc", res[215].exec("<abc"), 362);
-assertToStringEquals("abc", res[215].exec("abcdefabc"), 363);
-assertNull(res[215].exec("a=a", 364));
-assertNull(res[215].exec("a=b", 365));
-assertToStringEquals("c", res[215].exec("a=bc"), 366);
-assertNull(res[215].exec("a=a", 367));
-assertNull(res[215].exec("a=b", 368));
-assertToStringEquals("c", res[215].exec("a=bc"), 369);
-assertNull(res[215].exec("abde", 370));
-assertToStringEquals("c", res[215].exec("acde"), 371);
-assertNull(res[215].exec("1221", 372));
-assertToStringEquals("c", res[215].exec("Satan, oscillate my metallic sonatas!"), 373);
-assertToStringEquals("c", res[215].exec("A man, a plan, a canal: Panama!"), 374);
-assertNull(res[215].exec("Able was I ere I saw Elba.", 375));
-assertNull(res[215].exec("*** Failers", 376));
-assertToStringEquals("c", res[215].exec("The quick brown fox"), 377);
-assertNull(res[228].exec("abcdefgh", 378));
-assertNull(res[228].exec("abcdefghC1Gtwo", 379));
-assertNull(res[228].exec("abcdefghConeCtwo", 380));
-assertNull(res[228].exec("abcdefghCthree", 381));
-assertToStringEquals("zz,", res[228].exec("zzaaCZ"), 382);
-assertToStringEquals("zz,", res[228].exec("zzaaCA"), 383);
-assertNull(res[228].exec("[10,20,30,5,5,4,4,2,43,23,4234]", 384));
-assertNull(res[228].exec("*** Failers", 385));
-assertNull(res[228].exec("[]", 386));
-assertNull(res[228].exec("[10,20,30,5,5,4,4,2,43,23,4234]", 387));
-assertNull(res[228].exec("[]", 388));
-assertToStringEquals(" Baby Bjorn Active Carrier - With free SHIPPING!!, Baby Bjorn Active Carrier - With free SHIPPING!!,,", res[229].exec(" Baby Bjorn Active Carrier - With free SHIPPING!!"), 389);
-assertToStringEquals(" Baby Bjorn Active Carrier - With free SHIPPING!!, Baby Bjorn Active Carrier - With free SHIPPING!!,,", res[230].exec(" Baby Bjorn Active Carrier - With free SHIPPING!!"), 390);
-assertNull(res[238].exec("Note: that { does NOT introduce a quantifier", 391));
-assertToStringEquals("aacaacaacaacaac123,aac", res[239].exec("aacaacaacaacaac123"), 392);
-assertNull(res[243].exec("abP", 393));
-assertNull(res[243].exec("abcP", 394));
-assertNull(res[243].exec("abcdP", 395));
-assertToStringEquals("abcde", res[243].exec("abcdeP"), 396);
-assertNull(res[243].exec("the quick brown abcP", 397));
-assertNull(res[243].exec("** FailersP", 398));
-assertNull(res[243].exec("the quick brown abxyz foxP", 399));
-assertNull(res[243].exec("13/05/04P", 400));
-assertNull(res[243].exec("13/5/2004P", 401));
-assertNull(res[243].exec("02/05/09P", 402));
-assertNull(res[243].exec("1P", 403));
-assertNull(res[243].exec("1/2P", 404));
-assertNull(res[243].exec("1/2/0P", 405));
-assertNull(res[243].exec("1/2/04P", 406));
-assertNull(res[243].exec("0P", 407));
-assertNull(res[243].exec("02/P", 408));
-assertNull(res[243].exec("02/0P", 409));
-assertNull(res[243].exec("02/1P", 410));
-assertNull(res[243].exec("** FailersP", 411));
-assertNull(res[243].exec("P", 412));
-assertNull(res[243].exec("123P", 413));
-assertNull(res[243].exec("33/4/04P", 414));
-assertNull(res[243].exec("3/13/04P", 415));
-assertNull(res[243].exec("0/1/2003P", 416));
-assertNull(res[243].exec("0/P", 417));
-assertNull(res[243].exec("02/0/P", 418));
-assertNull(res[243].exec("02/13P", 419));
-assertToStringEquals("123", res[248].exec("123P"), 420);
-assertNull(res[248].exec("aP", 421));
-assertNull(res[248].exec("bP", 422));
-assertNull(res[248].exec("cP", 423));
-assertNull(res[248].exec("c12P", 424));
-assertToStringEquals("c123", res[248].exec("c123P"), 425);
-assertNull(res[249].exec("1P", 426));
-assertNull(res[249].exec("123P", 427));
-assertToStringEquals("123X", res[249].exec("123X"), 428);
-assertNull(res[249].exec("1234P", 429));
-assertToStringEquals("1234X", res[249].exec("1234X"), 430);
-assertNull(res[249].exec("12345P", 431));
-assertToStringEquals("12345X", res[249].exec("12345X"), 432);
-assertNull(res[249].exec("*** Failers", 433));
-assertNull(res[249].exec("1X", 434));
-assertNull(res[249].exec("123456P", 435));
-assertNull(res[249].exec("abc", 436));
-assertNull(res[249].exec("** Failers", 437));
-assertNull(res[249].exec("bca", 438));
-assertNull(res[249].exec("abc", 439));
-assertNull(res[249].exec("** Failers", 440));
-assertNull(res[249].exec("bca", 441));
-assertNull(res[249].exec("abc", 442));
-assertNull(res[249].exec("** Failers", 443));
-assertNull(res[249].exec("def", 444));
-assertNull(res[249].exec("abc", 445));
-assertNull(res[249].exec("** Failers", 446));
-assertNull(res[249].exec("def", 447));
-assertNull(res[249].exec("<!DOCTYPE seite SYSTEM \"http://www.lco.lineas.de/xmlCms.dtd\">\n<seite>\n<dokumenteninformation>\n<seitentitel>Partner der LCO</seitentitel>\n<sprache>de</sprache>\n<seitenbeschreibung>Partner der LINEAS Consulting\nGmbH</seitenbeschreibung>\n<schluesselworte>LINEAS Consulting GmbH Hamburg\nPartnerfirmen</schluesselworte>\n<revisit>30 days</revisit>\n<robots>index,follow</robots>\n<menueinformation>\n<aktiv>ja</aktiv>\n<menueposition>3</menueposition>\n<menuetext>Partner</menuetext>\n</menueinformation>\n<lastedited>\n<autor>LCO</autor>\n<firma>LINEAS Consulting</firma>\n<datum>15.10.2003</datum>\n</lastedited>\n</dokumenteninformation>\n<inhalt>\n\n<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\nGmbH</absatzueberschrift>\n\n<absatz><link ziel=\"http://www.ca.com/\" zielfenster=\"_blank\">\n<bild name=\"logo_ca.gif\" rahmen=\"no\"/></link> <link\nziel=\"http://www.ey.com/\" zielfenster=\"_blank\"><bild\nname=\"logo_euy.gif\" rahmen=\"no\"/></link>\n</absatz>\n\n<absatz><link ziel=\"http://www.cisco.de/\" zielfenster=\"_blank\">\n<bild name=\"logo_cisco.gif\" rahmen=\"ja\"/></link></absatz>\n\n<absatz><link ziel=\"http://www.atelion.de/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_atelion.gif\" rahmen=\"no\"/></link>\n</absatz>\n\n<absatz><link ziel=\"http://www.line-information.de/\"\nzielfenster=\"_blank\">\n<bild name=\"logo_line_information.gif\" rahmen=\"no\"/></link>\n</absatz>\n\n<absatz><bild name=\"logo_aw.gif\" rahmen=\"no\"/></absatz>\n\n<absatz><link ziel=\"http://www.incognis.de/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_incognis.gif\" rahmen=\"no\"/></link></absatz>\n\n<absatz><link ziel=\"http://www.addcraft.com/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_addcraft.gif\" rahmen=\"no\"/></link></absatz>\n\n<absatz><link ziel=\"http://www.comendo.com/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_comendo.gif\" rahmen=\"no\"/></link></absatz>\n\n</inhalt>\n</seite>", 448));
-assertToStringEquals("line\nbreak", res[251].exec("this is a line\nbreak"), 449);
-assertToStringEquals("line\nbreak", res[251].exec("line one\nthis is a line\nbreak in the second line"), 450);
-assertToStringEquals("line\nbreak", res[252].exec("this is a line\nbreak"), 451);
-assertNull(res[252].exec("** Failers", 452));
-assertToStringEquals("line\nbreak", res[252].exec("line one\nthis is a line\nbreak in the second line"), 453);
-assertToStringEquals("line\nbreak", res[253].exec("this is a line\nbreak"), 454);
-assertNull(res[253].exec("** Failers", 455));
-assertToStringEquals("line\nbreak", res[253].exec("line one\nthis is a line\nbreak in the second line"), 456);
-assertToStringEquals("ab-cd", res[254].exec("ab-cd"), 457);
-assertToStringEquals("ab=cd", res[254].exec("ab=cd"), 458);
-assertNull(res[254].exec("** Failers", 459));
-assertNull(res[254].exec("ab\ncd", 460));
-assertToStringEquals("ab-cd", res[255].exec("ab-cd"), 461);
-assertToStringEquals("ab=cd", res[255].exec("ab=cd"), 462);
-assertNull(res[255].exec("ab\ncd", 463));
-assertNull(res[255].exec("AbCd", 464));
-assertNull(res[255].exec("** Failers", 465));
-assertNull(res[255].exec("abcd", 466));
+assertEquals(null, res[189].exec("<>", 289));
+assertEquals(null, res[189].exec("<abcd>", 290));
+assertEquals(null, res[189].exec("<abc <123> hij>", 291));
+assertEquals(null, res[189].exec("<abc <def> hij>", 292));
+assertEquals(null, res[189].exec("<abc<>def>", 293));
+assertEquals(null, res[189].exec("<abc<>", 294));
+assertEquals(null, res[189].exec("*** Failers", 295));
+assertEquals(null, res[189].exec("<abc", 296));
+assertEquals("bc123bc,bc,bc", res[195].exec("abc123bc"), 297);
+assertEquals("abc", res[215].exec("abcdef"), 298);
+assertEquals("abc", res[215].exec("1234abcdef"), 299);
+assertEquals(null, res[215].exec("*** Failers", 300));
+assertEquals("abc", res[215].exec("abcxyz"), 301);
+assertEquals("abc", res[215].exec("abcxyzf"), 302);
+assertEquals("abc", res[215].exec("123abcdef"), 303);
+assertEquals("abc", res[215].exec("1234abcdef"), 304);
+assertEquals(null, res[215].exec("*** Failers", 305));
+assertEquals("abc", res[215].exec("abcdef"), 306);
+assertEquals(null, res[215].exec("*** Failers", 307));
+assertEquals("abc", res[215].exec("\x83x0abcdef"), 308);
+assertEquals("abc", res[215].exec("123abcdef"), 309);
+assertEquals("abc", res[215].exec("123abcdefC+"), 310);
+assertEquals("abc", res[215].exec("123abcdefC-"), 311);
+assertEquals(null, res[215].exec("*** Failers", 312));
+assertEquals("abc", res[215].exec("123abcdefC!1"), 313);
+assertEquals("abc", res[215].exec("abcabcabc"), 314);
+assertEquals("abc", res[215].exec("abcabcC!1!3"), 315);
+assertEquals(null, res[215].exec("*** Failers", 316));
+assertEquals("abc", res[215].exec("abcabcabcC!1!3"), 317);
+assertEquals("C", res[215].exec("123C+"), 318);
+assertEquals("C", res[215].exec("123456C+"), 319);
+assertEquals("C", res[215].exec("123456789C+"), 320);
+assertEquals("abc", res[215].exec("xyzabcC+"), 321);
+assertEquals("abc", res[215].exec("XxyzabcC+"), 322);
+assertEquals("abc", res[215].exec("abcdefC+"), 323);
+assertEquals("abc", res[215].exec("abcxyzC+"), 324);
+assertEquals("c", res[215].exec("abbbbbcccC*1"), 325);
+assertEquals("c", res[215].exec("abbbbbcccC*1"), 326);
+assertEquals(null, res[215].exec("xab", 327));
+assertEquals("c", res[215].exec("xbc"), 328);
+assertEquals(null, res[215].exec("xde", 329));
+assertEquals(null, res[215].exec("xxab", 330));
+assertEquals(null, res[215].exec("xxxab", 331));
+assertEquals(null, res[215].exec("*** Failers", 332));
+assertEquals(null, res[215].exec("xyab", 333));
+assertEquals("abc", res[215].exec("abc"), 334);
+assertEquals("c", res[215].exec("a(b)c"), 335);
+assertEquals("c", res[215].exec("a(b(c))d"), 336);
+assertEquals(null, res[215].exec("*** Failers)", 337));
+assertEquals("c", res[215].exec("a(b(c)d"), 338);
+assertEquals(null, res[215].exec("1221", 339));
+assertEquals("c", res[215].exec("Satan, oscillate my metallic sonatas!"), 340);
+assertEquals("c", res[215].exec("A man, a plan, a canal: Panama!"), 341);
+assertEquals(null, res[215].exec("Able was I ere I saw Elba.", 342));
+assertEquals(null, res[215].exec("*** Failers", 343));
+assertEquals("c", res[215].exec("The quick brown fox"), 344);
+assertEquals(null, res[215].exec("12", 345));
+assertEquals(null, res[215].exec("(((2+2)*-3)-7)", 346));
+assertEquals(null, res[215].exec("-12", 347));
+assertEquals(null, res[215].exec("*** Failers", 348));
+assertEquals(null, res[215].exec("((2+2)*-3)-7)", 349));
+assertEquals(null, res[215].exec("xyz", 350));
+assertEquals(null, res[215].exec("xxyzxyzz", 351));
+assertEquals(null, res[215].exec("*** Failers", 352));
+assertEquals(null, res[215].exec("xxyzz", 353));
+assertEquals(null, res[215].exec("xxyzxyzxyzz", 354));
+assertEquals(null, res[215].exec("<>", 355));
+assertEquals("abc", res[215].exec("<abcd>"), 356);
+assertEquals("abc", res[215].exec("<abc <123> hij>"), 357);
+assertEquals("abc", res[215].exec("<abc <def> hij>"), 358);
+assertEquals("abc", res[215].exec("<abc<>def>"), 359);
+assertEquals("abc", res[215].exec("<abc<>"), 360);
+assertEquals(null, res[215].exec("*** Failers", 361));
+assertEquals("abc", res[215].exec("<abc"), 362);
+assertEquals("abc", res[215].exec("abcdefabc"), 363);
+assertEquals(null, res[215].exec("a=a", 364));
+assertEquals(null, res[215].exec("a=b", 365));
+assertEquals("c", res[215].exec("a=bc"), 366);
+assertEquals(null, res[215].exec("a=a", 367));
+assertEquals(null, res[215].exec("a=b", 368));
+assertEquals("c", res[215].exec("a=bc"), 369);
+assertEquals(null, res[215].exec("abde", 370));
+assertEquals("c", res[215].exec("acde"), 371);
+assertEquals(null, res[215].exec("1221", 372));
+assertEquals("c", res[215].exec("Satan, oscillate my metallic sonatas!"), 373);
+assertEquals("c", res[215].exec("A man, a plan, a canal: Panama!"), 374);
+assertEquals(null, res[215].exec("Able was I ere I saw Elba.", 375));
+assertEquals(null, res[215].exec("*** Failers", 376));
+assertEquals("c", res[215].exec("The quick brown fox"), 377);
+assertEquals(null, res[228].exec("abcdefgh", 378));
+assertEquals(null, res[228].exec("abcdefghC1Gtwo", 379));
+assertEquals(null, res[228].exec("abcdefghConeCtwo", 380));
+assertEquals(null, res[228].exec("abcdefghCthree", 381));
+assertEquals("zz,", res[228].exec("zzaaCZ"), 382);
+assertEquals("zz,", res[228].exec("zzaaCA"), 383);
+assertEquals(null, res[228].exec("[10,20,30,5,5,4,4,2,43,23,4234]", 384));
+assertEquals(null, res[228].exec("*** Failers", 385));
+assertEquals(null, res[228].exec("[]", 386));
+assertEquals(null, res[228].exec("[10,20,30,5,5,4,4,2,43,23,4234]", 387));
+assertEquals(null, res[228].exec("[]", 388));
+assertEquals(" Baby Bjorn Active Carrier - With free SHIPPING!!, Baby Bjorn Active Carrier - With free SHIPPING!!,,", res[229].exec(" Baby Bjorn Active Carrier - With free SHIPPING!!"), 389);
+assertEquals(" Baby Bjorn Active Carrier - With free SHIPPING!!, Baby Bjorn Active Carrier - With free SHIPPING!!,,", res[230].exec(" Baby Bjorn Active Carrier - With free SHIPPING!!"), 390);
+assertEquals(null, res[238].exec("Note: that { does NOT introduce a quantifier", 391));
+assertEquals("aacaacaacaacaac123,aac", res[239].exec("aacaacaacaacaac123"), 392);
+assertEquals(null, res[243].exec("abP", 393));
+assertEquals(null, res[243].exec("abcP", 394));
+assertEquals(null, res[243].exec("abcdP", 395));
+assertEquals("abcde", res[243].exec("abcdeP"), 396);
+assertEquals(null, res[243].exec("the quick brown abcP", 397));
+assertEquals(null, res[243].exec("** FailersP", 398));
+assertEquals(null, res[243].exec("the quick brown abxyz foxP", 399));
+assertEquals(null, res[243].exec("13/05/04P", 400));
+assertEquals(null, res[243].exec("13/5/2004P", 401));
+assertEquals(null, res[243].exec("02/05/09P", 402));
+assertEquals(null, res[243].exec("1P", 403));
+assertEquals(null, res[243].exec("1/2P", 404));
+assertEquals(null, res[243].exec("1/2/0P", 405));
+assertEquals(null, res[243].exec("1/2/04P", 406));
+assertEquals(null, res[243].exec("0P", 407));
+assertEquals(null, res[243].exec("02/P", 408));
+assertEquals(null, res[243].exec("02/0P", 409));
+assertEquals(null, res[243].exec("02/1P", 410));
+assertEquals(null, res[243].exec("** FailersP", 411));
+assertEquals(null, res[243].exec("P", 412));
+assertEquals(null, res[243].exec("123P", 413));
+assertEquals(null, res[243].exec("33/4/04P", 414));
+assertEquals(null, res[243].exec("3/13/04P", 415));
+assertEquals(null, res[243].exec("0/1/2003P", 416));
+assertEquals(null, res[243].exec("0/P", 417));
+assertEquals(null, res[243].exec("02/0/P", 418));
+assertEquals(null, res[243].exec("02/13P", 419));
+assertEquals("123", res[248].exec("123P"), 420);
+assertEquals(null, res[248].exec("aP", 421));
+assertEquals(null, res[248].exec("bP", 422));
+assertEquals(null, res[248].exec("cP", 423));
+assertEquals(null, res[248].exec("c12P", 424));
+assertEquals("c123", res[248].exec("c123P"), 425);
+assertEquals(null, res[249].exec("1P", 426));
+assertEquals(null, res[249].exec("123P", 427));
+assertEquals("123X", res[249].exec("123X"), 428);
+assertEquals(null, res[249].exec("1234P", 429));
+assertEquals("1234X", res[249].exec("1234X"), 430);
+assertEquals(null, res[249].exec("12345P", 431));
+assertEquals("12345X", res[249].exec("12345X"), 432);
+assertEquals(null, res[249].exec("*** Failers", 433));
+assertEquals(null, res[249].exec("1X", 434));
+assertEquals(null, res[249].exec("123456P", 435));
+assertEquals(null, res[249].exec("abc", 436));
+assertEquals(null, res[249].exec("** Failers", 437));
+assertEquals(null, res[249].exec("bca", 438));
+assertEquals(null, res[249].exec("abc", 439));
+assertEquals(null, res[249].exec("** Failers", 440));
+assertEquals(null, res[249].exec("bca", 441));
+assertEquals(null, res[249].exec("abc", 442));
+assertEquals(null, res[249].exec("** Failers", 443));
+assertEquals(null, res[249].exec("def", 444));
+assertEquals(null, res[249].exec("abc", 445));
+assertEquals(null, res[249].exec("** Failers", 446));
+assertEquals(null, res[249].exec("def", 447));
+assertEquals(null, res[249].exec("<!DOCTYPE seite SYSTEM \"http://www.lco.lineas.de/xmlCms.dtd\">\n<seite>\n<dokumenteninformation>\n<seitentitel>Partner der LCO</seitentitel>\n<sprache>de</sprache>\n<seitenbeschreibung>Partner der LINEAS Consulting\nGmbH</seitenbeschreibung>\n<schluesselworte>LINEAS Consulting GmbH Hamburg\nPartnerfirmen</schluesselworte>\n<revisit>30 days</revisit>\n<robots>index,follow</robots>\n<menueinformation>\n<aktiv>ja</aktiv>\n<menueposition>3</menueposition>\n<menuetext>Partner</menuetext>\n</menueinformation>\n<lastedited>\n<autor>LCO</autor>\n<firma>LINEAS Consulting</firma>\n<datum>15.10.2003</datum>\n</lastedited>\n</dokumenteninformation>\n<inhalt>\n\n<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\nGmbH</absatzueberschrift>\n\n<absatz><link ziel=\"http://www.ca.com/\" zielfenster=\"_blank\">\n<bild name=\"logo_ca.gif\" rahmen=\"no\"/></link> <link\nziel=\"http://www.ey.com/\" zielfenster=\"_blank\"><bild\nname=\"logo_euy.gif\" rahmen=\"no\"/></link>\n</absatz>\n\n<absatz><link ziel=\"http://www.cisco.de/\" zielfenster=\"_blank\">\n<bild name=\"logo_cisco.gif\" rahmen=\"ja\"/></link></absatz>\n\n<absatz><link ziel=\"http://www.atelion.de/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_atelion.gif\" rahmen=\"no\"/></link>\n</absatz>\n\n<absatz><link ziel=\"http://www.line-information.de/\"\nzielfenster=\"_blank\">\n<bild name=\"logo_line_information.gif\" rahmen=\"no\"/></link>\n</absatz>\n\n<absatz><bild name=\"logo_aw.gif\" rahmen=\"no\"/></absatz>\n\n<absatz><link ziel=\"http://www.incognis.de/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_incognis.gif\" rahmen=\"no\"/></link></absatz>\n\n<absatz><link ziel=\"http://www.addcraft.com/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_addcraft.gif\" rahmen=\"no\"/></link></absatz>\n\n<absatz><link ziel=\"http://www.comendo.com/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_comendo.gif\" rahmen=\"no\"/></link></absatz>\n\n</inhalt>\n</seite>", 448));
+assertEquals("line\nbreak", res[251].exec("this is a line\nbreak"), 449);
+assertEquals("line\nbreak", res[251].exec("line one\nthis is a line\nbreak in the second line"), 450);
+assertEquals("line\nbreak", res[252].exec("this is a line\nbreak"), 451);
+assertEquals(null, res[252].exec("** Failers", 452));
+assertEquals("line\nbreak", res[252].exec("line one\nthis is a line\nbreak in the second line"), 453);
+assertEquals("line\nbreak", res[253].exec("this is a line\nbreak"), 454);
+assertEquals(null, res[253].exec("** Failers", 455));
+assertEquals("line\nbreak", res[253].exec("line one\nthis is a line\nbreak in the second line"), 456);
+assertEquals("ab-cd", res[254].exec("ab-cd"), 457);
+assertEquals("ab=cd", res[254].exec("ab=cd"), 458);
+assertEquals(null, res[254].exec("** Failers", 459));
+assertEquals(null, res[254].exec("ab\ncd", 460));
+assertEquals("ab-cd", res[255].exec("ab-cd"), 461);
+assertEquals("ab=cd", res[255].exec("ab=cd"), 462);
+assertEquals(null, res[255].exec("ab\ncd", 463));
+assertEquals(null, res[255].exec("AbCd", 464));
+assertEquals(null, res[255].exec("** Failers", 465));
+assertEquals(null, res[255].exec("abcd", 466));
 // We are compatible with JSC, and don't throw an exception in this case.
 // assertThrows("var re = /(){2,4294967295}/;", 467);
-assertNull(res[255].exec("abcdefghijklAkB", 468));
-assertNull(res[255].exec("abcdefghijklAkB", 469));
-assertNull(res[255].exec("abcdefghijklAkB", 470));
-assertNull(res[255].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 471));
-assertNull(res[255].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 472));
-assertNull(res[255].exec("(this(and)that", 473));
-assertNull(res[255].exec("(this(and)that)", 474));
-assertNull(res[255].exec("(this(and)that)stuff", 475));
-assertNull(res[255].exec("(this(and)that", 476));
-assertNull(res[255].exec("(this(and)that)", 477));
-assertNull(res[255].exec("(this(and)that", 478));
-assertNull(res[255].exec("(this(and)that)", 479));
-assertNull(res[255].exec("(this(and)that", 480));
-assertNull(res[255].exec("(this(and)that)", 481));
-assertNull(res[255].exec("((this))", 482));
-assertNull(res[255].exec("(this(and)that", 483));
-assertNull(res[255].exec("(this(and)that)", 484));
-assertNull(res[255].exec("(this)", 485));
-assertNull(res[255].exec("((this))", 486));
-assertToStringEquals("abc,b", res[256].exec("abc"), 487);
-assertToStringEquals("abc,b", res[256].exec("abc"), 488);
-assertNull(res[256].exec("a1bCA", 489));
-assertNull(res[256].exec("a2bCA", 490));
-assertNull(res[257].exec("a bc dCACBCC", 491));
-assertNull(res[257].exec("aabc", 492));
-assertNull(res[257].exec("bc", 493));
-assertNull(res[257].exec("** Failers", 494));
-assertNull(res[257].exec("abc", 495));
-assertNull(res[257].exec("bXaX", 496));
-assertNull(res[257].exec("bbXaaX", 497));
-assertNull(res[257].exec("(b)\\Xa\\X", 498));
-assertNull(res[257].exec("bXXaYYaY", 499));
-assertNull(res[257].exec("bXYaXXaX", 500));
-assertNull(res[257].exec("bXXaYYaY", 501));
-assertToStringEquals("\x0b,\x0b", res[259].exec("\x0b,\x0b"), 502);
-assertToStringEquals("\x0c,\x0d", res[259].exec("\x0c,\x0d"), 503);
-assertToStringEquals("abc", res[260].exec("xyz\nabc"), 504);
-assertToStringEquals("abc", res[260].exec("xyz\nabc<lf>"), 505);
-assertToStringEquals("abc", res[260].exec("xyz\x0d\nabc<lf>"), 506);
-assertToStringEquals("abc", res[260].exec("xyz\x0dabc<cr>"), 507);
-assertToStringEquals("abc", res[260].exec("xyz\x0d\nabc<crlf>"), 508);
-assertNull(res[260].exec("** Failers", 509));
-assertToStringEquals("abc", res[260].exec("xyz\nabc<cr>"), 510);
-assertToStringEquals("abc", res[260].exec("xyz\x0d\nabc<cr>"), 511);
-assertToStringEquals("abc", res[260].exec("xyz\nabc<crlf>"), 512);
-assertToStringEquals("abc", res[260].exec("xyz\x0dabc<crlf>"), 513);
-assertToStringEquals("abc", res[260].exec("xyz\x0dabc<lf>"), 514);
-assertToStringEquals("abc", res[261].exec("xyzabc"), 515);
-assertToStringEquals("abc", res[261].exec("xyzabc\n"), 516);
-assertToStringEquals("abc", res[261].exec("xyzabc\npqr"), 517);
-assertToStringEquals("abc", res[261].exec("xyzabc\x0d<cr>"), 518);
-assertToStringEquals("abc", res[261].exec("xyzabc\x0dpqr<cr>"), 519);
-assertToStringEquals("abc", res[261].exec("xyzabc\x0d\n<crlf>"), 520);
-assertToStringEquals("abc", res[261].exec("xyzabc\x0d\npqr<crlf>"), 521);
-assertNull(res[261].exec("** Failers", 522));
-assertToStringEquals("abc", res[261].exec("xyzabc\x0d"), 523);
-assertToStringEquals("abc", res[261].exec("xyzabc\x0dpqr"), 524);
-assertToStringEquals("abc", res[261].exec("xyzabc\x0d\n"), 525);
-assertToStringEquals("abc", res[261].exec("xyzabc\x0d\npqr"), 526);
-assertToStringEquals("abc", res[262].exec("xyz\x0dabcdef"), 527);
-assertToStringEquals("abc", res[262].exec("xyz\nabcdef<lf>"), 528);
-assertNull(res[262].exec("** Failers", 529));
-assertToStringEquals("abc", res[262].exec("xyz\nabcdef"), 530);
-assertToStringEquals("abc", res[263].exec("xyz\nabcdef"), 531);
-assertToStringEquals("abc", res[263].exec("xyz\x0dabcdef<cr>"), 532);
-assertNull(res[263].exec("** Failers", 533));
-assertToStringEquals("abc", res[263].exec("xyz\x0dabcdef"), 534);
-assertToStringEquals("abc", res[264].exec("xyz\x0d\nabcdef"), 535);
-assertToStringEquals("abc", res[264].exec("xyz\x0dabcdef<cr>"), 536);
-assertNull(res[264].exec("** Failers", 537));
-assertToStringEquals("abc", res[264].exec("xyz\x0dabcdef"), 538);
-assertToStringEquals("abc", res[266].exec("xyz\x0dabc<bad>"), 539);
-assertToStringEquals("abc", res[266].exec("abc"), 540);
-assertToStringEquals("abc", res[267].exec("abc\ndef"), 541);
-assertToStringEquals("abc", res[267].exec("abc\x0ddef"), 542);
-assertToStringEquals("abc", res[267].exec("abc\x0d\ndef"), 543);
-assertToStringEquals("<cr>abc", res[267].exec("<cr>abc\ndef"), 544);
-assertToStringEquals("<cr>abc", res[267].exec("<cr>abc\x0ddef"), 545);
-assertToStringEquals("<cr>abc", res[267].exec("<cr>abc\x0d\ndef"), 546);
-assertToStringEquals("<crlf>abc", res[267].exec("<crlf>abc\ndef"), 547);
-assertToStringEquals("<crlf>abc", res[267].exec("<crlf>abc\x0ddef"), 548);
-assertToStringEquals("<crlf>abc", res[267].exec("<crlf>abc\x0d\ndef"), 549);
-assertNull(res[268].exec("abc\ndef", 550));
-assertNull(res[268].exec("abc\x0ddef", 551));
-assertNull(res[268].exec("abc\x0d\ndef", 552));
-assertToStringEquals("XY,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XY,Y", res[269].exec("XYO400"), 553);
-assertToStringEquals("aaaA5", res[278].exec("aaaA5"), 554);
-assertNull(res[278].exec("** Failers", 555));
-assertNull(res[278].exec("aaaa5", 556));
-assertToStringEquals("aaaA5", res[279].exec("aaaA5"), 557);
-assertToStringEquals("aaaa5", res[279].exec("aaaa5"), 558);
-assertToStringEquals("x", res[350].exec("xyCabcCxyz"), 559);
-assertToStringEquals("x", res[350].exec("xyCabcCxyz"), 560);
-assertToStringEquals("b", res[350].exec("bXaX"), 561);
-assertToStringEquals("b", res[350].exec("bXbX"), 562);
-assertToStringEquals("*", res[350].exec("** Failers"), 563);
-assertToStringEquals("aX", res[350].exec("aXaX"), 564);
-assertToStringEquals("aX", res[350].exec("aXbX"), 565);
-assertToStringEquals("x", res[350].exec("xx"), 566);
-assertToStringEquals("x", res[350].exec("xy"), 567);
-assertToStringEquals("y", res[350].exec("yy"), 568);
-assertToStringEquals("y", res[350].exec("yx"), 569);
-assertToStringEquals("x", res[350].exec("xx"), 570);
-assertToStringEquals("x", res[350].exec("xy"), 571);
-assertToStringEquals("y", res[350].exec("yy"), 572);
-assertToStringEquals("y", res[350].exec("yx"), 573);
-assertToStringEquals("b", res[350].exec("bxay"), 574);
-assertToStringEquals("b", res[350].exec("bxby"), 575);
-assertToStringEquals("*", res[350].exec("** Failers"), 576);
-assertToStringEquals("ax", res[350].exec("axby"), 577);
-assertToStringEquals("X", res[350].exec("XxXxxx"), 578);
-assertToStringEquals("X", res[350].exec("XxXyyx"), 579);
-assertToStringEquals("X", res[350].exec("XxXyxx"), 580);
-assertToStringEquals("*", res[350].exec("** Failers"), 581);
-assertToStringEquals("x", res[350].exec("x"), 582);
-assertToStringEquals("ab", res[350].exec("abcabc"), 583);
-assertToStringEquals("Xaaa,a", res[351].exec("Xaaa"), 584);
-assertToStringEquals("Xaba,a", res[351].exec("Xaba"), 585);
+assertEquals(null, res[255].exec("abcdefghijklAkB", 468));
+assertEquals(null, res[255].exec("abcdefghijklAkB", 469));
+assertEquals(null, res[255].exec("abcdefghijklAkB", 470));
+assertEquals(null, res[255].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 471));
+assertEquals(null, res[255].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 472));
+assertEquals(null, res[255].exec("(this(and)that", 473));
+assertEquals(null, res[255].exec("(this(and)that)", 474));
+assertEquals(null, res[255].exec("(this(and)that)stuff", 475));
+assertEquals(null, res[255].exec("(this(and)that", 476));
+assertEquals(null, res[255].exec("(this(and)that)", 477));
+assertEquals(null, res[255].exec("(this(and)that", 478));
+assertEquals(null, res[255].exec("(this(and)that)", 479));
+assertEquals(null, res[255].exec("(this(and)that", 480));
+assertEquals(null, res[255].exec("(this(and)that)", 481));
+assertEquals(null, res[255].exec("((this))", 482));
+assertEquals(null, res[255].exec("(this(and)that", 483));
+assertEquals(null, res[255].exec("(this(and)that)", 484));
+assertEquals(null, res[255].exec("(this)", 485));
+assertEquals(null, res[255].exec("((this))", 486));
+assertEquals("abc,b", res[256].exec("abc"), 487);
+assertEquals("abc,b", res[256].exec("abc"), 488);
+assertEquals(null, res[256].exec("a1bCA", 489));
+assertEquals(null, res[256].exec("a2bCA", 490));
+assertEquals(null, res[257].exec("a bc dCACBCC", 491));
+assertEquals(null, res[257].exec("aabc", 492));
+assertEquals(null, res[257].exec("bc", 493));
+assertEquals(null, res[257].exec("** Failers", 494));
+assertEquals(null, res[257].exec("abc", 495));
+assertEquals(null, res[257].exec("bXaX", 496));
+assertEquals(null, res[257].exec("bbXaaX", 497));
+assertEquals(null, res[257].exec("(b)\\Xa\\X", 498));
+assertEquals(null, res[257].exec("bXXaYYaY", 499));
+assertEquals(null, res[257].exec("bXYaXXaX", 500));
+assertEquals(null, res[257].exec("bXXaYYaY", 501));
+assertEquals("\x0b,\x0b", res[259].exec("\x0b,\x0b"), 502);
+assertEquals("\x0c,\x0d", res[259].exec("\x0c,\x0d"), 503);
+assertEquals("abc", res[260].exec("xyz\nabc"), 504);
+assertEquals("abc", res[260].exec("xyz\nabc<lf>"), 505);
+assertEquals("abc", res[260].exec("xyz\x0d\nabc<lf>"), 506);
+assertEquals("abc", res[260].exec("xyz\x0dabc<cr>"), 507);
+assertEquals("abc", res[260].exec("xyz\x0d\nabc<crlf>"), 508);
+assertEquals(null, res[260].exec("** Failers", 509));
+assertEquals("abc", res[260].exec("xyz\nabc<cr>"), 510);
+assertEquals("abc", res[260].exec("xyz\x0d\nabc<cr>"), 511);
+assertEquals("abc", res[260].exec("xyz\nabc<crlf>"), 512);
+assertEquals("abc", res[260].exec("xyz\x0dabc<crlf>"), 513);
+assertEquals("abc", res[260].exec("xyz\x0dabc<lf>"), 514);
+assertEquals("abc", res[261].exec("xyzabc"), 515);
+assertEquals("abc", res[261].exec("xyzabc\n"), 516);
+assertEquals("abc", res[261].exec("xyzabc\npqr"), 517);
+assertEquals("abc", res[261].exec("xyzabc\x0d<cr>"), 518);
+assertEquals("abc", res[261].exec("xyzabc\x0dpqr<cr>"), 519);
+assertEquals("abc", res[261].exec("xyzabc\x0d\n<crlf>"), 520);
+assertEquals("abc", res[261].exec("xyzabc\x0d\npqr<crlf>"), 521);
+assertEquals(null, res[261].exec("** Failers", 522));
+assertEquals("abc", res[261].exec("xyzabc\x0d"), 523);
+assertEquals("abc", res[261].exec("xyzabc\x0dpqr"), 524);
+assertEquals("abc", res[261].exec("xyzabc\x0d\n"), 525);
+assertEquals("abc", res[261].exec("xyzabc\x0d\npqr"), 526);
+assertEquals("abc", res[262].exec("xyz\x0dabcdef"), 527);
+assertEquals("abc", res[262].exec("xyz\nabcdef<lf>"), 528);
+assertEquals(null, res[262].exec("** Failers", 529));
+assertEquals("abc", res[262].exec("xyz\nabcdef"), 530);
+assertEquals("abc", res[263].exec("xyz\nabcdef"), 531);
+assertEquals("abc", res[263].exec("xyz\x0dabcdef<cr>"), 532);
+assertEquals(null, res[263].exec("** Failers", 533));
+assertEquals("abc", res[263].exec("xyz\x0dabcdef"), 534);
+assertEquals("abc", res[264].exec("xyz\x0d\nabcdef"), 535);
+assertEquals("abc", res[264].exec("xyz\x0dabcdef<cr>"), 536);
+assertEquals(null, res[264].exec("** Failers", 537));
+assertEquals("abc", res[264].exec("xyz\x0dabcdef"), 538);
+assertEquals("abc", res[266].exec("xyz\x0dabc<bad>"), 539);
+assertEquals("abc", res[266].exec("abc"), 540);
+assertEquals("abc", res[267].exec("abc\ndef"), 541);
+assertEquals("abc", res[267].exec("abc\x0ddef"), 542);
+assertEquals("abc", res[267].exec("abc\x0d\ndef"), 543);
+assertEquals("<cr>abc", res[267].exec("<cr>abc\ndef"), 544);
+assertEquals("<cr>abc", res[267].exec("<cr>abc\x0ddef"), 545);
+assertEquals("<cr>abc", res[267].exec("<cr>abc\x0d\ndef"), 546);
+assertEquals("<crlf>abc", res[267].exec("<crlf>abc\ndef"), 547);
+assertEquals("<crlf>abc", res[267].exec("<crlf>abc\x0ddef"), 548);
+assertEquals("<crlf>abc", res[267].exec("<crlf>abc\x0d\ndef"), 549);
+assertEquals(null, res[268].exec("abc\ndef", 550));
+assertEquals(null, res[268].exec("abc\x0ddef", 551));
+assertEquals(null, res[268].exec("abc\x0d\ndef", 552));
+assertEquals("XY,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XY,Y", res[269].exec("XYO400"), 553);
+assertEquals("aaaA5", res[278].exec("aaaA5"), 554);
+assertEquals(null, res[278].exec("** Failers", 555));
+assertEquals(null, res[278].exec("aaaa5", 556));
+assertEquals("aaaA5", res[279].exec("aaaA5"), 557);
+assertEquals("aaaa5", res[279].exec("aaaa5"), 558);
+assertEquals("x", res[350].exec("xyCabcCxyz"), 559);
+assertEquals("x", res[350].exec("xyCabcCxyz"), 560);
+assertEquals("b", res[350].exec("bXaX"), 561);
+assertEquals("b", res[350].exec("bXbX"), 562);
+assertEquals("*", res[350].exec("** Failers"), 563);
+assertEquals("aX", res[350].exec("aXaX"), 564);
+assertEquals("aX", res[350].exec("aXbX"), 565);
+assertEquals("x", res[350].exec("xx"), 566);
+assertEquals("x", res[350].exec("xy"), 567);
+assertEquals("y", res[350].exec("yy"), 568);
+assertEquals("y", res[350].exec("yx"), 569);
+assertEquals("x", res[350].exec("xx"), 570);
+assertEquals("x", res[350].exec("xy"), 571);
+assertEquals("y", res[350].exec("yy"), 572);
+assertEquals("y", res[350].exec("yx"), 573);
+assertEquals("b", res[350].exec("bxay"), 574);
+assertEquals("b", res[350].exec("bxby"), 575);
+assertEquals("*", res[350].exec("** Failers"), 576);
+assertEquals("ax", res[350].exec("axby"), 577);
+assertEquals("X", res[350].exec("XxXxxx"), 578);
+assertEquals("X", res[350].exec("XxXyyx"), 579);
+assertEquals("X", res[350].exec("XxXyxx"), 580);
+assertEquals("*", res[350].exec("** Failers"), 581);
+assertEquals("x", res[350].exec("x"), 582);
+assertEquals("ab", res[350].exec("abcabc"), 583);
+assertEquals("Xaaa,a", res[351].exec("Xaaa"), 584);
+assertEquals("Xaba,a", res[351].exec("Xaba"), 585);
 assertThrows("var re = /^[a-\\Q\\E]/;", 586);
-assertNull(res[353].exec("(xy)x", 587));
-assertNull(res[353].exec("1221", 588));
-assertNull(res[353].exec("Satan, oscillate my metallic sonatas!", 589));
-assertNull(res[353].exec("A man, a plan, a canal: Panama!", 590));
-assertNull(res[353].exec("Able was I ere I saw Elba.", 591));
-assertNull(res[353].exec("*** Failers", 592));
-assertNull(res[353].exec("The quick brown fox", 593));
-assertToStringEquals("abcd:,abcd", res[354].exec("abcd:"), 594);
-assertToStringEquals("abcd:,abcd", res[354].exec("abcd:"), 595);
-assertToStringEquals("a:,a", res[354].exec("a:aaxyz"), 596);
-assertToStringEquals("ab:,ab", res[354].exec("ab:ababxyz"), 597);
-assertNull(res[354].exec("** Failers", 598));
-assertToStringEquals("a:,a", res[354].exec("a:axyz"), 599);
-assertToStringEquals("ab:,ab", res[354].exec("ab:abxyz"), 600);
-assertNull(res[354].exec("abd", 601));
-assertNull(res[354].exec("ce", 602));
-assertNull(res[354].exec("abcabc1Xabc2XabcXabcabc", 603));
-assertNull(res[354].exec("abcabc1Xabc2XabcXabcabc", 604));
-assertNull(res[354].exec("abcabc1Xabc2XabcXabcabc", 605));
-assertNull(res[354].exec("abcd", 606));
-assertNull(res[354].exec("metcalfe 33", 607));
-assertNull(res[356].exec("a\x0db", 608));
-assertNull(res[356].exec("a\nb<cr>", 609));
-assertToStringEquals("a\x85b", res[356].exec("a\x85b<anycrlf> "), 610);
-assertNull(res[356].exec("** Failers", 611));
-assertNull(res[356].exec("a\nb", 612));
-assertNull(res[356].exec("a\nb<any>", 613));
-assertNull(res[356].exec("a\x0db<cr>", 614));
-assertNull(res[356].exec("a\x0db<any>", 615));
-assertToStringEquals("a\x85b", res[356].exec("a\x85b<any> "), 616);
-assertNull(res[356].exec("a\x0db<anycrlf>", 617));
-assertToStringEquals("abc1", res[357].exec("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 \x85abc7 JUNK"), 618);
-assertToStringEquals("abc1", res[358].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc7 abc9"), 619);
-assertNull(res[361].exec("a\nb", 620));
-assertNull(res[361].exec("a\x0db", 621));
-assertNull(res[361].exec("a\x0d\nb", 622));
-assertNull(res[361].exec("a\x0bb", 623));
-assertNull(res[361].exec("a\x0cb", 624));
-assertNull(res[361].exec("a\x85b", 625));
-assertNull(res[361].exec("** Failers", 626));
-assertNull(res[361].exec("a\n\x0db", 627));
-assertToStringEquals("ab", res[362].exec("ab"), 628);
-assertNull(res[362].exec("a\nb", 629));
-assertNull(res[362].exec("a\x0db", 630));
-assertNull(res[362].exec("a\x0d\nb", 631));
-assertNull(res[362].exec("a\x0bb", 632));
-assertNull(res[362].exec("a\x0cb", 633));
-assertNull(res[362].exec("a\x85b", 634));
-assertNull(res[362].exec("a\n\x0db", 635));
-assertNull(res[362].exec("a\n\x0d\x85\x0cb", 636));
-assertNull(res[363].exec("a\nb", 637));
-assertNull(res[363].exec("a\x0db", 638));
-assertNull(res[363].exec("a\x0d\nb", 639));
-assertNull(res[363].exec("a\x0bb", 640));
-assertNull(res[363].exec("a\x0cb", 641));
-assertNull(res[363].exec("a\x85b", 642));
-assertNull(res[363].exec("a\n\x0db", 643));
-assertNull(res[363].exec("a\n\x0d\x85\x0cb", 644));
-assertNull(res[363].exec("** Failers", 645));
-assertNull(res[363].exec("ab", 646));
-assertNull(res[364].exec("a\nb", 647));
-assertNull(res[364].exec("a\n\x0db", 648));
-assertNull(res[364].exec("a\n\x0d\x85b", 649));
-assertNull(res[364].exec("a\x0d\n\x0d\nb", 650));
-assertNull(res[364].exec("a\x0d\n\x0d\n\x0d\nb", 651));
-assertNull(res[364].exec("a\n\x0d\n\x0db", 652));
-assertNull(res[364].exec("a\n\n\x0d\nb", 653));
-assertNull(res[364].exec("** Failers", 654));
-assertNull(res[364].exec("a\n\n\n\x0db", 655));
-assertNull(res[364].exec("a\x0d", 656));
-assertToStringEquals("aRb", res[365].exec("aRb"), 657);
-assertNull(res[365].exec("** Failers", 658));
-assertNull(res[365].exec("a\nb", 659));
-assertNull(res[365].exec("abcPXP123", 660));
-assertNull(res[365].exec("abcPXP123", 661));
-assertNull(res[365].exec("1.2.3.4", 662));
-assertNull(res[365].exec("131.111.10.206", 663));
-assertNull(res[365].exec("10.0.0.0", 664));
-assertNull(res[365].exec("** Failers", 665));
-assertNull(res[365].exec("10.6", 666));
-assertNull(res[365].exec("455.3.4.5", 667));
-assertNull(res[365].exec("1.2.3.4", 668));
-assertNull(res[365].exec("131.111.10.206", 669));
-assertNull(res[365].exec("10.0.0.0", 670));
-assertNull(res[365].exec("** Failers", 671));
-assertNull(res[365].exec("10.6", 672));
-assertNull(res[365].exec("455.3.4.5", 673));
-assertNull(res[365].exec("123axbaxbaxbx456", 674));
-assertNull(res[365].exec("123axbaxbaxb456", 675));
-assertNull(res[365].exec("123axbaxbaxbx456", 676));
-assertNull(res[365].exec("123axbaxbaxbx456", 677));
-assertNull(res[365].exec("123axbaxbaxbx456", 678));
-assertNull(res[366].exec("ababababbbabZXXXX", 679));
-assertNull(res[372].exec("a\x0db", 680));
-assertNull(res[372].exec("*** Failers", 681));
-assertNull(res[372].exec("a\nb", 682));
-assertToStringEquals("afoo", res[373].exec("afoo"), 683);
-assertNull(res[373].exec("** Failers", 684));
-assertNull(res[373].exec("\x0d\nfoo", 685));
-assertNull(res[373].exec("\nfoo", 686));
-assertToStringEquals("afoo", res[374].exec("afoo"), 687);
-assertNull(res[374].exec("\nfoo", 688));
-assertNull(res[374].exec("** Failers", 689));
-assertNull(res[374].exec("\x0d\nfoo", 690));
-assertToStringEquals("afoo", res[375].exec("afoo"), 691);
-assertNull(res[375].exec("** Failers", 692));
-assertNull(res[375].exec("\nfoo", 693));
-assertNull(res[375].exec("\x0d\nfoo", 694));
-assertToStringEquals("afoo", res[376].exec("afoo"), 695);
-assertNull(res[376].exec("\x0d\nfoo", 696));
-assertNull(res[376].exec("\nfoo", 697));
-assertToStringEquals("", res[377].exec("abc\x0d\x0dxyz"), 698);
-assertToStringEquals("", res[377].exec("abc\n\x0dxyz  "), 699);
-assertNull(res[377].exec("** Failers ", 700));
-assertToStringEquals("", res[377].exec("abc\x0d\nxyz"), 701);
-assertToStringEquals("", res[377].exec("abc\x0d\n\x0d\n"), 702);
-assertToStringEquals("", res[377].exec("abc\x0d\n\x0d\n"), 703);
-assertToStringEquals("", res[377].exec("abc\x0d\n\x0d\n"), 704);
-assertToStringEquals("abc1", res[378].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc9"), 705);
-assertToStringEquals("X", res[379].exec("XABC"), 706);
-assertNull(res[379].exec("** Failers ", 707));
-assertToStringEquals("X", res[379].exec("XABCB"), 708);
+assertEquals(null, res[353].exec("(xy)x", 587));
+assertEquals(null, res[353].exec("1221", 588));
+assertEquals(null, res[353].exec("Satan, oscillate my metallic sonatas!", 589));
+assertEquals(null, res[353].exec("A man, a plan, a canal: Panama!", 590));
+assertEquals(null, res[353].exec("Able was I ere I saw Elba.", 591));
+assertEquals(null, res[353].exec("*** Failers", 592));
+assertEquals(null, res[353].exec("The quick brown fox", 593));
+assertEquals("abcd:,abcd", res[354].exec("abcd:"), 594);
+assertEquals("abcd:,abcd", res[354].exec("abcd:"), 595);
+assertEquals("a:,a", res[354].exec("a:aaxyz"), 596);
+assertEquals("ab:,ab", res[354].exec("ab:ababxyz"), 597);
+assertEquals(null, res[354].exec("** Failers", 598));
+assertEquals("a:,a", res[354].exec("a:axyz"), 599);
+assertEquals("ab:,ab", res[354].exec("ab:abxyz"), 600);
+assertEquals(null, res[354].exec("abd", 601));
+assertEquals(null, res[354].exec("ce", 602));
+assertEquals(null, res[354].exec("abcabc1Xabc2XabcXabcabc", 603));
+assertEquals(null, res[354].exec("abcabc1Xabc2XabcXabcabc", 604));
+assertEquals(null, res[354].exec("abcabc1Xabc2XabcXabcabc", 605));
+assertEquals(null, res[354].exec("abcd", 606));
+assertEquals(null, res[354].exec("metcalfe 33", 607));
+assertEquals(null, res[356].exec("a\x0db", 608));
+assertEquals(null, res[356].exec("a\nb<cr>", 609));
+assertEquals("a\x85b", res[356].exec("a\x85b<anycrlf> "), 610);
+assertEquals(null, res[356].exec("** Failers", 611));
+assertEquals(null, res[356].exec("a\nb", 612));
+assertEquals(null, res[356].exec("a\nb<any>", 613));
+assertEquals(null, res[356].exec("a\x0db<cr>", 614));
+assertEquals(null, res[356].exec("a\x0db<any>", 615));
+assertEquals("a\x85b", res[356].exec("a\x85b<any> "), 616);
+assertEquals(null, res[356].exec("a\x0db<anycrlf>", 617));
+assertEquals("abc1", res[357].exec("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 \x85abc7 JUNK"), 618);
+assertEquals("abc1", res[358].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc7 abc9"), 619);
+assertEquals(null, res[361].exec("a\nb", 620));
+assertEquals(null, res[361].exec("a\x0db", 621));
+assertEquals(null, res[361].exec("a\x0d\nb", 622));
+assertEquals(null, res[361].exec("a\x0bb", 623));
+assertEquals(null, res[361].exec("a\x0cb", 624));
+assertEquals(null, res[361].exec("a\x85b", 625));
+assertEquals(null, res[361].exec("** Failers", 626));
+assertEquals(null, res[361].exec("a\n\x0db", 627));
+assertEquals("ab", res[362].exec("ab"), 628);
+assertEquals(null, res[362].exec("a\nb", 629));
+assertEquals(null, res[362].exec("a\x0db", 630));
+assertEquals(null, res[362].exec("a\x0d\nb", 631));
+assertEquals(null, res[362].exec("a\x0bb", 632));
+assertEquals(null, res[362].exec("a\x0cb", 633));
+assertEquals(null, res[362].exec("a\x85b", 634));
+assertEquals(null, res[362].exec("a\n\x0db", 635));
+assertEquals(null, res[362].exec("a\n\x0d\x85\x0cb", 636));
+assertEquals(null, res[363].exec("a\nb", 637));
+assertEquals(null, res[363].exec("a\x0db", 638));
+assertEquals(null, res[363].exec("a\x0d\nb", 639));
+assertEquals(null, res[363].exec("a\x0bb", 640));
+assertEquals(null, res[363].exec("a\x0cb", 641));
+assertEquals(null, res[363].exec("a\x85b", 642));
+assertEquals(null, res[363].exec("a\n\x0db", 643));
+assertEquals(null, res[363].exec("a\n\x0d\x85\x0cb", 644));
+assertEquals(null, res[363].exec("** Failers", 645));
+assertEquals(null, res[363].exec("ab", 646));
+assertEquals(null, res[364].exec("a\nb", 647));
+assertEquals(null, res[364].exec("a\n\x0db", 648));
+assertEquals(null, res[364].exec("a\n\x0d\x85b", 649));
+assertEquals(null, res[364].exec("a\x0d\n\x0d\nb", 650));
+assertEquals(null, res[364].exec("a\x0d\n\x0d\n\x0d\nb", 651));
+assertEquals(null, res[364].exec("a\n\x0d\n\x0db", 652));
+assertEquals(null, res[364].exec("a\n\n\x0d\nb", 653));
+assertEquals(null, res[364].exec("** Failers", 654));
+assertEquals(null, res[364].exec("a\n\n\n\x0db", 655));
+assertEquals(null, res[364].exec("a\x0d", 656));
+assertEquals("aRb", res[365].exec("aRb"), 657);
+assertEquals(null, res[365].exec("** Failers", 658));
+assertEquals(null, res[365].exec("a\nb", 659));
+assertEquals(null, res[365].exec("abcPXP123", 660));
+assertEquals(null, res[365].exec("abcPXP123", 661));
+assertEquals(null, res[365].exec("1.2.3.4", 662));
+assertEquals(null, res[365].exec("131.111.10.206", 663));
+assertEquals(null, res[365].exec("10.0.0.0", 664));
+assertEquals(null, res[365].exec("** Failers", 665));
+assertEquals(null, res[365].exec("10.6", 666));
+assertEquals(null, res[365].exec("455.3.4.5", 667));
+assertEquals(null, res[365].exec("1.2.3.4", 668));
+assertEquals(null, res[365].exec("131.111.10.206", 669));
+assertEquals(null, res[365].exec("10.0.0.0", 670));
+assertEquals(null, res[365].exec("** Failers", 671));
+assertEquals(null, res[365].exec("10.6", 672));
+assertEquals(null, res[365].exec("455.3.4.5", 673));
+assertEquals(null, res[365].exec("123axbaxbaxbx456", 674));
+assertEquals(null, res[365].exec("123axbaxbaxb456", 675));
+assertEquals(null, res[365].exec("123axbaxbaxbx456", 676));
+assertEquals(null, res[365].exec("123axbaxbaxbx456", 677));
+assertEquals(null, res[365].exec("123axbaxbaxbx456", 678));
+assertEquals(null, res[366].exec("ababababbbabZXXXX", 679));
+assertEquals(null, res[372].exec("a\x0db", 680));
+assertEquals(null, res[372].exec("*** Failers", 681));
+assertEquals(null, res[372].exec("a\nb", 682));
+assertEquals("afoo", res[373].exec("afoo"), 683);
+assertEquals(null, res[373].exec("** Failers", 684));
+assertEquals(null, res[373].exec("\x0d\nfoo", 685));
+assertEquals(null, res[373].exec("\nfoo", 686));
+assertEquals("afoo", res[374].exec("afoo"), 687);
+assertEquals(null, res[374].exec("\nfoo", 688));
+assertEquals(null, res[374].exec("** Failers", 689));
+assertEquals(null, res[374].exec("\x0d\nfoo", 690));
+assertEquals("afoo", res[375].exec("afoo"), 691);
+assertEquals(null, res[375].exec("** Failers", 692));
+assertEquals(null, res[375].exec("\nfoo", 693));
+assertEquals(null, res[375].exec("\x0d\nfoo", 694));
+assertEquals("afoo", res[376].exec("afoo"), 695);
+assertEquals(null, res[376].exec("\x0d\nfoo", 696));
+assertEquals(null, res[376].exec("\nfoo", 697));
+assertEquals("", res[377].exec("abc\x0d\x0dxyz"), 698);
+assertEquals("", res[377].exec("abc\n\x0dxyz  "), 699);
+assertEquals(null, res[377].exec("** Failers ", 700));
+assertEquals("", res[377].exec("abc\x0d\nxyz"), 701);
+assertEquals("", res[377].exec("abc\x0d\n\x0d\n"), 702);
+assertEquals("", res[377].exec("abc\x0d\n\x0d\n"), 703);
+assertEquals("", res[377].exec("abc\x0d\n\x0d\n"), 704);
+assertEquals("abc1", res[378].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc9"), 705);
+assertEquals("X", res[379].exec("XABC"), 706);
+assertEquals(null, res[379].exec("** Failers ", 707));
+assertEquals("X", res[379].exec("XABCB"), 708);
 assertThrows("var re = /(ab|c)(?-1)/;", 709);
-assertNull(res[379].exec("abc", 710));
-assertNull(res[379].exec("xyabcabc", 711));
-assertNull(res[379].exec("** Failers", 712));
-assertNull(res[379].exec("xyabc  ", 713));
+assertEquals(null, res[379].exec("abc", 710));
+assertEquals(null, res[379].exec("xyabcabc", 711));
+assertEquals(null, res[379].exec("** Failers", 712));
+assertEquals(null, res[379].exec("xyabc  ", 713));
 assertThrows("var re = /x(?-0)y/;", 714);
 assertThrows("var re = /x(?-1)y/;", 715);
-assertNull(res[379].exec("abcX", 716));
-assertNull(res[379].exec("Y", 717));
-assertNull(res[379].exec("** Failers", 718));
-assertNull(res[379].exec("abcY   ", 719));
-assertNull(res[379].exec("YabcXabc", 720));
-assertNull(res[379].exec("YabcXabcXabc", 721));
-assertNull(res[379].exec("** Failers", 722));
-assertToStringEquals("X", res[379].exec("XabcXabc  "), 723);
-assertNull(res[379].exec("Y!", 724));
-assertNull(res[380].exec("foobar", 725));
-assertNull(res[381].exec("foobar", 726));
-assertToStringEquals("foobaz,foo,baz", res[381].exec("foobaz "), 727);
-assertNull(res[382].exec("foobarbaz", 728));
-assertNull(res[382].exec("tom-tom", 729));
-assertNull(res[382].exec("bon-bon ", 730));
-assertNull(res[382].exec("** Failers", 731));
-assertNull(res[382].exec("tom-bon  ", 732));
-assertNull(res[382].exec("tom-tom", 733));
-assertNull(res[382].exec("bon-bon ", 734));
+assertEquals(null, res[379].exec("abcX", 716));
+assertEquals(null, res[379].exec("Y", 717));
+assertEquals(null, res[379].exec("** Failers", 718));
+assertEquals(null, res[379].exec("abcY   ", 719));
+assertEquals(null, res[379].exec("YabcXabc", 720));
+assertEquals(null, res[379].exec("YabcXabcXabc", 721));
+assertEquals(null, res[379].exec("** Failers", 722));
+assertEquals("X", res[379].exec("XabcXabc  "), 723);
+assertEquals(null, res[379].exec("Y!", 724));
+assertEquals(null, res[380].exec("foobar", 725));
+assertEquals(null, res[381].exec("foobar", 726));
+assertEquals("foobaz,foo,baz", res[381].exec("foobaz "), 727);
+assertEquals(null, res[382].exec("foobarbaz", 728));
+assertEquals(null, res[382].exec("tom-tom", 729));
+assertEquals(null, res[382].exec("bon-bon ", 730));
+assertEquals(null, res[382].exec("** Failers", 731));
+assertEquals(null, res[382].exec("tom-bon  ", 732));
+assertEquals(null, res[382].exec("tom-tom", 733));
+assertEquals(null, res[382].exec("bon-bon ", 734));
 assertThrows("var re = /(?|(abc)|(xyz))/;", 735);
 assertThrows("var re = /(x)(?|(abc)|(xyz))(x)/;", 736);
-assertNull(res[383].exec("xabcx", 737));
-assertNull(res[383].exec("xxyzx ", 738));
+assertEquals(null, res[383].exec("xabcx", 737));
+assertEquals(null, res[383].exec("xxyzx ", 738));
 assertThrows("var re = /(x)(?|(abc)(pqr)|(xyz))(x)/;", 739);
-assertNull(res[383].exec("xabcpqrx", 740));
-assertNull(res[383].exec("xxyzx ", 741));
+assertEquals(null, res[383].exec("xabcpqrx", 740));
+assertEquals(null, res[383].exec("xxyzx ", 741));
 assertThrows("var re = /(?|(abc)|(xyz))\\1/;", 742);
-assertNull(res[383].exec("abcabc", 743));
-assertNull(res[383].exec("xyzxyz ", 744));
-assertNull(res[383].exec("** Failers", 745));
-assertNull(res[383].exec("abcxyz", 746));
-assertNull(res[383].exec("xyzabc   ", 747));
-assertNull(res[383].exec("abcabc", 748));
-assertNull(res[383].exec("xyzabc ", 749));
-assertNull(res[383].exec("** Failers ", 750));
-assertNull(res[383].exec("xyzxyz ", 751));
-assertNull(res[384].exec("X X\n", 752));
-assertNull(res[384].exec("X\x09X\x0b", 753));
-assertNull(res[384].exec("** Failers", 754));
-assertNull(res[384].exec("\xa0 X\n   ", 755));
-assertNull(res[385].exec("\x09 \xa0X\n\x0b\x0c\x0d\n", 756));
-assertNull(res[385].exec("\x09 \xa0\n\x0b\x0c\x0d\n", 757));
-assertNull(res[385].exec("\x09 \xa0\n\x0b\x0c", 758));
-assertNull(res[385].exec("** Failers ", 759));
-assertNull(res[385].exec("\x09 \xa0\n\x0b", 760));
-assertNull(res[385].exec(" ", 761));
-assertNull(res[386].exec("XY  ABCDE", 762));
-assertNull(res[386].exec("XY  PQR ST ", 763));
-assertNull(res[387].exec("XY  AB    PQRS", 764));
-assertNull(res[388].exec(">XNNNYZ", 765));
-assertNull(res[388].exec(">  X NYQZ", 766));
-assertNull(res[388].exec("** Failers", 767));
-assertNull(res[388].exec(">XYZ   ", 768));
-assertNull(res[388].exec(">  X NY Z", 769));
-assertNull(res[389].exec(">XY\nZ\nA\x0bNN\x0c", 770));
-assertNull(res[389].exec(">\n\x0dX\nY\n\x0bZZZ\nAAA\x0bNNN\x0c", 771));
-assertNull(res[390].exec(">\x09<", 772));
-assertNull(res[391].exec(">\x09 \xa0<", 773));
-assertNull(res[396].exec("** Failers", 774));
-assertNull(res[396].exec("XXXX", 775));
-assertNull(res[397].exec("XXXX Y ", 776));
-assertNull(res[419].exec("aaaaaa", 777));
-assertNull(res[419].exec("aaabccc", 778));
-assertNull(res[419].exec("aaabccc", 779));
-assertNull(res[419].exec("aaabccc", 780));
-assertNull(res[419].exec("aaabcccaaabccc", 781));
-assertNull(res[419].exec("aaaxxxxxx", 782));
-assertNull(res[419].exec("aaa++++++ ", 783));
-assertNull(res[419].exec("bbbxxxxx", 784));
-assertNull(res[419].exec("bbb+++++ ", 785));
-assertNull(res[419].exec("cccxxxx", 786));
-assertNull(res[419].exec("ccc++++ ", 787));
-assertNull(res[419].exec("dddddddd   ", 788));
-assertNull(res[419].exec("aaaxxxxxx", 789));
-assertNull(res[419].exec("aaa++++++ ", 790));
-assertNull(res[419].exec("bbbxxxxx", 791));
-assertNull(res[419].exec("bbb+++++ ", 792));
-assertNull(res[419].exec("cccxxxx", 793));
-assertNull(res[419].exec("ccc++++ ", 794));
-assertNull(res[419].exec("dddddddd   ", 795));
-assertNull(res[419].exec("aaabccc", 796));
-assertNull(res[419].exec("ABX", 797));
-assertNull(res[419].exec("AADE", 798));
-assertNull(res[419].exec("ACDE", 799));
-assertNull(res[419].exec("** Failers", 800));
-assertNull(res[419].exec("AD ", 801));
-assertNull(res[419].exec("    ", 802));
-assertNull(res[419].exec("aaaaaa", 803));
-assertNull(res[419].exec("aaabccc", 804));
-assertNull(res[419].exec("aaabccc", 805));
-assertNull(res[419].exec("aaabccc", 806));
-assertNull(res[419].exec("aaabcccaaabccc", 807));
-assertNull(res[419].exec("aaabccc", 808));
-assertNull(res[422].exec("\x0d\nA", 809));
-assertToStringEquals("\nA", res[423].exec("\x0d\nA "), 810);
-assertToStringEquals("\nA", res[424].exec("\x0d\nA "), 811);
-assertToStringEquals("\nA,\n", res[425].exec("\x0d\nA "), 812);
-assertNull(res[425].exec("a\nb", 813));
-assertNull(res[425].exec("** Failers", 814));
-assertNull(res[425].exec("a\x0db  ", 815));
-assertNull(res[425].exec("a\nb", 816));
-assertNull(res[425].exec("** Failers", 817));
-assertNull(res[425].exec("a\x0db  ", 818));
-assertNull(res[425].exec("a\x0db", 819));
-assertNull(res[425].exec("** Failers", 820));
-assertNull(res[425].exec("a\nb  ", 821));
-assertNull(res[425].exec("a\x0db", 822));
-assertNull(res[425].exec("a\nb  ", 823));
-assertNull(res[425].exec("** Failers", 824));
-assertNull(res[425].exec("a\x0d\nb  ", 825));
-assertNull(res[425].exec("** Failers", 826));
-assertNull(res[425].exec("a\x0db", 827));
-assertNull(res[425].exec("a\nb  ", 828));
-assertNull(res[425].exec("a\x0d\nb  ", 829));
-assertNull(res[425].exec("** Failers", 830));
-assertNull(res[425].exec("a\x0db", 831));
-assertNull(res[425].exec("a\nb  ", 832));
-assertNull(res[425].exec("a\x0d\nb  ", 833));
-assertNull(res[425].exec("a\x85b ", 834));
-assertNull(res[426].exec("a\x0db", 835));
-assertNull(res[426].exec("a\nb", 836));
-assertNull(res[426].exec("a\x0d\nb", 837));
-assertNull(res[426].exec("** Failers", 838));
-assertNull(res[426].exec("a\x85b", 839));
-assertNull(res[426].exec("a\x0bb     ", 840));
-assertNull(res[427].exec("a\x0db", 841));
-assertNull(res[427].exec("a\nb", 842));
-assertNull(res[427].exec("a\x0d\nb", 843));
-assertNull(res[427].exec("a\x85b", 844));
-assertNull(res[427].exec("a\x0bb     ", 845));
-assertNull(res[427].exec("** Failers ", 846));
-assertNull(res[427].exec("a\x85b<bsr_anycrlf>", 847));
-assertNull(res[427].exec("a\x0bb<bsr_anycrlf>", 848));
-assertNull(res[428].exec("a\x0db", 849));
-assertNull(res[428].exec("a\nb", 850));
-assertNull(res[428].exec("a\x0d\nb", 851));
-assertNull(res[428].exec("** Failers", 852));
-assertNull(res[428].exec("a\x85b", 853));
-assertNull(res[428].exec("a\x0bb     ", 854));
-assertNull(res[429].exec("a\x0db", 855));
-assertNull(res[429].exec("a\nb", 856));
-assertNull(res[429].exec("a\x0d\nb", 857));
-assertNull(res[429].exec("a\x85b", 858));
-assertNull(res[429].exec("a\x0bb     ", 859));
-assertNull(res[429].exec("** Failers ", 860));
-assertNull(res[429].exec("a\x85b<bsr_anycrlf>", 861));
-assertNull(res[429].exec("a\x0bb<bsr_anycrlf>", 862));
-assertNull(res[430].exec("a\x0d\n\nb", 863));
-assertNull(res[430].exec("a\n\x0d\x0db", 864));
-assertNull(res[430].exec("a\x0d\n\x0d\n\x0d\n\x0d\nb", 865));
-assertNull(res[430].exec("** Failers", 866));
-assertNull(res[430].exec("a\x8585b", 867));
-assertNull(res[430].exec("a\x0b\x00bb     ", 868));
-assertNull(res[431].exec("a\x0d\x0db", 869));
-assertNull(res[431].exec("a\n\n\nb", 870));
-assertNull(res[431].exec("a\x0d\n\n\x0d\x0db", 871));
-assertNull(res[431].exec("a\x8585b", 872));
-assertNull(res[431].exec("a\x0b\x00bb     ", 873));
-assertNull(res[431].exec("** Failers ", 874));
-assertNull(res[431].exec("a\x0d\x0d\x0d\x0d\x0db ", 875));
-assertNull(res[431].exec("a\x8585b<bsr_anycrlf>", 876));
-assertNull(res[431].exec("a\x0b\x00bb<bsr_anycrlf>", 877));
-assertNull(res[431].exec("a\nb", 878));
-assertNull(res[431].exec("a\x0db ", 879));
-assertNull(res[431].exec("a\x85b", 880));
-assertNull(res[431].exec("a\nb", 881));
-assertNull(res[431].exec("a\x0db ", 882));
-assertNull(res[431].exec("a\x85b", 883));
+assertEquals(null, res[383].exec("abcabc", 743));
+assertEquals(null, res[383].exec("xyzxyz ", 744));
+assertEquals(null, res[383].exec("** Failers", 745));
+assertEquals(null, res[383].exec("abcxyz", 746));
+assertEquals(null, res[383].exec("xyzabc   ", 747));
+assertEquals(null, res[383].exec("abcabc", 748));
+assertEquals(null, res[383].exec("xyzabc ", 749));
+assertEquals(null, res[383].exec("** Failers ", 750));
+assertEquals(null, res[383].exec("xyzxyz ", 751));
+assertEquals(null, res[384].exec("X X\n", 752));
+assertEquals(null, res[384].exec("X\x09X\x0b", 753));
+assertEquals(null, res[384].exec("** Failers", 754));
+assertEquals(null, res[384].exec("\xa0 X\n   ", 755));
+assertEquals(null, res[385].exec("\x09 \xa0X\n\x0b\x0c\x0d\n", 756));
+assertEquals(null, res[385].exec("\x09 \xa0\n\x0b\x0c\x0d\n", 757));
+assertEquals(null, res[385].exec("\x09 \xa0\n\x0b\x0c", 758));
+assertEquals(null, res[385].exec("** Failers ", 759));
+assertEquals(null, res[385].exec("\x09 \xa0\n\x0b", 760));
+assertEquals(null, res[385].exec(" ", 761));
+assertEquals(null, res[386].exec("XY  ABCDE", 762));
+assertEquals(null, res[386].exec("XY  PQR ST ", 763));
+assertEquals(null, res[387].exec("XY  AB    PQRS", 764));
+assertEquals(null, res[388].exec(">XNNNYZ", 765));
+assertEquals(null, res[388].exec(">  X NYQZ", 766));
+assertEquals(null, res[388].exec("** Failers", 767));
+assertEquals(null, res[388].exec(">XYZ   ", 768));
+assertEquals(null, res[388].exec(">  X NY Z", 769));
+assertEquals(null, res[389].exec(">XY\nZ\nA\x0bNN\x0c", 770));
+assertEquals(null, res[389].exec(">\n\x0dX\nY\n\x0bZZZ\nAAA\x0bNNN\x0c", 771));
+assertEquals(null, res[390].exec(">\x09<", 772));
+assertEquals(null, res[391].exec(">\x09 \xa0<", 773));
+assertEquals(null, res[396].exec("** Failers", 774));
+assertEquals(null, res[396].exec("XXXX", 775));
+assertEquals(null, res[397].exec("XXXX Y ", 776));
+assertEquals(null, res[419].exec("aaaaaa", 777));
+assertEquals(null, res[419].exec("aaabccc", 778));
+assertEquals(null, res[419].exec("aaabccc", 779));
+assertEquals(null, res[419].exec("aaabccc", 780));
+assertEquals(null, res[419].exec("aaabcccaaabccc", 781));
+assertEquals(null, res[419].exec("aaaxxxxxx", 782));
+assertEquals(null, res[419].exec("aaa++++++ ", 783));
+assertEquals(null, res[419].exec("bbbxxxxx", 784));
+assertEquals(null, res[419].exec("bbb+++++ ", 785));
+assertEquals(null, res[419].exec("cccxxxx", 786));
+assertEquals(null, res[419].exec("ccc++++ ", 787));
+assertEquals(null, res[419].exec("dddddddd   ", 788));
+assertEquals(null, res[419].exec("aaaxxxxxx", 789));
+assertEquals(null, res[419].exec("aaa++++++ ", 790));
+assertEquals(null, res[419].exec("bbbxxxxx", 791));
+assertEquals(null, res[419].exec("bbb+++++ ", 792));
+assertEquals(null, res[419].exec("cccxxxx", 793));
+assertEquals(null, res[419].exec("ccc++++ ", 794));
+assertEquals(null, res[419].exec("dddddddd   ", 795));
+assertEquals(null, res[419].exec("aaabccc", 796));
+assertEquals(null, res[419].exec("ABX", 797));
+assertEquals(null, res[419].exec("AADE", 798));
+assertEquals(null, res[419].exec("ACDE", 799));
+assertEquals(null, res[419].exec("** Failers", 800));
+assertEquals(null, res[419].exec("AD ", 801));
+assertEquals(null, res[419].exec("    ", 802));
+assertEquals(null, res[419].exec("aaaaaa", 803));
+assertEquals(null, res[419].exec("aaabccc", 804));
+assertEquals(null, res[419].exec("aaabccc", 805));
+assertEquals(null, res[419].exec("aaabccc", 806));
+assertEquals(null, res[419].exec("aaabcccaaabccc", 807));
+assertEquals(null, res[419].exec("aaabccc", 808));
+assertEquals(null, res[422].exec("\x0d\nA", 809));
+assertEquals("\nA", res[423].exec("\x0d\nA "), 810);
+assertEquals("\nA", res[424].exec("\x0d\nA "), 811);
+assertEquals("\nA,\n", res[425].exec("\x0d\nA "), 812);
+assertEquals(null, res[425].exec("a\nb", 813));
+assertEquals(null, res[425].exec("** Failers", 814));
+assertEquals(null, res[425].exec("a\x0db  ", 815));
+assertEquals(null, res[425].exec("a\nb", 816));
+assertEquals(null, res[425].exec("** Failers", 817));
+assertEquals(null, res[425].exec("a\x0db  ", 818));
+assertEquals(null, res[425].exec("a\x0db", 819));
+assertEquals(null, res[425].exec("** Failers", 820));
+assertEquals(null, res[425].exec("a\nb  ", 821));
+assertEquals(null, res[425].exec("a\x0db", 822));
+assertEquals(null, res[425].exec("a\nb  ", 823));
+assertEquals(null, res[425].exec("** Failers", 824));
+assertEquals(null, res[425].exec("a\x0d\nb  ", 825));
+assertEquals(null, res[425].exec("** Failers", 826));
+assertEquals(null, res[425].exec("a\x0db", 827));
+assertEquals(null, res[425].exec("a\nb  ", 828));
+assertEquals(null, res[425].exec("a\x0d\nb  ", 829));
+assertEquals(null, res[425].exec("** Failers", 830));
+assertEquals(null, res[425].exec("a\x0db", 831));
+assertEquals(null, res[425].exec("a\nb  ", 832));
+assertEquals(null, res[425].exec("a\x0d\nb  ", 833));
+assertEquals(null, res[425].exec("a\x85b ", 834));
+assertEquals(null, res[426].exec("a\x0db", 835));
+assertEquals(null, res[426].exec("a\nb", 836));
+assertEquals(null, res[426].exec("a\x0d\nb", 837));
+assertEquals(null, res[426].exec("** Failers", 838));
+assertEquals(null, res[426].exec("a\x85b", 839));
+assertEquals(null, res[426].exec("a\x0bb     ", 840));
+assertEquals(null, res[427].exec("a\x0db", 841));
+assertEquals(null, res[427].exec("a\nb", 842));
+assertEquals(null, res[427].exec("a\x0d\nb", 843));
+assertEquals(null, res[427].exec("a\x85b", 844));
+assertEquals(null, res[427].exec("a\x0bb     ", 845));
+assertEquals(null, res[427].exec("** Failers ", 846));
+assertEquals(null, res[427].exec("a\x85b<bsr_anycrlf>", 847));
+assertEquals(null, res[427].exec("a\x0bb<bsr_anycrlf>", 848));
+assertEquals(null, res[428].exec("a\x0db", 849));
+assertEquals(null, res[428].exec("a\nb", 850));
+assertEquals(null, res[428].exec("a\x0d\nb", 851));
+assertEquals(null, res[428].exec("** Failers", 852));
+assertEquals(null, res[428].exec("a\x85b", 853));
+assertEquals(null, res[428].exec("a\x0bb     ", 854));
+assertEquals(null, res[429].exec("a\x0db", 855));
+assertEquals(null, res[429].exec("a\nb", 856));
+assertEquals(null, res[429].exec("a\x0d\nb", 857));
+assertEquals(null, res[429].exec("a\x85b", 858));
+assertEquals(null, res[429].exec("a\x0bb     ", 859));
+assertEquals(null, res[429].exec("** Failers ", 860));
+assertEquals(null, res[429].exec("a\x85b<bsr_anycrlf>", 861));
+assertEquals(null, res[429].exec("a\x0bb<bsr_anycrlf>", 862));
+assertEquals(null, res[430].exec("a\x0d\n\nb", 863));
+assertEquals(null, res[430].exec("a\n\x0d\x0db", 864));
+assertEquals(null, res[430].exec("a\x0d\n\x0d\n\x0d\n\x0d\nb", 865));
+assertEquals(null, res[430].exec("** Failers", 866));
+assertEquals(null, res[430].exec("a\x8585b", 867));
+assertEquals(null, res[430].exec("a\x0b\x00bb     ", 868));
+assertEquals(null, res[431].exec("a\x0d\x0db", 869));
+assertEquals(null, res[431].exec("a\n\n\nb", 870));
+assertEquals(null, res[431].exec("a\x0d\n\n\x0d\x0db", 871));
+assertEquals(null, res[431].exec("a\x8585b", 872));
+assertEquals(null, res[431].exec("a\x0b\x00bb     ", 873));
+assertEquals(null, res[431].exec("** Failers ", 874));
+assertEquals(null, res[431].exec("a\x0d\x0d\x0d\x0d\x0db ", 875));
+assertEquals(null, res[431].exec("a\x8585b<bsr_anycrlf>", 876));
+assertEquals(null, res[431].exec("a\x0b\x00bb<bsr_anycrlf>", 877));
+assertEquals(null, res[431].exec("a\nb", 878));
+assertEquals(null, res[431].exec("a\x0db ", 879));
+assertEquals(null, res[431].exec("a\x85b", 880));
+assertEquals(null, res[431].exec("a\nb", 881));
+assertEquals(null, res[431].exec("a\x0db ", 882));
+assertEquals(null, res[431].exec("a\x85b", 883));
 assertThrows("var re = /(?-+a)/;", 884);
-assertNull(res[443].exec("aaaa", 885));
-assertNull(res[443].exec("bacxxx", 886));
-assertNull(res[443].exec("bbaccxxx ", 887));
-assertNull(res[443].exec("bbbacccxx", 888));
-assertNull(res[443].exec("aaaa", 889));
-assertNull(res[443].exec("bacxxx", 890));
-assertNull(res[443].exec("bbaccxxx ", 891));
-assertNull(res[443].exec("bbbacccxx", 892));
-assertToStringEquals("a,a", res[444].exec("aaaa"), 893);
-assertNull(res[444].exec("bacxxx", 894));
-assertNull(res[444].exec("bbaccxxx ", 895));
-assertNull(res[444].exec("bbbacccxx", 896));
-assertToStringEquals("a,a", res[445].exec("aaaa"), 897);
-assertNull(res[445].exec("bacxxx", 898));
-assertNull(res[445].exec("bbaccxxx ", 899));
-assertNull(res[445].exec("bbbacccxx", 900));
-assertToStringEquals("a,a", res[446].exec("aaaa"), 901);
-assertNull(res[446].exec("bacxxx", 902));
-assertNull(res[446].exec("bbaccxxx ", 903));
-assertNull(res[446].exec("bbbacccxx", 904));
-assertToStringEquals("a,a,a", res[447].exec("aaaa"), 905);
-assertNull(res[447].exec("bacxxx", 906));
-assertNull(res[447].exec("bbaccxxx ", 907));
-assertNull(res[447].exec("bbbacccxx", 908));
-assertNull(res[449].exec("bacxxx", 909));
-assertNull(res[449].exec("XaaX", 910));
-assertNull(res[449].exec("XAAX ", 911));
-assertNull(res[449].exec("XaaX", 912));
-assertNull(res[449].exec("** Failers ", 913));
-assertNull(res[449].exec("XAAX ", 914));
-assertNull(res[449].exec("XaaX", 915));
-assertNull(res[449].exec("XAAX ", 916));
-assertNull(res[449].exec("xzxx", 917));
-assertNull(res[449].exec("yzyy ", 918));
-assertNull(res[449].exec("** Failers", 919));
-assertNull(res[449].exec("xxz  ", 920));
-assertToStringEquals("a,,,a", res[450].exec("cat"), 921);
-assertToStringEquals("a,,,a", res[451].exec("cat"), 922);
-assertToStringEquals("TA]", res[452].exec("The ACTA] comes "), 923);
-assertToStringEquals("TA]", res[453].exec("The ACTA] comes "), 924);
-assertNull(res[453].exec("abcbabc", 925));
-assertNull(res[453].exec("abcbabc", 926));
-assertNull(res[453].exec("abcbabc", 927));
-assertNull(res[453].exec("** Failers ", 928));
-assertNull(res[453].exec("abcXabc", 929));
-assertNull(res[453].exec("abcXabc", 930));
-assertNull(res[453].exec("** Failers ", 931));
-assertNull(res[453].exec("abcbabc", 932));
-assertNull(res[453].exec("xyzbabcxyz", 933));
-assertNull(res[456].exec("** Failers", 934));
-assertNull(res[456].exec("ab", 935));
-assertNull(res[457].exec("** Failers", 936));
-assertNull(res[457].exec("ab ", 937));
-assertNull(res[457].exec("** Failers", 938));
-assertNull(res[457].exec("ab ", 939));
-assertToStringEquals("aXb", res[458].exec("aXb"), 940);
-assertToStringEquals("a\nb", res[458].exec("a\nb "), 941);
-assertNull(res[458].exec("** Failers", 942));
-assertNull(res[458].exec("ab  ", 943));
-assertToStringEquals("aXb", res[459].exec("aXb"), 944);
-assertToStringEquals("a\nX\nXb", res[459].exec("a\nX\nXb "), 945);
-assertNull(res[459].exec("** Failers", 946));
-assertNull(res[459].exec("ab  ", 947));
-assertToStringEquals("acb", res[463].exec("acb"), 948);
-assertToStringEquals("ab", res[463].exec("ab"), 949);
-assertNull(res[463].exec("ax{100}b ", 950));
-assertNull(res[463].exec("*** Failers", 951));
-assertNull(res[463].exec("a\nb  ", 952));
-assertNull(res[464].exec("ax{4000}xyb ", 953));
-assertNull(res[464].exec("ax{4000}yb ", 954));
-assertNull(res[464].exec("ax{4000}x{100}yb ", 955));
-assertNull(res[464].exec("*** Failers", 956));
-assertNull(res[464].exec("ax{4000}b ", 957));
-assertNull(res[464].exec("ac\ncb ", 958));
-assertToStringEquals("a\xc0,,\xc0", res[465].exec("a\xc0\x88b"), 959);
-assertToStringEquals("ax,,x", res[466].exec("ax{100}b"), 960);
-assertToStringEquals("a\xc0\x88b,\xc0\x88,b", res[467].exec("a\xc0\x88b"), 961);
-assertToStringEquals("ax{100}b,x{100},b", res[468].exec("ax{100}b"), 962);
-assertToStringEquals("a\xc0\x92,\xc0,\x92", res[469].exec("a\xc0\x92bcd"), 963);
-assertToStringEquals("ax{,x,{", res[470].exec("ax{240}bcd"), 964);
-assertToStringEquals("a\xc0\x92,\xc0,\x92", res[471].exec("a\xc0\x92bcd"), 965);
-assertToStringEquals("ax{,x,{", res[472].exec("ax{240}bcd"), 966);
-assertToStringEquals("a\xc0,,\xc0", res[473].exec("a\xc0\x92bcd"), 967);
-assertToStringEquals("ax,,x", res[474].exec("ax{240}bcd"), 968);
-assertNull(res[475].exec("ax{1234}xyb ", 969));
-assertNull(res[475].exec("ax{1234}x{4321}yb ", 970));
-assertNull(res[475].exec("ax{1234}x{4321}x{3412}b ", 971));
-assertNull(res[475].exec("*** Failers", 972));
-assertNull(res[475].exec("ax{1234}b ", 973));
-assertNull(res[475].exec("ac\ncb ", 974));
-assertToStringEquals("ax{1234}xyb,x{1234}xy", res[476].exec("ax{1234}xyb "), 975);
-assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[476].exec("ax{1234}x{4321}yb "), 976);
-assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[476].exec("ax{1234}x{4321}x{3412}b "), 977);
-assertToStringEquals("axxxxbcdefghijb,xxxxbcdefghij", res[476].exec("axxxxbcdefghijb "), 978);
-assertToStringEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[476].exec("ax{1234}x{4321}x{3412}x{3421}b "), 979);
-assertNull(res[476].exec("*** Failers", 980));
-assertToStringEquals("ax{1234}b,x{1234}", res[476].exec("ax{1234}b "), 981);
-assertToStringEquals("ax{1234}xyb,x{1234}xy", res[477].exec("ax{1234}xyb "), 982);
-assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[477].exec("ax{1234}x{4321}yb "), 983);
-assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[477].exec("ax{1234}x{4321}x{3412}b "), 984);
-assertToStringEquals("axxxxb,xxxx", res[477].exec("axxxxbcdefghijb "), 985);
-assertToStringEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[477].exec("ax{1234}x{4321}x{3412}x{3421}b "), 986);
-assertNull(res[477].exec("*** Failers", 987));
-assertToStringEquals("ax{1234}b,x{1234}", res[477].exec("ax{1234}b "), 988);
-assertNull(res[478].exec("ax{1234}xyb ", 989));
-assertNull(res[478].exec("ax{1234}x{4321}yb ", 990));
-assertNull(res[478].exec("ax{1234}x{4321}x{3412}b ", 991));
-assertToStringEquals("axxxxb,xxxx", res[478].exec("axxxxbcdefghijb "), 992);
-assertNull(res[478].exec("ax{1234}x{4321}x{3412}x{3421}b ", 993));
-assertToStringEquals("axbxxb,xbxx", res[478].exec("axbxxbcdefghijb "), 994);
-assertToStringEquals("axxxxxb,xxxxx", res[478].exec("axxxxxbcdefghijb "), 995);
-assertNull(res[478].exec("*** Failers", 996));
-assertNull(res[478].exec("ax{1234}b ", 997));
-assertNull(res[478].exec("axxxxxxbcdefghijb ", 998));
-assertNull(res[479].exec("ax{1234}xyb ", 999));
-assertNull(res[479].exec("ax{1234}x{4321}yb ", 1000));
-assertNull(res[479].exec("ax{1234}x{4321}x{3412}b ", 1001));
-assertToStringEquals("axxxxb,xxxx", res[479].exec("axxxxbcdefghijb "), 1002);
-assertNull(res[479].exec("ax{1234}x{4321}x{3412}x{3421}b ", 1003));
-assertToStringEquals("axbxxb,xbxx", res[479].exec("axbxxbcdefghijb "), 1004);
-assertToStringEquals("axxxxxb,xxxxx", res[479].exec("axxxxxbcdefghijb "), 1005);
-assertNull(res[479].exec("*** Failers", 1006));
-assertNull(res[479].exec("ax{1234}b ", 1007));
-assertNull(res[479].exec("axxxxxxbcdefghijb ", 1008));
-assertNull(res[479].exec("*** Failers", 1009));
-assertNull(res[479].exec("x{100}", 1010));
-assertNull(res[479].exec("aXbcd", 1011));
-assertNull(res[479].exec("ax{100}bcd", 1012));
-assertNull(res[479].exec("ax{100000}bcd", 1013));
-assertNull(res[479].exec("x{100}x{100}x{100}b", 1014));
-assertNull(res[479].exec("*** Failers ", 1015));
-assertNull(res[479].exec("x{100}x{100}b", 1016));
-assertNull(res[479].exec("x{ab} ", 1017));
-assertNull(res[479].exec("\xc2\xab", 1018));
-assertNull(res[479].exec("*** Failers ", 1019));
-assertNull(res[479].exec("\x00{ab}", 1020));
-assertNull(res[479].exec("WXYZ", 1021));
-assertNull(res[479].exec("x{256}XYZ ", 1022));
-assertNull(res[479].exec("*** Failers", 1023));
-assertNull(res[479].exec("XYZ ", 1024));
-assertNull(res[480].exec("Xx{1234}", 1025));
-assertNull(res[481].exec("Xx{1234}YZ", 1026));
-assertToStringEquals("X", res[482].exec("XYZabcdce"), 1027);
-assertToStringEquals("X", res[483].exec("XYZabcde"), 1028);
-assertNull(res[484].exec("Xabcdefg   ", 1029));
-assertNull(res[484].exec("Xx{1234} ", 1030));
-assertNull(res[484].exec("Xx{1234}YZ", 1031));
-assertNull(res[484].exec("Xx{1234}x{512}  ", 1032));
-assertNull(res[484].exec("Xx{1234}x{512}YZ", 1033));
-assertNull(res[485].exec("Xabcdefg   ", 1034));
-assertNull(res[485].exec("Xx{1234} ", 1035));
-assertNull(res[485].exec("Xx{1234}YZ", 1036));
-assertNull(res[485].exec("Xx{1234}x{512}  ", 1037));
-assertToStringEquals("bcd", res[486].exec("bcd"), 1038);
-assertToStringEquals("00}", res[486].exec("x{100}aYx{256}Z "), 1039);
-assertToStringEquals("x{", res[487].exec("x{100}bc"), 1040);
-assertToStringEquals("x{100}bcA", res[488].exec("x{100}bcAa"), 1041);
-assertToStringEquals("x{", res[489].exec("x{100}bca"), 1042);
-assertToStringEquals("bcd", res[490].exec("bcd"), 1043);
-assertToStringEquals("00}", res[490].exec("x{100}aYx{256}Z "), 1044);
-assertToStringEquals("x{", res[491].exec("x{100}bc"), 1045);
-assertToStringEquals("x{100}bc", res[492].exec("x{100}bcAa"), 1046);
-assertToStringEquals("x{", res[493].exec("x{100}bca"), 1047);
-assertNull(res[493].exec("abcd", 1048));
-assertNull(res[493].exec("abcd", 1049));
-assertToStringEquals("x{", res[493].exec("x{100}x{100} "), 1050);
-assertToStringEquals("x{", res[493].exec("x{100}x{100} "), 1051);
-assertToStringEquals("x{", res[493].exec("x{100}x{100}x{100}x{100} "), 1052);
-assertNull(res[493].exec("abce", 1053));
-assertToStringEquals("x{", res[493].exec("x{100}x{100}x{100}x{100} "), 1054);
-assertNull(res[493].exec("abcdx{100}x{100}x{100}x{100} ", 1055));
-assertNull(res[493].exec("abcdx{100}x{100}x{100}x{100} ", 1056));
-assertNull(res[493].exec("abcdx{100}x{100}x{100}x{100} ", 1057));
-assertNull(res[493].exec("abcdx{100}x{100}x{100}XX", 1058));
-assertNull(res[493].exec("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX", 1059));
-assertNull(res[493].exec("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX", 1060));
-assertToStringEquals("Xy", res[493].exec("Xyyyax{100}x{100}bXzzz"), 1061);
-assertToStringEquals("X", res[496].exec("1X2"), 1062);
-assertToStringEquals("x", res[496].exec("1x{100}2 "), 1063);
-assertToStringEquals(">X", res[497].exec("> >X Y"), 1064);
-assertToStringEquals(">x", res[497].exec("> >x{100} Y"), 1065);
-assertToStringEquals("1", res[498].exec("x{100}3"), 1066);
-assertToStringEquals(" ", res[499].exec("x{100} X"), 1067);
-assertToStringEquals("abcd", res[500].exec("12abcd34"), 1068);
-assertToStringEquals("*** Failers", res[500].exec("*** Failers"), 1069);
-assertToStringEquals("  ", res[500].exec("1234  "), 1070);
-assertToStringEquals("abc", res[501].exec("12abcd34"), 1071);
-assertToStringEquals("ab", res[501].exec("12ab34"), 1072);
-assertToStringEquals("***", res[501].exec("*** Failers  "), 1073);
-assertNull(res[501].exec("1234", 1074));
-assertToStringEquals("  ", res[501].exec("12a34  "), 1075);
-assertToStringEquals("ab", res[502].exec("12abcd34"), 1076);
-assertToStringEquals("ab", res[502].exec("12ab34"), 1077);
-assertToStringEquals("**", res[502].exec("*** Failers  "), 1078);
-assertNull(res[502].exec("1234", 1079));
-assertToStringEquals("  ", res[502].exec("12a34  "), 1080);
-assertToStringEquals("12", res[503].exec("12abcd34"), 1081);
-assertNull(res[503].exec("*** Failers", 1082));
-assertToStringEquals("12", res[504].exec("12abcd34"), 1083);
-assertToStringEquals("123", res[504].exec("1234abcd"), 1084);
-assertNull(res[504].exec("*** Failers  ", 1085));
-assertNull(res[504].exec("1.4 ", 1086));
-assertToStringEquals("12", res[505].exec("12abcd34"), 1087);
-assertToStringEquals("12", res[505].exec("1234abcd"), 1088);
-assertNull(res[505].exec("*** Failers  ", 1089));
-assertNull(res[505].exec("1.4 ", 1090));
-assertToStringEquals("12abcd34", res[506].exec("12abcd34"), 1091);
-assertToStringEquals("***", res[506].exec("*** Failers"), 1092);
-assertNull(res[506].exec("     ", 1093));
-assertToStringEquals("12a", res[507].exec("12abcd34"), 1094);
-assertToStringEquals("123", res[507].exec("1234abcd"), 1095);
-assertToStringEquals("***", res[507].exec("*** Failers"), 1096);
-assertNull(res[507].exec("       ", 1097));
-assertToStringEquals("12", res[508].exec("12abcd34"), 1098);
-assertToStringEquals("12", res[508].exec("1234abcd"), 1099);
-assertToStringEquals("**", res[508].exec("*** Failers"), 1100);
-assertNull(res[508].exec("       ", 1101));
-assertToStringEquals(">      <", res[509].exec("12>      <34"), 1102);
-assertNull(res[509].exec("*** Failers", 1103));
-assertToStringEquals(">  <", res[510].exec("ab>  <cd"), 1104);
-assertToStringEquals(">   <", res[510].exec("ab>   <ce"), 1105);
-assertNull(res[510].exec("*** Failers", 1106));
-assertNull(res[510].exec("ab>    <cd ", 1107));
-assertToStringEquals(">  <", res[511].exec("ab>  <cd"), 1108);
-assertToStringEquals(">   <", res[511].exec("ab>   <ce"), 1109);
-assertNull(res[511].exec("*** Failers", 1110));
-assertNull(res[511].exec("ab>    <cd ", 1111));
-assertToStringEquals("12", res[512].exec("12      34"), 1112);
-assertToStringEquals("Failers", res[512].exec("*** Failers"), 1113);
-assertNull(res[512].exec("+++=*! ", 1114));
-assertToStringEquals("ab", res[513].exec("ab  cd"), 1115);
-assertToStringEquals("abc", res[513].exec("abcd ce"), 1116);
-assertToStringEquals("Fai", res[513].exec("*** Failers"), 1117);
-assertNull(res[513].exec("a.b.c", 1118));
-assertToStringEquals("ab", res[514].exec("ab  cd"), 1119);
-assertToStringEquals("ab", res[514].exec("abcd ce"), 1120);
-assertToStringEquals("Fa", res[514].exec("*** Failers"), 1121);
-assertNull(res[514].exec("a.b.c", 1122));
-assertToStringEquals("====", res[515].exec("12====34"), 1123);
-assertToStringEquals("*** ", res[515].exec("*** Failers"), 1124);
-assertToStringEquals(" ", res[515].exec("abcd "), 1125);
-assertToStringEquals("===", res[516].exec("ab====cd"), 1126);
-assertToStringEquals("==", res[516].exec("ab==cd"), 1127);
-assertToStringEquals("***", res[516].exec("*** Failers"), 1128);
-assertNull(res[516].exec("a.b.c", 1129));
-assertToStringEquals("==", res[517].exec("ab====cd"), 1130);
-assertToStringEquals("==", res[517].exec("ab==cd"), 1131);
-assertToStringEquals("**", res[517].exec("*** Failers"), 1132);
-assertNull(res[517].exec("a.b.c", 1133));
-assertNull(res[517].exec("x{100}", 1134));
-assertNull(res[517].exec("Zx{100}", 1135));
-assertNull(res[517].exec("x{100}Z", 1136));
-assertToStringEquals("**", res[517].exec("*** Failers "), 1137);
-assertNull(res[517].exec("Zx{100}", 1138));
-assertNull(res[517].exec("x{100}", 1139));
-assertNull(res[517].exec("x{100}Z", 1140));
-assertToStringEquals("**", res[517].exec("*** Failers "), 1141);
-assertNull(res[517].exec("abcx{200}X", 1142));
-assertNull(res[517].exec("abcx{100}X ", 1143));
-assertToStringEquals("**", res[517].exec("*** Failers"), 1144);
-assertToStringEquals("  ", res[517].exec("X  "), 1145);
-assertNull(res[517].exec("abcx{200}X", 1146));
-assertNull(res[517].exec("abcx{100}X ", 1147));
-assertNull(res[517].exec("abQX ", 1148));
-assertToStringEquals("**", res[517].exec("*** Failers"), 1149);
-assertToStringEquals("  ", res[517].exec("X  "), 1150);
-assertNull(res[517].exec("abcx{100}x{200}x{100}X", 1151));
-assertToStringEquals("**", res[517].exec("*** Failers"), 1152);
-assertNull(res[517].exec("abcx{200}X", 1153));
-assertToStringEquals("  ", res[517].exec("X  "), 1154);
-assertNull(res[517].exec("AX", 1155));
-assertNull(res[517].exec("x{150}X", 1156));
-assertNull(res[517].exec("x{500}X ", 1157));
-assertToStringEquals("**", res[517].exec("*** Failers"), 1158);
-assertNull(res[517].exec("x{100}X", 1159));
-assertToStringEquals("  ", res[517].exec("x{200}X   "), 1160);
-assertNull(res[517].exec("AX", 1161));
-assertNull(res[517].exec("x{150}X", 1162));
-assertNull(res[517].exec("x{500}X ", 1163));
-assertToStringEquals("**", res[517].exec("*** Failers"), 1164);
-assertNull(res[517].exec("x{100}X", 1165));
-assertToStringEquals("  ", res[517].exec("x{200}X   "), 1166);
-assertNull(res[517].exec("QX ", 1167));
-assertNull(res[517].exec("AX", 1168));
-assertNull(res[517].exec("x{500}X ", 1169));
-assertToStringEquals("**", res[517].exec("*** Failers"), 1170);
-assertNull(res[517].exec("x{100}X", 1171));
-assertNull(res[517].exec("x{150}X", 1172));
-assertToStringEquals("  ", res[517].exec("x{200}X   "), 1173);
-assertNull(res[518].exec("aXb", 1174));
-assertNull(res[518].exec("a\nb", 1175));
-assertNull(res[519].exec("aXb", 1176));
-assertNull(res[519].exec("a\nb", 1177));
-assertNull(res[519].exec("*** Failers ", 1178));
-assertNull(res[519].exec("ax{100}b ", 1179));
-assertNull(res[519].exec("z", 1180));
-assertNull(res[519].exec("Z ", 1181));
-assertNull(res[519].exec("x{100}", 1182));
-assertNull(res[519].exec("*** Failers", 1183));
-assertNull(res[519].exec("x{102}", 1184));
-assertNull(res[519].exec("y    ", 1185));
-assertToStringEquals("\xff", res[520].exec(">\xff<"), 1186);
-assertNull(res[521].exec(">x{ff}<", 1187));
-assertToStringEquals("X", res[522].exec("XYZ"), 1188);
-assertToStringEquals("X", res[523].exec("XYZ"), 1189);
-assertToStringEquals("x", res[523].exec("x{123} "), 1190);
-assertToStringEquals(",", res[528].exec("catac"), 1191);
-assertToStringEquals(",", res[528].exec("ax{256}a "), 1192);
-assertToStringEquals(",", res[528].exec("x{85}"), 1193);
-assertToStringEquals(",", res[528].exec("\u1234 "), 1194);
-assertToStringEquals(",", res[528].exec("\u1234 "), 1195);
-assertToStringEquals(",", res[528].exec("abcdefg"), 1196);
-assertToStringEquals(",", res[528].exec("ab"), 1197);
-assertToStringEquals(",", res[528].exec("a "), 1198);
-assertToStringEquals("Ax", res[529].exec("Ax{a3}BC"), 1199);
-assertToStringEquals("Ax", res[530].exec("Ax{a3}BC"), 1200);
-assertToStringEquals("}=", res[531].exec("+x{a3}== "), 1201);
-assertToStringEquals("}=", res[532].exec("+x{a3}== "), 1202);
-assertToStringEquals("x", res[533].exec("x{442}x{435}x{441}x{442}"), 1203);
-assertToStringEquals("x", res[534].exec("x{442}x{435}x{441}x{442}"), 1204);
-assertToStringEquals("x", res[535].exec("x{442}x{435}x{441}x{442}"), 1205);
-assertToStringEquals("x", res[536].exec("x{442}x{435}x{441}x{442}"), 1206);
-assertToStringEquals("{", res[537].exec("x{2442}x{2435}x{2441}x{2442}"), 1207);
-assertToStringEquals("{", res[538].exec("x{2442}x{2435}x{2441}x{2442}"), 1208);
-assertToStringEquals("abc\n\x0dx{442}x{435}x{441}x{442}xyz ", res[539].exec("abc\n\x0dx{442}x{435}x{441}x{442}xyz "), 1209);
-assertToStringEquals("x{442}x{435}x{441}x{442}", res[539].exec("x{442}x{435}x{441}x{442}"), 1210);
-assertToStringEquals("c d", res[540].exec("abc defx{442}x{443}xyz\npqr"), 1211);
-assertToStringEquals("c d", res[541].exec("abc defx{442}x{443}xyz\npqr"), 1212);
-assertNull(res[542].exec("+x{2442}", 1213));
-assertNull(res[543].exec("+x{2442}", 1214));
-assertNull(res[544].exec("Ax{442}", 1215));
-assertNull(res[545].exec("Ax{442}", 1216));
-assertNull(res[546].exec("Ax{442}", 1217));
-assertNull(res[547].exec("Ax{442}", 1218));
-assertNull(res[548].exec("\x19x{e01ff}", 1219));
-assertNull(res[549].exec("Ax{422}", 1220));
-assertNull(res[550].exec("x{19}x{e01ff}", 1221));
-assertNull(res[551].exec("Ax{442}", 1222));
-assertNull(res[552].exec("Ax{442}", 1223));
-assertNull(res[553].exec("ax{442}", 1224));
-assertNull(res[554].exec("+x{2442}", 1225));
-assertNull(res[555].exec("Mx{442}", 1226));
-assertToStringEquals("abc", res[556].exec("abc"), 1227);
-assertToStringEquals("abc", res[557].exec("abc"), 1228);
-assertToStringEquals("abc", res[558].exec("abc"), 1229);
-assertToStringEquals("abc", res[559].exec("abc"), 1230);
-assertNull(res[560].exec("x{100}ax{1234}bcd", 1231));
-assertNull(res[562].exec("x{0041}x{2262}x{0391}x{002e}", 1232));
-assertNull(res[562].exec("x{D55c}x{ad6d}x{C5B4} ", 1233));
-assertNull(res[562].exec("x{65e5}x{672c}x{8a9e}", 1234));
-assertToStringEquals("{861}X", res[563].exec("x{212ab}x{212ab}x{212ab}x{861}X"), 1235);
-assertToStringEquals("x{2", res[564].exec("x{212ab}x{212ab}x{212ab}x{861}"), 1236);
-assertToStringEquals("x{c", res[564].exec("x{c0}b"), 1237);
-assertToStringEquals("ax{", res[564].exec("ax{c0}aaaa/ "), 1238);
-assertToStringEquals("ax{", res[564].exec("ax{c0}aaaa/ "), 1239);
-assertToStringEquals("ax{", res[564].exec("ax{c0}ax{c0}aaa/ "), 1240);
-assertToStringEquals("ax{", res[564].exec("ax{c0}aaaa/ "), 1241);
-assertToStringEquals("ax{", res[564].exec("ax{c0}ax{c0}aaa/ "), 1242);
-assertToStringEquals("ax{", res[564].exec("ax{c0}aaaa/ "), 1243);
-assertToStringEquals("ax{", res[564].exec("ax{c0}ax{c0}aaa/ "), 1244);
-assertToStringEquals("Sho", res[564].exec("Should produce an error diagnostic"), 1245);
-assertNull(res[565].exec("Xx{1234}", 1246));
-assertNull(res[565].exec("X\nabc ", 1247));
-assertToStringEquals("b", res[566].exec("bar"), 1248);
-assertNull(res[566].exec("*** Failers", 1249));
-assertNull(res[566].exec("c", 1250));
-assertNull(res[566].exec("x{ff}", 1251));
-assertNull(res[566].exec("x{100}  ", 1252));
-assertToStringEquals("c", res[567].exec("c"), 1253);
-assertToStringEquals("x", res[567].exec("x{ff}"), 1254);
-assertToStringEquals("x", res[567].exec("x{100}  "), 1255);
-assertToStringEquals("*", res[567].exec("*** Failers "), 1256);
-assertNull(res[567].exec("aaa", 1257));
-assertToStringEquals("x", res[568].exec("x{f1}"), 1258);
-assertToStringEquals("x", res[568].exec("x{bf}"), 1259);
-assertToStringEquals("x", res[568].exec("x{100}"), 1260);
-assertToStringEquals("x", res[568].exec("x{1000}   "), 1261);
-assertToStringEquals("*", res[568].exec("*** Failers"), 1262);
-assertToStringEquals("x", res[568].exec("x{c0} "), 1263);
-assertToStringEquals("x", res[568].exec("x{f0} "), 1264);
-assertToStringEquals("1", res[568].exec("1234"), 1265);
-assertToStringEquals("\"", res[568].exec("\"1234\" "), 1266);
-assertToStringEquals("x", res[568].exec("x{100}1234"), 1267);
-assertToStringEquals("\"", res[568].exec("\"x{100}1234\"  "), 1268);
-assertToStringEquals("x", res[568].exec("x{100}x{100}12ab "), 1269);
-assertToStringEquals("x", res[568].exec("x{100}x{100}\"12\" "), 1270);
-assertToStringEquals("*", res[568].exec("*** Failers "), 1271);
-assertToStringEquals("x", res[568].exec("x{100}x{100}abcd"), 1272);
-assertToStringEquals("A", res[568].exec("A"), 1273);
-assertToStringEquals("x", res[568].exec("x{100}"), 1274);
-assertToStringEquals("Z", res[568].exec("Zx{100}"), 1275);
-assertToStringEquals("x", res[568].exec("x{100}Z"), 1276);
-assertToStringEquals("*", res[568].exec("*** Failers "), 1277);
-assertToStringEquals("Z", res[568].exec("Zx{100}"), 1278);
-assertToStringEquals("x", res[568].exec("x{100}"), 1279);
-assertToStringEquals("x", res[568].exec("x{100}Z"), 1280);
-assertToStringEquals("*", res[568].exec("*** Failers "), 1281);
-assertToStringEquals("x", res[568].exec("x{100}"), 1282);
-assertToStringEquals("x", res[568].exec("x{104}"), 1283);
-assertToStringEquals("*", res[568].exec("*** Failers"), 1284);
-assertToStringEquals("x", res[568].exec("x{105}"), 1285);
-assertToStringEquals("x", res[568].exec("x{ff}    "), 1286);
-assertToStringEquals("x", res[568].exec("x{100}"), 1287);
-assertToStringEquals("\u0100", res[568].exec("\u0100 "), 1288);
-assertToStringEquals("\xff", res[569].exec(">\xff<"), 1289);
-assertNull(res[570].exec(">x{ff}<", 1290));
-assertToStringEquals("\xd6", res[572].exec("\xd6 # Matches without Study"), 1291);
-assertToStringEquals("x", res[572].exec("x{d6}"), 1292);
-assertToStringEquals("\xd6", res[572].exec("\xd6 <-- Same with Study"), 1293);
-assertToStringEquals("x", res[572].exec("x{d6}"), 1294);
-assertToStringEquals("\xd6", res[572].exec("\xd6 # Matches without Study"), 1295);
-assertToStringEquals("x", res[572].exec("x{d6} "), 1296);
-assertToStringEquals("\xd6", res[572].exec("\xd6 <-- Same with Study"), 1297);
-assertToStringEquals("x", res[572].exec("x{d6} "), 1298);
-assertToStringEquals("\ufffd", res[572].exec("\ufffd]"), 1299);
-assertToStringEquals("\ufffd", res[572].exec("\ufffd"), 1300);
-assertToStringEquals("\ufffd", res[572].exec("\ufffd\ufffd\ufffd"), 1301);
-assertToStringEquals("\ufffd", res[572].exec("\ufffd\ufffd\ufffd?"), 1302);
-assertNull(res[573].exec("\xc0\x80", 1303));
-assertNull(res[573].exec("\xc1\x8f ", 1304));
-assertNull(res[573].exec("\xe0\x9f\x80", 1305));
-assertNull(res[573].exec("\xf0\x8f\x80\x80 ", 1306));
-assertNull(res[573].exec("\xf8\x87\x80\x80\x80  ", 1307));
-assertNull(res[573].exec("\xfc\x83\x80\x80\x80\x80", 1308));
-assertNull(res[573].exec("\xfe\x80\x80\x80\x80\x80  ", 1309));
-assertNull(res[573].exec("\xff\x80\x80\x80\x80\x80  ", 1310));
-assertNull(res[573].exec("\xc3\x8f", 1311));
-assertNull(res[573].exec("\xe0\xaf\x80", 1312));
-assertNull(res[573].exec("\xe1\x80\x80", 1313));
-assertNull(res[573].exec("\xf0\x9f\x80\x80 ", 1314));
-assertNull(res[573].exec("\xf1\x8f\x80\x80 ", 1315));
-assertNull(res[573].exec("\xf8\x88\x80\x80\x80  ", 1316));
-assertNull(res[573].exec("\xf9\x87\x80\x80\x80  ", 1317));
-assertNull(res[573].exec("\xfc\x84\x80\x80\x80\x80", 1318));
-assertNull(res[573].exec("\xfd\x83\x80\x80\x80\x80", 1319));
-assertNull(res[573].exec("?\xf8\x88\x80\x80\x80  ", 1320));
-assertNull(res[573].exec("?\xf9\x87\x80\x80\x80  ", 1321));
-assertNull(res[573].exec("?\xfc\x84\x80\x80\x80\x80", 1322));
-assertNull(res[573].exec("?\xfd\x83\x80\x80\x80\x80", 1323));
-assertToStringEquals(".", res[574].exec("A.B"), 1324);
-assertToStringEquals("{", res[574].exec("Ax{100}B "), 1325);
-assertToStringEquals("x", res[575].exec("x{100}X   "), 1326);
-assertToStringEquals("a", res[575].exec("ax{1234}b"), 1327);
-assertNull(res[577].exec("AxxB     ", 1328));
-assertToStringEquals("abc1", res[578].exec("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 x{0085}abc7 x{2028}abc8 x{2029}abc9 JUNK"), 1329);
-assertToStringEquals("abc1", res[579].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6x{0085} abc7x{2028} abc8x{2029} abc9"), 1330);
-assertNull(res[580].exec("a\nb", 1331));
-assertNull(res[580].exec("a\x0db", 1332));
-assertNull(res[580].exec("a\x0d\nb", 1333));
-assertNull(res[580].exec("a\x0bb", 1334));
-assertNull(res[580].exec("a\x0cb", 1335));
-assertNull(res[580].exec("ax{85}b   ", 1336));
-assertNull(res[580].exec("ax{2028}b ", 1337));
-assertNull(res[580].exec("ax{2029}b ", 1338));
-assertNull(res[580].exec("** Failers", 1339));
-assertNull(res[580].exec("a\n\x0db    ", 1340));
-assertToStringEquals("ab", res[581].exec("ab"), 1341);
-assertNull(res[581].exec("a\nb", 1342));
-assertNull(res[581].exec("a\x0db", 1343));
-assertNull(res[581].exec("a\x0d\nb", 1344));
-assertNull(res[581].exec("a\x0bb", 1345));
-assertNull(res[581].exec("a\x0cx{2028}x{2029}b", 1346));
-assertNull(res[581].exec("ax{85}b   ", 1347));
-assertNull(res[581].exec("a\n\x0db    ", 1348));
-assertNull(res[581].exec("a\n\x0dx{85}\x0cb ", 1349));
-assertNull(res[582].exec("a\nb", 1350));
-assertNull(res[582].exec("a\x0db", 1351));
-assertNull(res[582].exec("a\x0d\nb", 1352));
-assertNull(res[582].exec("a\x0bb", 1353));
-assertNull(res[582].exec("a\x0cx{2028}x{2029}b", 1354));
-assertNull(res[582].exec("ax{85}b   ", 1355));
-assertNull(res[582].exec("a\n\x0db    ", 1356));
-assertNull(res[582].exec("a\n\x0dx{85}\x0cb ", 1357));
-assertNull(res[582].exec("** Failers", 1358));
-assertNull(res[582].exec("ab  ", 1359));
-assertNull(res[583].exec("a\nb", 1360));
-assertNull(res[583].exec("a\n\x0db", 1361));
-assertNull(res[583].exec("a\n\x0dx{85}b", 1362));
-assertNull(res[583].exec("a\x0d\n\x0d\nb ", 1363));
-assertNull(res[583].exec("a\x0d\n\x0d\n\x0d\nb ", 1364));
-assertNull(res[583].exec("a\n\x0d\n\x0db", 1365));
-assertNull(res[583].exec("a\n\n\x0d\nb ", 1366));
-assertNull(res[583].exec("** Failers", 1367));
-assertNull(res[583].exec("a\n\n\n\x0db", 1368));
-assertNull(res[583].exec("a\x0d", 1369));
-assertNull(res[584].exec("X X\n", 1370));
-assertNull(res[584].exec("X\x09X\x0b", 1371));
-assertNull(res[584].exec("** Failers", 1372));
-assertNull(res[584].exec("x{a0} X\n   ", 1373));
-assertNull(res[585].exec("\x09 x{a0}X\n\x0b\x0c\x0d\n", 1374));
-assertNull(res[585].exec("\x09 x{a0}\n\x0b\x0c\x0d\n", 1375));
-assertNull(res[585].exec("\x09 x{a0}\n\x0b\x0c", 1376));
-assertNull(res[585].exec("** Failers ", 1377));
-assertNull(res[585].exec("\x09 x{a0}\n\x0b", 1378));
-assertNull(res[585].exec(" ", 1379));
-assertNull(res[586].exec("x{3001}x{3000}x{2030}x{2028}", 1380));
-assertNull(res[586].exec("Xx{180e}Xx{85}", 1381));
-assertNull(res[586].exec("** Failers", 1382));
-assertNull(res[586].exec("x{2009} X\n   ", 1383));
-assertNull(res[587].exec("x{1680}x{180e}x{2007}Xx{2028}x{2029}\x0c\x0d\n", 1384));
-assertNull(res[587].exec("\x09x{205f}x{a0}\nx{2029}\x0cx{2028}\n", 1385));
-assertNull(res[587].exec("\x09 x{202f}\n\x0b\x0c", 1386));
-assertNull(res[587].exec("** Failers ", 1387));
-assertNull(res[587].exec("\x09x{200a}x{a0}x{2028}\x0b", 1388));
-assertNull(res[587].exec(" ", 1389));
-assertNull(res[588].exec(">x{1680}", 1390));
-assertNull(res[589].exec(">x{1680}x{180e}x{2000}x{2003}x{200a}x{202f}x{205f}x{3000}<", 1391));
-assertToStringEquals("x{1ec5} ", res[593].exec("x{1ec5} "), 1392);
-assertNull(res[594].exec("x{0}x{d7ff}x{e000}x{10ffff}", 1393));
-assertNull(res[594].exec("x{d800}", 1394));
-assertNull(res[594].exec("x{d800}?", 1395));
-assertNull(res[594].exec("x{da00}", 1396));
-assertNull(res[594].exec("x{da00}?", 1397));
-assertNull(res[594].exec("x{dfff}", 1398));
-assertNull(res[594].exec("x{dfff}?", 1399));
-assertNull(res[594].exec("x{110000}    ", 1400));
-assertNull(res[594].exec("x{110000}?    ", 1401));
-assertNull(res[594].exec("x{2000000} ", 1402));
-assertNull(res[594].exec("x{2000000}? ", 1403));
-assertNull(res[594].exec("x{7fffffff} ", 1404));
-assertNull(res[594].exec("x{7fffffff}? ", 1405));
-assertNull(res[595].exec("a\x0db", 1406));
-assertNull(res[595].exec("a\nb", 1407));
-assertNull(res[595].exec("a\x0d\nb", 1408));
-assertNull(res[595].exec("** Failers", 1409));
-assertNull(res[595].exec("ax{85}b", 1410));
-assertNull(res[595].exec("a\x0bb     ", 1411));
-assertNull(res[596].exec("a\x0db", 1412));
-assertNull(res[596].exec("a\nb", 1413));
-assertNull(res[596].exec("a\x0d\nb", 1414));
-assertNull(res[596].exec("ax{85}b", 1415));
-assertNull(res[596].exec("a\x0bb     ", 1416));
-assertNull(res[596].exec("** Failers ", 1417));
-assertNull(res[596].exec("ax{85}b<bsr_anycrlf>", 1418));
-assertNull(res[596].exec("a\x0bb<bsr_anycrlf>", 1419));
-assertNull(res[597].exec("a\x0db", 1420));
-assertNull(res[597].exec("a\nb", 1421));
-assertNull(res[597].exec("a\x0d\nb", 1422));
-assertNull(res[597].exec("** Failers", 1423));
-assertNull(res[597].exec("ax{85}b", 1424));
-assertNull(res[597].exec("a\x0bb     ", 1425));
-assertNull(res[598].exec("a\x0db", 1426));
-assertNull(res[598].exec("a\nb", 1427));
-assertNull(res[598].exec("a\x0d\nb", 1428));
-assertNull(res[598].exec("ax{85}b", 1429));
-assertNull(res[598].exec("a\x0bb     ", 1430));
-assertNull(res[598].exec("** Failers ", 1431));
-assertNull(res[598].exec("ax{85}b<bsr_anycrlf>", 1432));
-assertNull(res[598].exec("a\x0bb<bsr_anycrlf>", 1433));
-assertToStringEquals("QQQx{2029}ABCaXYZ=!bPQR", res[599].exec("QQQx{2029}ABCaXYZ=!bPQR"), 1434);
-assertNull(res[599].exec("** Failers", 1435));
-assertNull(res[599].exec("ax{2029}b", 1436));
-assertNull(res[599].exec("a\xe2\x80\xa9b ", 1437));
-assertNull(res[600].exec("ax{1234}b", 1438));
-assertToStringEquals("a\nb", res[600].exec("a\nb "), 1439);
-assertNull(res[600].exec("** Failers", 1440));
-assertNull(res[600].exec("ab  ", 1441));
-assertToStringEquals("aXb", res[601].exec("aXb"), 1442);
-assertToStringEquals("a\nX\nXx{1234}b", res[601].exec("a\nX\nXx{1234}b "), 1443);
-assertNull(res[601].exec("** Failers", 1444));
-assertNull(res[601].exec("ab  ", 1445));
-assertNull(res[601].exec("x{de}x{de}", 1446));
-assertNull(res[601].exec("x{123} ", 1447));
-assertToStringEquals("X", res[602].exec("Ax{1ec5}ABCXYZ"), 1448);
-assertNull(res[604].exec("x{c0}x{30f}x{660}x{66c}x{f01}x{1680}<", 1449));
-assertNull(res[604].exec("\npx{300}9!$ < ", 1450));
-assertNull(res[604].exec("** Failers ", 1451));
-assertNull(res[604].exec("apx{300}9!$ < ", 1452));
-assertNull(res[605].exec("X", 1453));
-assertNull(res[605].exec("** Failers ", 1454));
-assertNull(res[605].exec("", 1455));
-assertNull(res[606].exec("9", 1456));
-assertNull(res[606].exec("** Failers ", 1457));
-assertNull(res[606].exec("x{c0}", 1458));
-assertNull(res[607].exec("X", 1459));
-assertNull(res[607].exec("** Failers ", 1460));
-assertNull(res[607].exec("x{30f}", 1461));
-assertNull(res[608].exec("X", 1462));
-assertNull(res[608].exec("** Failers ", 1463));
-assertNull(res[608].exec("x{660}", 1464));
-assertNull(res[609].exec("X", 1465));
-assertNull(res[609].exec("** Failers ", 1466));
-assertNull(res[609].exec("x{66c}", 1467));
-assertNull(res[610].exec("X", 1468));
-assertNull(res[610].exec("** Failers ", 1469));
-assertNull(res[610].exec("x{f01}", 1470));
-assertNull(res[611].exec("X", 1471));
-assertNull(res[611].exec("** Failers ", 1472));
-assertNull(res[611].exec("x{1680}", 1473));
-assertNull(res[612].exec("x{017}", 1474));
-assertNull(res[612].exec("x{09f} ", 1475));
-assertNull(res[612].exec("** Failers", 1476));
-assertNull(res[612].exec("x{0600} ", 1477));
-assertNull(res[613].exec("x{601}", 1478));
-assertNull(res[613].exec("** Failers", 1479));
-assertNull(res[613].exec("x{09f} ", 1480));
-assertNull(res[614].exec("x{e0000}", 1481));
-assertNull(res[614].exec("** Failers", 1482));
-assertNull(res[614].exec("x{09f} ", 1483));
-assertNull(res[615].exec("x{f8ff}", 1484));
-assertNull(res[615].exec("** Failers", 1485));
-assertNull(res[615].exec("x{09f} ", 1486));
-assertNull(res[616].exec("?x{dfff}", 1487));
-assertNull(res[616].exec("** Failers", 1488));
-assertNull(res[616].exec("x{09f} ", 1489));
-assertNull(res[617].exec("a", 1490));
-assertNull(res[617].exec("** Failers ", 1491));
-assertNull(res[617].exec("Z", 1492));
-assertNull(res[617].exec("x{e000}  ", 1493));
-assertNull(res[618].exec("x{2b0}", 1494));
-assertNull(res[618].exec("** Failers", 1495));
-assertNull(res[618].exec("a ", 1496));
-assertNull(res[619].exec("x{1bb}", 1497));
-assertNull(res[619].exec("x{3400}", 1498));
-assertNull(res[619].exec("x{3401}", 1499));
-assertNull(res[619].exec("x{4d00}", 1500));
-assertNull(res[619].exec("x{4db4}", 1501));
-assertNull(res[619].exec("x{4db5}     ", 1502));
-assertNull(res[619].exec("** Failers", 1503));
-assertNull(res[619].exec("a ", 1504));
-assertNull(res[619].exec("x{2b0}", 1505));
-assertNull(res[619].exec("x{4db6} ", 1506));
-assertNull(res[620].exec("x{1c5}", 1507));
-assertNull(res[620].exec("** Failers", 1508));
-assertNull(res[620].exec("a ", 1509));
-assertNull(res[620].exec("x{2b0}", 1510));
-assertNull(res[621].exec("A", 1511));
-assertNull(res[621].exec("** Failers", 1512));
-assertNull(res[621].exec("x{2b0}", 1513));
-assertNull(res[622].exec("x{903}", 1514));
-assertNull(res[622].exec("** Failers", 1515));
-assertNull(res[622].exec("X", 1516));
-assertNull(res[622].exec("x{300}", 1517));
-assertNull(res[622].exec("   ", 1518));
-assertNull(res[623].exec("x{488}", 1519));
-assertNull(res[623].exec("** Failers", 1520));
-assertNull(res[623].exec("X", 1521));
-assertNull(res[623].exec("x{903}", 1522));
-assertNull(res[623].exec("x{300}", 1523));
-assertNull(res[624].exec("x{300}", 1524));
-assertNull(res[624].exec("** Failers", 1525));
-assertNull(res[624].exec("X", 1526));
-assertNull(res[624].exec("x{903}", 1527));
-assertNull(res[624].exec("0123456789x{660}x{661}x{662}x{663}x{664}x{665}x{666}x{667}x{668}x{669}x{66a}", 1528));
-assertNull(res[624].exec("x{6f0}x{6f1}x{6f2}x{6f3}x{6f4}x{6f5}x{6f6}x{6f7}x{6f8}x{6f9}x{6fa}", 1529));
-assertNull(res[624].exec("x{966}x{967}x{968}x{969}x{96a}x{96b}x{96c}x{96d}x{96e}x{96f}x{970}", 1530));
-assertNull(res[624].exec("** Failers", 1531));
-assertNull(res[624].exec("X", 1532));
-assertNull(res[625].exec("x{16ee}", 1533));
-assertNull(res[625].exec("** Failers", 1534));
-assertNull(res[625].exec("X", 1535));
-assertNull(res[625].exec("x{966}", 1536));
-assertNull(res[626].exec("x{b2}", 1537));
-assertNull(res[626].exec("x{b3}", 1538));
-assertNull(res[626].exec("** Failers", 1539));
-assertNull(res[626].exec("X", 1540));
-assertNull(res[626].exec("x{16ee}", 1541));
-assertNull(res[627].exec("_", 1542));
-assertNull(res[627].exec("x{203f}", 1543));
-assertNull(res[627].exec("** Failers", 1544));
-assertNull(res[627].exec("X", 1545));
-assertNull(res[627].exec("-", 1546));
-assertNull(res[627].exec("x{58a}", 1547));
-assertNull(res[628].exec("-", 1548));
-assertNull(res[628].exec("x{58a}", 1549));
-assertNull(res[628].exec("** Failers", 1550));
-assertNull(res[628].exec("X", 1551));
-assertNull(res[628].exec("x{203f}", 1552));
-assertNull(res[629].exec(")", 1553));
-assertNull(res[629].exec("]", 1554));
-assertNull(res[629].exec("}", 1555));
-assertNull(res[629].exec("x{f3b}", 1556));
-assertNull(res[629].exec("** Failers", 1557));
-assertNull(res[629].exec("X", 1558));
-assertNull(res[629].exec("x{203f}", 1559));
-assertNull(res[629].exec("(", 1560));
-assertNull(res[629].exec("[", 1561));
-assertNull(res[629].exec("{", 1562));
-assertNull(res[629].exec("x{f3c}", 1563));
-assertNull(res[630].exec("x{bb}", 1564));
-assertNull(res[630].exec("x{2019}", 1565));
-assertNull(res[630].exec("** Failers", 1566));
-assertNull(res[630].exec("X", 1567));
-assertNull(res[630].exec("x{203f}", 1568));
-assertNull(res[631].exec("x{ab}", 1569));
-assertNull(res[631].exec("x{2018}", 1570));
-assertNull(res[631].exec("** Failers", 1571));
-assertNull(res[631].exec("X", 1572));
-assertNull(res[631].exec("x{203f}", 1573));
-assertNull(res[632].exec("!", 1574));
-assertNull(res[632].exec("x{37e}", 1575));
-assertNull(res[632].exec("** Failers", 1576));
-assertNull(res[632].exec("X", 1577));
-assertNull(res[632].exec("x{203f}", 1578));
-assertNull(res[633].exec("(", 1579));
-assertNull(res[633].exec("[", 1580));
-assertNull(res[633].exec("{", 1581));
-assertNull(res[633].exec("x{f3c}", 1582));
-assertNull(res[633].exec("** Failers", 1583));
-assertNull(res[633].exec("X", 1584));
-assertNull(res[633].exec(")", 1585));
-assertNull(res[633].exec("]", 1586));
-assertNull(res[633].exec("}", 1587));
-assertNull(res[633].exec("x{f3b}", 1588));
-assertNull(res[633].exec("$x{a2}x{a3}x{a4}x{a5}x{a6}", 1589));
-assertNull(res[633].exec("x{9f2}", 1590));
-assertNull(res[633].exec("** Failers", 1591));
-assertNull(res[633].exec("X", 1592));
-assertNull(res[633].exec("x{2c2}", 1593));
-assertNull(res[634].exec("x{2c2}", 1594));
-assertNull(res[634].exec("** Failers", 1595));
-assertNull(res[634].exec("X", 1596));
-assertNull(res[634].exec("x{9f2}", 1597));
-assertNull(res[634].exec("+<|~x{ac}x{2044}", 1598));
-assertNull(res[634].exec("** Failers", 1599));
-assertNull(res[634].exec("X", 1600));
-assertNull(res[634].exec("x{9f2}", 1601));
-assertNull(res[635].exec("x{a6}", 1602));
-assertNull(res[635].exec("x{482} ", 1603));
-assertNull(res[635].exec("** Failers", 1604));
-assertNull(res[635].exec("X", 1605));
-assertNull(res[635].exec("x{9f2}", 1606));
-assertNull(res[636].exec("x{2028}", 1607));
-assertNull(res[636].exec("** Failers", 1608));
-assertNull(res[636].exec("X", 1609));
-assertNull(res[636].exec("x{2029}", 1610));
-assertNull(res[637].exec("x{2029}", 1611));
-assertNull(res[637].exec("** Failers", 1612));
-assertNull(res[637].exec("X", 1613));
-assertNull(res[637].exec("x{2028}", 1614));
-assertNull(res[638].exec("\\ \\", 1615));
-assertNull(res[638].exec("x{a0}", 1616));
-assertNull(res[638].exec("x{1680}", 1617));
-assertNull(res[638].exec("x{180e}", 1618));
-assertNull(res[638].exec("x{2000}", 1619));
-assertNull(res[638].exec("x{2001}     ", 1620));
-assertNull(res[638].exec("** Failers", 1621));
-assertNull(res[638].exec("x{2028}", 1622));
-assertNull(res[638].exec("x{200d} ", 1623));
-assertNull(res[638].exec("  x{660}x{661}x{662}ABC", 1624));
-assertNull(res[638].exec("  x{660}x{661}x{662}ABC", 1625));
-assertNull(res[639].exec("  x{660}x{661}x{662}ABC", 1626));
-assertNull(res[640].exec("  x{660}x{661}x{662}ABC", 1627));
-assertNull(res[641].exec("  x{660}x{661}x{662}ABC", 1628));
-assertNull(res[642].exec("  x{660}x{661}x{662}ABC", 1629));
-assertNull(res[643].exec("  x{660}x{661}x{662}ABC", 1630));
-assertNull(res[644].exec("  x{660}x{661}x{662}ABC", 1631));
-assertNull(res[645].exec("  x{660}x{661}x{662}ABC", 1632));
-assertNull(res[646].exec("  x{660}x{661}x{662}ABC", 1633));
-assertNull(res[647].exec("  x{660}x{661}x{662}ABC", 1634));
-assertNull(res[647].exec("  x{660}x{661}x{662}ABC", 1635));
-assertNull(res[647].exec("  x{660}x{661}x{662}ABC", 1636));
-assertNull(res[647].exec("  ** Failers", 1637));
-assertNull(res[647].exec("  x{660}x{661}x{662}ABC", 1638));
-assertNull(res[648].exec("A", 1639));
-assertNull(res[648].exec("ax{10a0}B ", 1640));
-assertNull(res[648].exec("** Failers ", 1641));
-assertNull(res[648].exec("a", 1642));
-assertNull(res[648].exec("x{1d00}  ", 1643));
-assertNull(res[649].exec("1234", 1644));
-assertNull(res[649].exec("** Failers", 1645));
-assertNull(res[649].exec("ABC ", 1646));
-assertNull(res[650].exec("1234", 1647));
-assertNull(res[650].exec("** Failers", 1648));
-assertNull(res[650].exec("ABC ", 1649));
-assertNull(res[650].exec("A2XYZ", 1650));
-assertNull(res[650].exec("123A5XYZPQR", 1651));
-assertNull(res[650].exec("ABAx{660}XYZpqr", 1652));
-assertNull(res[650].exec("** Failers", 1653));
-assertNull(res[650].exec("AXYZ", 1654));
-assertNull(res[650].exec("XYZ     ", 1655));
-assertNull(res[650].exec("1XYZ", 1656));
-assertNull(res[650].exec("AB=XYZ.. ", 1657));
-assertNull(res[650].exec("XYZ ", 1658));
-assertNull(res[650].exec("** Failers", 1659));
-assertNull(res[650].exec("WXYZ ", 1660));
-assertNull(res[655].exec("1234", 1661));
-assertNull(res[655].exec("1234", 1662));
-assertNull(res[655].exec("12-34", 1663));
-assertToStringEquals("{", res[655].exec("12+x{661}-34  "), 1664);
-assertNull(res[655].exec("** Failers", 1665));
-assertToStringEquals("d", res[655].exec("abcd  "), 1666);
-assertToStringEquals("d", res[656].exec("abcd"), 1667);
-assertNull(res[656].exec("** Failers", 1668));
-assertNull(res[656].exec("1234", 1669));
-assertNull(res[657].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1670));
-assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[657].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1671);
-assertToStringEquals(" ", res[657].exec(" "), 1672);
-assertNull(res[657].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1673));
-assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[657].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1674);
-assertNull(res[658].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1675));
-assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[658].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1676);
-assertNull(res[659].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1677));
-assertNull(res[659].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 1678));
-assertNull(res[660].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1679));
-assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[660].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1680);
-assertNull(res[661].exec("a", 1681));
-assertNull(res[661].exec("A ", 1682));
-assertNull(res[662].exec("a", 1683));
-assertNull(res[662].exec("A ", 1684));
-assertNull(res[663].exec("A", 1685));
-assertNull(res[663].exec("aZ", 1686));
-assertNull(res[663].exec("** Failers", 1687));
-assertNull(res[663].exec("abc   ", 1688));
-assertNull(res[664].exec("A", 1689));
-assertNull(res[664].exec("aZ", 1690));
-assertNull(res[664].exec("** Failers", 1691));
-assertNull(res[664].exec("abc   ", 1692));
-assertNull(res[665].exec("a", 1693));
-assertNull(res[665].exec("Az", 1694));
-assertNull(res[665].exec("** Failers", 1695));
-assertNull(res[665].exec("ABC   ", 1696));
-assertNull(res[666].exec("a", 1697));
-assertNull(res[666].exec("Az", 1698));
-assertNull(res[666].exec("** Failers", 1699));
-assertNull(res[666].exec("ABC   ", 1700));
-assertNull(res[666].exec("x{c0}", 1701));
-assertNull(res[666].exec("x{e0} ", 1702));
-assertNull(res[666].exec("x{c0}", 1703));
-assertNull(res[666].exec("x{e0} ", 1704));
-assertNull(res[666].exec("Ax{391}x{10427}x{ff3a}x{1fb0}", 1705));
-assertNull(res[666].exec("** Failers", 1706));
-assertNull(res[666].exec("ax{391}x{10427}x{ff3a}x{1fb0}   ", 1707));
-assertNull(res[666].exec("Ax{3b1}x{10427}x{ff3a}x{1fb0}", 1708));
-assertNull(res[666].exec("Ax{391}x{1044F}x{ff3a}x{1fb0}", 1709));
-assertNull(res[666].exec("Ax{391}x{10427}x{ff5a}x{1fb0}", 1710));
-assertNull(res[666].exec("Ax{391}x{10427}x{ff3a}x{1fb8}", 1711));
-assertNull(res[666].exec("Ax{391}x{10427}x{ff3a}x{1fb0}", 1712));
-assertNull(res[666].exec("ax{391}x{10427}x{ff3a}x{1fb0}   ", 1713));
-assertNull(res[666].exec("Ax{3b1}x{10427}x{ff3a}x{1fb0}", 1714));
-assertNull(res[666].exec("Ax{391}x{1044F}x{ff3a}x{1fb0}", 1715));
-assertNull(res[666].exec("Ax{391}x{10427}x{ff5a}x{1fb0}", 1716));
-assertNull(res[666].exec("Ax{391}x{10427}x{ff3a}x{1fb8}", 1717));
-assertNull(res[666].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}", 1718));
-assertNull(res[666].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}X", 1719));
-assertNull(res[666].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}X", 1720));
-assertNull(res[666].exec("x{391}", 1721));
-assertNull(res[666].exec("x{ff3a}", 1722));
-assertNull(res[666].exec("x{3b1}", 1723));
-assertNull(res[666].exec("x{ff5a}   ", 1724));
-assertNull(res[666].exec("x{c0}", 1725));
-assertNull(res[666].exec("x{e0} ", 1726));
-assertNull(res[666].exec("x{104}", 1727));
-assertNull(res[666].exec("x{105}", 1728));
-assertNull(res[666].exec("x{109}  ", 1729));
-assertNull(res[666].exec("** Failers", 1730));
-assertNull(res[666].exec("x{100}", 1731));
-assertNull(res[666].exec("x{10a} ", 1732));
-assertNull(res[666].exec("Z", 1733));
-assertNull(res[666].exec("z", 1734));
-assertNull(res[666].exec("x{39c}", 1735));
-assertNull(res[666].exec("x{178}", 1736));
-assertNull(res[666].exec("|", 1737));
-assertNull(res[666].exec("x{80}", 1738));
-assertNull(res[666].exec("x{ff}", 1739));
-assertNull(res[666].exec("x{100}", 1740));
-assertNull(res[666].exec("x{101} ", 1741));
-assertNull(res[666].exec("** Failers", 1742));
-assertNull(res[666].exec("x{102}", 1743));
-assertNull(res[666].exec("Y", 1744));
-assertNull(res[666].exec("y           ", 1745));
-assertNull(res[667].exec("A", 1746));
-assertNull(res[667].exec("Ax{300}BC ", 1747));
-assertNull(res[667].exec("Ax{300}x{301}x{302}BC ", 1748));
-assertNull(res[667].exec("*** Failers", 1749));
-assertNull(res[667].exec("x{300}  ", 1750));
-assertToStringEquals("X", res[668].exec("X123"), 1751);
-assertNull(res[668].exec("*** Failers", 1752));
-assertNull(res[668].exec("AXYZ", 1753));
-assertNull(res[669].exec("Ax{300}x{301}x{302}BCAx{300}x{301} ", 1754));
-assertNull(res[669].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C ", 1755));
-assertNull(res[670].exec("Ax{300}x{301}x{302}BCAx{300}x{301} ", 1756));
-assertNull(res[670].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C ", 1757));
-assertToStringEquals("A,,A", res[671].exec("Ax{300}x{301}x{302}BCAx{300}x{301} "), 1758);
-assertToStringEquals("A,,A", res[671].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 1759);
-assertToStringEquals("A,,A", res[672].exec("Ax{300}x{301}x{302}BCAx{300}x{301} "), 1760);
-assertToStringEquals("A,,A", res[672].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 1761);
-assertNull(res[673].exec("*** Failers", 1762));
-assertNull(res[673].exec("Ax{300}x{301}x{302}", 1763));
-assertNull(res[674].exec("Ax{300}x{301}Bx{300}X", 1764));
-assertNull(res[674].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}", 1765));
-assertNull(res[674].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}X", 1766));
-assertNull(res[674].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X", 1767));
-assertNull(res[675].exec("Ax{300}x{301}Bx{300}X", 1768));
-assertNull(res[675].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}", 1769));
-assertNull(res[675].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}X", 1770));
-assertNull(res[675].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X", 1771));
-assertNull(res[675].exec("x{2e81}x{3007}x{2f804}x{31a0}", 1772));
-assertNull(res[675].exec("** Failers", 1773));
-assertNull(res[675].exec("x{2e7f}  ", 1774));
-assertNull(res[675].exec("x{3105}", 1775));
-assertNull(res[675].exec("** Failers", 1776));
-assertNull(res[675].exec("x{30ff}  ", 1777));
-assertNull(res[676].exec("x{06e9}", 1778));
-assertNull(res[676].exec("x{060b}", 1779));
-assertNull(res[676].exec("** Failers", 1780));
-assertNull(res[676].exec("Xx{06e9}   ", 1781));
-assertNull(res[677].exec("x{2f800}", 1782));
-assertNull(res[677].exec("** Failers", 1783));
-assertNull(res[677].exec("x{a014}", 1784));
-assertNull(res[677].exec("x{a4c6}   ", 1785));
-assertNull(res[678].exec("AXYZ", 1786));
-assertNull(res[678].exec("x{1234}XYZ ", 1787));
-assertNull(res[678].exec("** Failers", 1788));
-assertNull(res[678].exec("X  ", 1789));
-assertNull(res[679].exec("** Failers", 1790));
-assertNull(res[679].exec("AX", 1791));
-assertNull(res[680].exec("XYZ", 1792));
-assertNull(res[680].exec("AXYZ", 1793));
-assertNull(res[680].exec("x{1234}XYZ ", 1794));
-assertNull(res[680].exec("** Failers", 1795));
-assertNull(res[680].exec("ABXYZ   ", 1796));
-assertNull(res[681].exec("XYZ", 1797));
-assertNull(res[681].exec("** Failers", 1798));
-assertNull(res[681].exec("AXYZ", 1799));
-assertNull(res[681].exec("x{1234}XYZ ", 1800));
-assertNull(res[681].exec("ABXYZ   ", 1801));
-assertNull(res[681].exec("AXYZ", 1802));
-assertNull(res[681].exec("x{1234}XYZ", 1803));
-assertNull(res[681].exec("Ax{1234}XYZ", 1804));
-assertNull(res[681].exec("** Failers", 1805));
-assertNull(res[681].exec("XYZ", 1806));
-assertNull(res[681].exec("** Failers", 1807));
-assertNull(res[681].exec("AXYZ", 1808));
-assertNull(res[681].exec("x{1234}XYZ", 1809));
-assertNull(res[681].exec("Ax{1234}XYZ", 1810));
-assertNull(res[681].exec("XYZ", 1811));
-assertNull(res[682].exec("XYZ", 1812));
-assertNull(res[682].exec("AXYZ", 1813));
-assertNull(res[682].exec("x{1234}XYZ", 1814));
-assertNull(res[682].exec("Ax{1234}XYZ", 1815));
-assertNull(res[682].exec("** Failers", 1816));
-assertNull(res[683].exec("XYZ", 1817));
-assertNull(res[683].exec("** Failers", 1818));
-assertNull(res[683].exec("AXYZ", 1819));
-assertNull(res[683].exec("x{1234}XYZ", 1820));
-assertNull(res[683].exec("Ax{1234}XYZ", 1821));
-assertToStringEquals("AX", res[684].exec("AXYZ"), 1822);
-assertNull(res[684].exec("x{1234}XYZ ", 1823));
-assertNull(res[684].exec("** Failers", 1824));
-assertNull(res[684].exec("X  ", 1825));
-assertNull(res[685].exec("** Failers", 1826));
-assertToStringEquals("AX", res[685].exec("AX"), 1827);
-assertToStringEquals("X", res[686].exec("XYZ"), 1828);
-assertToStringEquals("AX", res[686].exec("AXYZ"), 1829);
-assertNull(res[686].exec("x{1234}XYZ ", 1830));
-assertNull(res[686].exec("** Failers", 1831));
-assertNull(res[686].exec("ABXYZ   ", 1832));
-assertToStringEquals("X", res[687].exec("XYZ"), 1833);
-assertNull(res[687].exec("** Failers", 1834));
-assertToStringEquals("AX", res[687].exec("AXYZ"), 1835);
-assertNull(res[687].exec("x{1234}XYZ ", 1836));
-assertNull(res[687].exec("ABXYZ   ", 1837));
-assertToStringEquals("AX", res[688].exec("AXYZ"), 1838);
-assertNull(res[688].exec("x{1234}XYZ", 1839));
-assertNull(res[688].exec("Ax{1234}XYZ", 1840));
-assertNull(res[688].exec("** Failers", 1841));
-assertNull(res[688].exec("XYZ", 1842));
-assertNull(res[689].exec("** Failers", 1843));
-assertToStringEquals("AX", res[689].exec("AXYZ"), 1844);
-assertNull(res[689].exec("x{1234}XYZ", 1845));
-assertNull(res[689].exec("Ax{1234}XYZ", 1846));
-assertNull(res[689].exec("XYZ", 1847));
-assertToStringEquals("X", res[690].exec("XYZ"), 1848);
-assertToStringEquals("AX", res[690].exec("AXYZ"), 1849);
-assertNull(res[690].exec("x{1234}XYZ", 1850));
-assertNull(res[690].exec("Ax{1234}XYZ", 1851));
-assertNull(res[690].exec("** Failers", 1852));
-assertToStringEquals("X", res[691].exec("XYZ"), 1853);
-assertNull(res[691].exec("** Failers", 1854));
-assertToStringEquals("AX", res[691].exec("AXYZ"), 1855);
-assertNull(res[691].exec("x{1234}XYZ", 1856));
-assertNull(res[691].exec("Ax{1234}XYZ", 1857));
-assertNull(res[692].exec("abcdefgh", 1858));
-assertNull(res[692].exec("x{1234}\n\x0dx{3456}xyz ", 1859));
-assertNull(res[693].exec("abcdefgh", 1860));
-assertNull(res[693].exec("x{1234}\n\x0dx{3456}xyz ", 1861));
-assertNull(res[694].exec("** Failers", 1862));
-assertNull(res[694].exec("abcdefgh", 1863));
-assertNull(res[694].exec("x{1234}\n\x0dx{3456}xyz ", 1864));
-assertNull(res[695].exec(" AXY", 1865));
-assertNull(res[695].exec(" aXY", 1866));
-assertNull(res[695].exec(" x{1c5}XY", 1867));
-assertNull(res[695].exec(" ** Failers", 1868));
-assertNull(res[695].exec(" x{1bb}XY", 1869));
-assertNull(res[695].exec(" x{2b0}XY", 1870));
-assertNull(res[695].exec(" !XY      ", 1871));
-assertNull(res[696].exec(" AXY", 1872));
-assertNull(res[696].exec(" aXY", 1873));
-assertNull(res[696].exec(" x{1c5}XY", 1874));
-assertNull(res[696].exec(" ** Failers", 1875));
-assertNull(res[696].exec(" x{1bb}XY", 1876));
-assertNull(res[696].exec(" x{2b0}XY", 1877));
-assertNull(res[696].exec(" !XY      ", 1878));
-assertNull(res[696].exec(" AXY", 1879));
-assertNull(res[696].exec(" aXY", 1880));
-assertNull(res[696].exec(" AbcdeXyz ", 1881));
-assertNull(res[696].exec(" x{1c5}AbXY", 1882));
-assertNull(res[696].exec(" abcDEXypqreXlmn ", 1883));
-assertNull(res[696].exec(" ** Failers", 1884));
-assertNull(res[696].exec(" x{1bb}XY", 1885));
-assertNull(res[696].exec(" x{2b0}XY", 1886));
-assertNull(res[696].exec(" !XY      ", 1887));
-assertNull(res[697].exec(" AXY", 1888));
-assertNull(res[697].exec(" aXY", 1889));
-assertNull(res[697].exec(" AbcdeXyz ", 1890));
-assertNull(res[697].exec(" x{1c5}AbXY", 1891));
-assertNull(res[697].exec(" abcDEXypqreXlmn ", 1892));
-assertNull(res[697].exec(" ** Failers", 1893));
-assertNull(res[697].exec(" x{1bb}XY", 1894));
-assertNull(res[697].exec(" x{2b0}XY", 1895));
-assertNull(res[697].exec(" !XY      ", 1896));
-assertNull(res[697].exec(" AXY", 1897));
-assertNull(res[697].exec(" aXY", 1898));
-assertNull(res[697].exec(" AbcdeXyz ", 1899));
-assertNull(res[697].exec(" x{1c5}AbXY", 1900));
-assertNull(res[697].exec(" abcDEXypqreXlmn ", 1901));
-assertNull(res[697].exec(" ** Failers", 1902));
-assertNull(res[697].exec(" x{1bb}XY", 1903));
-assertNull(res[697].exec(" x{2b0}XY", 1904));
-assertNull(res[697].exec(" !XY      ", 1905));
-assertNull(res[698].exec(" AXY", 1906));
-assertNull(res[698].exec(" aXY", 1907));
-assertNull(res[698].exec(" AbcdeXyz ", 1908));
-assertNull(res[698].exec(" x{1c5}AbXY", 1909));
-assertNull(res[698].exec(" abcDEXypqreXlmn ", 1910));
-assertNull(res[698].exec(" ** Failers", 1911));
-assertNull(res[698].exec(" x{1bb}XY", 1912));
-assertNull(res[698].exec(" x{2b0}XY", 1913));
-assertNull(res[698].exec(" !XY      ", 1914));
-assertNull(res[699].exec(" !XY", 1915));
-assertNull(res[699].exec(" x{1bb}XY", 1916));
-assertNull(res[699].exec(" x{2b0}XY", 1917));
-assertNull(res[699].exec(" ** Failers", 1918));
-assertNull(res[699].exec(" x{1c5}XY", 1919));
-assertNull(res[699].exec(" AXY      ", 1920));
-assertNull(res[700].exec(" !XY", 1921));
-assertNull(res[700].exec(" x{1bb}XY", 1922));
-assertNull(res[700].exec(" x{2b0}XY", 1923));
-assertNull(res[700].exec(" ** Failers", 1924));
-assertNull(res[700].exec(" x{1c5}XY", 1925));
-assertNull(res[700].exec(" AXY      ", 1926));
-assertNull(res[701].exec("\xa0!", 1927));
-assertNull(res[701].exec("AabcabcYZ    ", 1928));
-assertToStringEquals("L=abcX,L=abc,abc", res[702].exec("L=abcX"), 1929);
-assertNull(res[702].exec("x{c0}", 1930));
-assertNull(res[702].exec("x{e0} ", 1931));
-assertNull(res[702].exec("x{c0}", 1932));
-assertNull(res[702].exec("x{e0} ", 1933));
-assertNull(res[703].exec("x{1b00}x{12000}x{7c0}x{a840}x{10900}", 1934));
-assertNull(res[706].exec("123abcdefg", 1935));
-assertNull(res[706].exec("123abc\xc4\xc5zz", 1936));
-assertNull(res[710].exec("A\x80", 1937));
-assertNull(res[725].exec("x{60e} ", 1938));
-assertNull(res[725].exec("x{656} ", 1939));
-assertNull(res[725].exec("x{657} ", 1940));
-assertNull(res[725].exec("x{658} ", 1941));
-assertNull(res[725].exec("x{659} ", 1942));
-assertNull(res[725].exec("x{65a} ", 1943));
-assertNull(res[725].exec("x{65b} ", 1944));
-assertNull(res[725].exec("x{65c} ", 1945));
-assertNull(res[725].exec("x{65d} ", 1946));
-assertNull(res[725].exec("x{65e} ", 1947));
-assertNull(res[725].exec("x{66a} ", 1948));
-assertNull(res[725].exec("x{6e9} ", 1949));
-assertNull(res[725].exec("x{6ef}", 1950));
-assertNull(res[725].exec("x{6fa}  ", 1951));
-assertNull(res[725].exec("** Failers", 1952));
-assertNull(res[725].exec("x{600}", 1953));
-assertNull(res[725].exec("x{650}", 1954));
-assertNull(res[725].exec("x{651}  ", 1955));
-assertNull(res[725].exec("x{652}  ", 1956));
-assertNull(res[725].exec("x{653}  ", 1957));
-assertNull(res[725].exec("x{654} ", 1958));
-assertNull(res[725].exec("x{655} ", 1959));
-assertNull(res[725].exec("x{65f}  ", 1960));
-assertNull(res[726].exec("x{1d2b} ", 1961));
-assertNull(res[727].exec("x{589}", 1962));
-assertNull(res[727].exec("x{60c}", 1963));
-assertNull(res[727].exec("x{61f}  ", 1964));
-assertNull(res[727].exec("x{964}", 1965));
-assertNull(res[727].exec("x{965}  ", 1966));
-assertNull(res[727].exec("x{970}  ", 1967));
-assertNull(res[728].exec("x{64b}", 1968));
-assertNull(res[728].exec("x{654}", 1969));
-assertNull(res[728].exec("x{655}", 1970));
-assertNull(res[728].exec("x{200c} ", 1971));
-assertNull(res[728].exec("** Failers", 1972));
-assertNull(res[728].exec("x{64a}", 1973));
-assertNull(res[728].exec("x{656}     ", 1974));
-assertNull(res[729].exec("x{10450}", 1975));
-assertNull(res[729].exec("x{1047f}", 1976));
-assertNull(res[730].exec("x{10400}", 1977));
-assertNull(res[730].exec("x{1044f}", 1978));
-assertNull(res[731].exec("x{10480}", 1979));
-assertNull(res[731].exec("x{1049d}", 1980));
-assertNull(res[731].exec("x{104a0}", 1981));
-assertNull(res[731].exec("x{104a9}", 1982));
-assertNull(res[731].exec("** Failers", 1983));
-assertNull(res[731].exec("x{1049e}", 1984));
-assertNull(res[731].exec("x{1049f}", 1985));
-assertNull(res[731].exec("x{104aa}           ", 1986));
-assertNull(res[731].exec("\xe2\x80\xa8\xe2\x80\xa8", 1987));
-assertNull(res[731].exec("x{2028}x{2028}x{2028}", 1988));
-assertNull(res[732].exec("x{c0}x{e0}x{116}x{117}", 1989));
-assertNull(res[732].exec("x{c0}x{e0}x{116}x{117}", 1990));
-assertNull(res[733].exec("x{102A4}x{AA52}x{A91D}x{1C46}x{10283}x{1092E}x{1C6B}x{A93B}x{A8BF}x{1BA0}x{A50A}====", 1991));
-assertNull(res[733].exec("x{a77d}x{1d79}", 1992));
-assertNull(res[733].exec("x{1d79}x{a77d} ", 1993));
-assertNull(res[733].exec("x{a77d}x{1d79}", 1994));
-assertNull(res[733].exec("** Failers ", 1995));
-assertNull(res[733].exec("x{1d79}x{a77d} ", 1996));
-assertToStringEquals("AA,A", res[734].exec("AA"), 1997);
-assertToStringEquals("Aa,A", res[734].exec("Aa"), 1998);
-assertToStringEquals("aa,a", res[734].exec("aa"), 1999);
-assertToStringEquals("aA,a", res[734].exec("aA"), 2000);
-assertNull(res[734].exec("x{de}x{de}", 2001));
-assertNull(res[734].exec("x{de}x{fe}", 2002));
-assertNull(res[734].exec("x{fe}x{fe}", 2003));
-assertNull(res[734].exec("x{fe}x{de}", 2004));
-assertNull(res[734].exec("x{10a}x{10a}", 2005));
-assertNull(res[734].exec("x{10a}x{10b}", 2006));
-assertNull(res[734].exec("x{10b}x{10b}", 2007));
-assertNull(res[734].exec("x{10b}x{10a}", 2008));
-assertToStringEquals("abc", res[736].exec("abc"), 2009);
-assertToStringEquals("abc", res[737].exec("abc"), 2010);
-assertToStringEquals("abbbbc", res[737].exec("abbbbc"), 2011);
-assertToStringEquals("ac", res[737].exec("ac"), 2012);
-assertToStringEquals("abc", res[738].exec("abc"), 2013);
-assertToStringEquals("abbbbbbc", res[738].exec("abbbbbbc"), 2014);
-assertNull(res[738].exec("*** Failers ", 2015));
-assertNull(res[738].exec("ac", 2016));
-assertNull(res[738].exec("ab", 2017));
-assertToStringEquals("a", res[739].exec("a"), 2018);
-assertToStringEquals("aaaaaaaaaaaaaaaaa", res[739].exec("aaaaaaaaaaaaaaaaa"), 2019);
-assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[739].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "), 2020);
-assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[739].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaF "), 2021);
-assertToStringEquals("a,a", res[740].exec("a"), 2022);
-assertToStringEquals("a,a", res[740].exec("abcd"), 2023);
-assertToStringEquals("a,a", res[740].exec("african"), 2024);
-assertToStringEquals("abc", res[741].exec("abcdef"), 2025);
-assertNull(res[741].exec("*** Failers", 2026));
-assertNull(res[741].exec("xyzabc", 2027));
-assertNull(res[741].exec("xyz\nabc    ", 2028));
-assertToStringEquals("abc", res[742].exec("abcdef"), 2029);
-assertToStringEquals("abc", res[742].exec("xyz\nabc    "), 2030);
-assertNull(res[742].exec("*** Failers", 2031));
-assertNull(res[742].exec("xyzabc", 2032));
-assertNull(res[743].exec("abcdef", 2033));
-assertNull(res[743].exec("*** Failers", 2034));
-assertNull(res[743].exec("xyzabc", 2035));
-assertNull(res[743].exec("xyz\nabc    ", 2036));
-assertNull(res[744].exec("abcdef", 2037));
-assertNull(res[744].exec("*** Failers", 2038));
-assertNull(res[744].exec("xyzabc", 2039));
-assertNull(res[744].exec("xyz\nabc    ", 2040));
-assertNull(res[745].exec("abcdef", 2041));
-assertNull(res[745].exec("xyzabc>3", 2042));
-assertNull(res[745].exec("*** Failers", 2043));
-assertNull(res[745].exec("xyzabc    ", 2044));
-assertNull(res[745].exec("xyzabc>2 ", 2045));
-assertToStringEquals("x9yzz", res[746].exec("x9yzz"), 2046);
-assertToStringEquals("x0y+z", res[746].exec("x0y+z"), 2047);
-assertNull(res[746].exec("*** Failers", 2048));
-assertNull(res[746].exec("xyz", 2049));
-assertNull(res[746].exec("xxy0z     ", 2050));
-assertToStringEquals("x yzz", res[747].exec("x yzz"), 2051);
-assertToStringEquals("x y+z", res[747].exec("x y+z"), 2052);
-assertNull(res[747].exec("*** Failers", 2053));
-assertNull(res[747].exec("xyz", 2054));
-assertNull(res[747].exec("xxyyz", 2055));
-assertToStringEquals("xxy+z", res[748].exec("xxy+z"), 2056);
-assertNull(res[748].exec("*** Failers", 2057));
-assertNull(res[748].exec("xxy0z", 2058));
-assertNull(res[748].exec("x+y+z         ", 2059));
-assertToStringEquals("x+y", res[749].exec("x+y"), 2060);
-assertToStringEquals("x-y", res[749].exec("x-y"), 2061);
-assertNull(res[749].exec("*** Failers", 2062));
-assertNull(res[749].exec("x\ny", 2063));
-assertToStringEquals("x+y", res[750].exec("x+y"), 2064);
-assertToStringEquals("x-y", res[750].exec("x-y"), 2065);
-assertNull(res[750].exec("x\ny", 2066));
-assertNull(res[750].exec("a+bc+dp+q", 2067));
-assertNull(res[750].exec("a+bc\ndp+q", 2068));
-assertNull(res[750].exec("x\nyp+q ", 2069));
-assertNull(res[750].exec("*** Failers ", 2070));
-assertNull(res[750].exec("a\nbc\ndp+q", 2071));
-assertNull(res[750].exec("a+bc\ndp\nq", 2072));
-assertNull(res[750].exec("x\nyp\nq ", 2073));
-assertNull(res[751].exec("ba0", 2074));
-assertNull(res[751].exec("*** Failers", 2075));
-assertNull(res[751].exec("ba0\n", 2076));
-assertNull(res[751].exec("ba0\ncd   ", 2077));
-assertNull(res[752].exec("ba0", 2078));
-assertNull(res[752].exec("*** Failers", 2079));
-assertNull(res[752].exec("ba0\n", 2080));
-assertNull(res[752].exec("ba0\ncd   ", 2081));
-assertNull(res[753].exec("ba0", 2082));
-assertNull(res[753].exec("ba0\n", 2083));
-assertNull(res[753].exec("*** Failers", 2084));
-assertNull(res[753].exec("ba0\ncd   ", 2085));
-assertNull(res[754].exec("ba0", 2086));
-assertNull(res[754].exec("ba0\n", 2087));
-assertNull(res[754].exec("*** Failers", 2088));
-assertNull(res[754].exec("ba0\ncd   ", 2089));
-assertToStringEquals("a0", res[755].exec("ba0"), 2090);
-assertNull(res[755].exec("ba0\n", 2091));
-assertNull(res[755].exec("*** Failers", 2092));
-assertNull(res[755].exec("ba0\ncd   ", 2093));
-assertToStringEquals("a0", res[756].exec("ba0"), 2094);
-assertToStringEquals("a0", res[756].exec("ba0\n"), 2095);
-assertToStringEquals("a0", res[756].exec("ba0\ncd   "), 2096);
-assertNull(res[756].exec("*** Failers", 2097));
-assertToStringEquals("abc", res[757].exec("abc"), 2098);
-assertToStringEquals("aBc", res[757].exec("aBc"), 2099);
-assertToStringEquals("ABC", res[757].exec("ABC"), 2100);
-assertToStringEquals("b", res[758].exec("abcd"), 2101);
-assertToStringEquals("abz", res[759].exec("abz"), 2102);
-assertToStringEquals("abb", res[759].exec("abbz"), 2103);
-assertToStringEquals("az", res[759].exec("azz  "), 2104);
-assertToStringEquals("yz", res[760].exec("ayzq"), 2105);
-assertToStringEquals("xyz", res[760].exec("axyzq"), 2106);
-assertToStringEquals("xxyz", res[760].exec("axxyz"), 2107);
-assertToStringEquals("xxxyz", res[760].exec("axxxyzq"), 2108);
-assertToStringEquals("xxxyz", res[760].exec("axxxxyzq"), 2109);
-assertNull(res[760].exec("*** Failers", 2110));
-assertNull(res[760].exec("ax", 2111));
-assertNull(res[760].exec("axx     ", 2112));
-assertNull(res[760].exec("  ", 2113));
-assertToStringEquals("xxxyz", res[761].exec("axxxyzq"), 2114);
-assertToStringEquals("xxxyz", res[761].exec("axxxxyzq"), 2115);
-assertNull(res[761].exec("*** Failers", 2116));
-assertNull(res[761].exec("ax", 2117));
-assertNull(res[761].exec("axx     ", 2118));
-assertNull(res[761].exec("ayzq", 2119));
-assertNull(res[761].exec("axyzq", 2120));
-assertNull(res[761].exec("axxyz", 2121));
-assertNull(res[761].exec("  ", 2122));
-assertToStringEquals("xxyz", res[762].exec("axxyz"), 2123);
-assertToStringEquals("xxxyz", res[762].exec("axxxyzq"), 2124);
-assertToStringEquals("xxxyz", res[762].exec("axxxxyzq"), 2125);
-assertNull(res[762].exec("*** Failers", 2126));
-assertNull(res[762].exec("ax", 2127));
-assertNull(res[762].exec("axx     ", 2128));
-assertNull(res[762].exec("ayzq", 2129));
-assertNull(res[762].exec("axyzq", 2130));
-assertNull(res[762].exec("  ", 2131));
-assertToStringEquals("b", res[763].exec("bac"), 2132);
-assertToStringEquals("bcdef", res[763].exec("bcdefax"), 2133);
-assertToStringEquals("*** F", res[763].exec("*** Failers"), 2134);
-assertToStringEquals("   ", res[763].exec("aaaaa   "), 2135);
-assertToStringEquals("b", res[764].exec("bac"), 2136);
-assertToStringEquals("bcdef", res[764].exec("bcdefax"), 2137);
-assertToStringEquals("*** F", res[764].exec("*** Failers"), 2138);
-assertToStringEquals("", res[764].exec("aaaaa   "), 2139);
-assertToStringEquals("xyz", res[765].exec("xyz"), 2140);
-assertToStringEquals("wxyz", res[765].exec("awxyza"), 2141);
-assertToStringEquals("bcdef", res[765].exec("abcdefa"), 2142);
-assertToStringEquals("bcdef", res[765].exec("abcdefghijk"), 2143);
-assertToStringEquals("*** F", res[765].exec("*** Failers"), 2144);
-assertNull(res[765].exec("axya", 2145));
-assertNull(res[765].exec("axa", 2146));
-assertToStringEquals("     ", res[765].exec("aaaaa         "), 2147);
-assertToStringEquals("1234", res[766].exec("1234b567"), 2148);
-assertToStringEquals("", res[766].exec("xyz"), 2149);
-assertToStringEquals("a", res[767].exec("a1234b567"), 2150);
-assertToStringEquals("xyz", res[767].exec("xyz"), 2151);
-assertToStringEquals(" ", res[767].exec(" "), 2152);
-assertToStringEquals("1234", res[768].exec("ab1234c56"), 2153);
-assertNull(res[768].exec("*** Failers", 2154));
-assertNull(res[768].exec("xyz", 2155));
-assertToStringEquals("ab", res[769].exec("ab123c56"), 2156);
-assertToStringEquals("*** Failers", res[769].exec("*** Failers"), 2157);
-assertNull(res[769].exec("789", 2158));
-assertToStringEquals("5A", res[770].exec("045ABC"), 2159);
-assertToStringEquals("A", res[770].exec("ABC"), 2160);
-assertNull(res[770].exec("*** Failers", 2161));
-assertNull(res[770].exec("XYZ", 2162));
-assertToStringEquals("A", res[771].exec("ABC"), 2163);
-assertToStringEquals("BA", res[771].exec("BAC"), 2164);
-assertToStringEquals("A", res[771].exec("9ABC             "), 2165);
-assertNull(res[771].exec("*** Failers", 2166));
-assertToStringEquals("aaaa", res[772].exec("aaaa"), 2167);
-assertToStringEquals("xyz", res[773].exec("xyz"), 2168);
-assertToStringEquals("ggggggggxyz", res[773].exec("ggggggggxyz"), 2169);
-assertToStringEquals("abcdxyz", res[774].exec("abcdxyz"), 2170);
-assertToStringEquals("axyz", res[774].exec("axyz"), 2171);
-assertNull(res[774].exec("*** Failers", 2172));
-assertNull(res[774].exec("xyz", 2173));
-assertToStringEquals("xyz", res[775].exec("xyz"), 2174);
-assertToStringEquals("cxyz", res[775].exec("cxyz       "), 2175);
-assertToStringEquals("12X", res[776].exec("12X"), 2176);
-assertToStringEquals("123X", res[776].exec("123X"), 2177);
-assertNull(res[776].exec("*** Failers", 2178));
-assertNull(res[776].exec("X", 2179));
-assertNull(res[776].exec("1X", 2180));
-assertNull(res[776].exec("1234X     ", 2181));
-assertToStringEquals("a4", res[777].exec("a45"), 2182);
-assertToStringEquals("b9", res[777].exec("b93"), 2183);
-assertToStringEquals("c9", res[777].exec("c99z"), 2184);
-assertToStringEquals("d0", res[777].exec("d04"), 2185);
-assertNull(res[777].exec("*** Failers", 2186));
-assertNull(res[777].exec("e45", 2187));
-assertNull(res[777].exec("abcd      ", 2188));
-assertNull(res[777].exec("abcd1234", 2189));
-assertNull(res[777].exec("1234  ", 2190));
-assertToStringEquals("a4", res[778].exec("a45"), 2191);
-assertToStringEquals("b9", res[778].exec("b93"), 2192);
-assertToStringEquals("c9", res[778].exec("c99z"), 2193);
-assertToStringEquals("d0", res[778].exec("d04"), 2194);
-assertToStringEquals("abcd1", res[778].exec("abcd1234"), 2195);
-assertToStringEquals("1", res[778].exec("1234  "), 2196);
-assertNull(res[778].exec("*** Failers", 2197));
-assertNull(res[778].exec("e45", 2198));
-assertNull(res[778].exec("abcd      ", 2199));
-assertToStringEquals("a4", res[779].exec("a45"), 2200);
-assertToStringEquals("b9", res[779].exec("b93"), 2201);
-assertToStringEquals("c9", res[779].exec("c99z"), 2202);
-assertToStringEquals("d0", res[779].exec("d04"), 2203);
-assertToStringEquals("abcd1", res[779].exec("abcd1234"), 2204);
-assertNull(res[779].exec("*** Failers", 2205));
-assertNull(res[779].exec("1234  ", 2206));
-assertNull(res[779].exec("e45", 2207));
-assertNull(res[779].exec("abcd      ", 2208));
-assertToStringEquals("aX", res[780].exec("aX"), 2209);
-assertToStringEquals("aaX", res[780].exec("aaX "), 2210);
-assertToStringEquals("a4", res[781].exec("a45"), 2211);
-assertToStringEquals("b9", res[781].exec("b93"), 2212);
-assertToStringEquals("c9", res[781].exec("c99z"), 2213);
-assertToStringEquals("d0", res[781].exec("d04"), 2214);
-assertToStringEquals("1", res[781].exec("1234  "), 2215);
-assertNull(res[781].exec("*** Failers", 2216));
-assertNull(res[781].exec("abcd1234", 2217));
-assertNull(res[781].exec("e45", 2218));
-assertToStringEquals("ab4", res[782].exec("ab45"), 2219);
-assertToStringEquals("bcd9", res[782].exec("bcd93"), 2220);
-assertNull(res[782].exec("*** Failers", 2221));
-assertNull(res[782].exec("1234 ", 2222));
-assertNull(res[782].exec("a36 ", 2223));
-assertNull(res[782].exec("abcd1234", 2224));
-assertNull(res[782].exec("ee45", 2225));
-assertToStringEquals("abc4,abc", res[783].exec("abc45"), 2226);
-assertToStringEquals("abcabcabc4,abc", res[783].exec("abcabcabc45"), 2227);
-assertToStringEquals("4,", res[783].exec("42xyz "), 2228);
-assertNull(res[783].exec("*** Failers", 2229));
-assertToStringEquals("abc4,abc", res[784].exec("abc45"), 2230);
-assertToStringEquals("abcabcabc4,abc", res[784].exec("abcabcabc45"), 2231);
-assertNull(res[784].exec("*** Failers", 2232));
-assertNull(res[784].exec("42xyz ", 2233));
-assertToStringEquals("abc4,abc", res[785].exec("abc45"), 2234);
-assertToStringEquals("4,", res[785].exec("42xyz "), 2235);
-assertNull(res[785].exec("*** Failers", 2236));
-assertNull(res[785].exec("abcabcabc45", 2237));
-assertToStringEquals("abcabc4,abc", res[786].exec("abcabc45"), 2238);
-assertToStringEquals("abcabcabc4,abc", res[786].exec("abcabcabc45"), 2239);
-assertNull(res[786].exec("*** Failers", 2240));
-assertNull(res[786].exec("abcabcabcabc45", 2241));
-assertNull(res[786].exec("abc45", 2242));
-assertNull(res[786].exec("42xyz ", 2243));
-assertNull(res[786].exec("1abc2abc3456", 2244));
-assertNull(res[786].exec("1abc2xyz3456 ", 2245));
-assertToStringEquals("ab=ab,ab,ab", res[787].exec("ab=ab"), 2246);
-assertToStringEquals("ab=ab,ab,ab", res[787].exec("ab=ab"), 2247);
-assertNull(res[787].exec("abc", 2248));
-assertNull(res[787].exec("a(b)c", 2249));
-assertNull(res[787].exec("a(b(c))d  ", 2250));
-assertNull(res[787].exec("*** Failers)", 2251));
-assertNull(res[787].exec("a(b(c)d  ", 2252));
-assertNull(res[787].exec(">abc>123<xyz<", 2253));
-assertNull(res[787].exec(">abc>1(2)3<xyz<", 2254));
-assertNull(res[787].exec(">abc>(1(2)3)<xyz<", 2255));
-assertNull(res[787].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876", 2256));
-assertNull(res[787].exec("*** Failers ", 2257));
-assertNull(res[787].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 2258));
-assertNull(res[787].exec("<>", 2259));
-assertNull(res[787].exec("<abcd>", 2260));
-assertNull(res[787].exec("<abc <123> hij>", 2261));
-assertNull(res[787].exec("<abc <def> hij>", 2262));
-assertNull(res[787].exec("<abc<>def> ", 2263));
-assertNull(res[787].exec("<abc<>      ", 2264));
-assertNull(res[787].exec("*** Failers", 2265));
-assertNull(res[787].exec("<abc", 2266));
-assertNull(res[787].exec("abc:                          ", 2267));
-assertNull(res[787].exec("12                             ", 2268));
-assertNull(res[787].exec("*** Failers                     ", 2269));
-assertNull(res[787].exec("123                       ", 2270));
-assertNull(res[787].exec("xyz                        ", 2271));
-assertNull(res[787].exec("                            ", 2272));
-assertNull(res[787].exec("abc:                        ", 2273));
-assertNull(res[787].exec("12         ", 2274));
-assertNull(res[787].exec("*** Failers", 2275));
-assertNull(res[787].exec("123", 2276));
-assertNull(res[787].exec("xyz    ", 2277));
-assertNull(res[788].exec("abcde:                          ", 2278));
-assertNull(res[788].exec("*** Failers                     ", 2279));
-assertNull(res[788].exec("abc.. ", 2280));
-assertNull(res[788].exec("123                       ", 2281));
-assertNull(res[788].exec("vwxyz                        ", 2282));
-assertNull(res[788].exec("                            ", 2283));
-assertNull(res[789].exec("12         ", 2284));
-assertNull(res[789].exec("*** Failers", 2285));
-assertNull(res[789].exec("abcde:", 2286));
-assertNull(res[789].exec("abc..  ", 2287));
-assertNull(res[789].exec("123", 2288));
-assertNull(res[789].exec("vwxyz    ", 2289));
-assertNull(res[789].exec("abc12345", 2290));
-assertNull(res[789].exec("wxy123z", 2291));
-assertNull(res[789].exec("*** Failers", 2292));
-assertNull(res[789].exec("123abc", 2293));
-assertNull(res[789].exec("123abc", 2294));
-assertNull(res[789].exec("mno123456 ", 2295));
-assertNull(res[789].exec("*** Failers", 2296));
-assertNull(res[789].exec("abc12345", 2297));
-assertNull(res[789].exec("wxy123z", 2298));
-assertNull(res[789].exec("abcxyz", 2299));
-assertNull(res[789].exec("123abcxyz999 ", 2300));
-assertToStringEquals("abc", res[791].exec("abcdef"), 2301);
-assertNull(res[791].exec("*** Failers", 2302));
-assertToStringEquals("abc", res[791].exec("abcdefB  "), 2303);
-assertToStringEquals(",", res[792].exec("bcd"), 2304);
-assertToStringEquals("aaa,aaa", res[792].exec("aaabcd"), 2305);
-assertToStringEquals(",", res[792].exec("xyz"), 2306);
-assertToStringEquals(",", res[792].exec("xyzN  "), 2307);
-assertToStringEquals(",", res[792].exec("*** Failers"), 2308);
-assertToStringEquals(",", res[792].exec("bcdN   "), 2309);
-assertToStringEquals("xyz", res[793].exec("xyz"), 2310);
-assertNull(res[793].exec("xyz\n", 2311));
-assertNull(res[793].exec("*** Failers", 2312));
-assertNull(res[793].exec("xyzZ", 2313));
-assertNull(res[793].exec("xyz\nZ    ", 2314));
-assertToStringEquals("xyz", res[794].exec("xyz"), 2315);
-assertToStringEquals("xyz", res[794].exec("xyz\n "), 2316);
-assertToStringEquals("xyz", res[794].exec("abcxyz\npqr "), 2317);
-assertToStringEquals("xyz", res[794].exec("abcxyz\npqrZ "), 2318);
-assertToStringEquals("xyz", res[794].exec("xyz\nZ    "), 2319);
-assertNull(res[794].exec("*** Failers", 2320));
-assertNull(res[794].exec("xyzZ", 2321));
-assertNull(res[795].exec("abcdef", 2322));
-assertNull(res[795].exec("defabcxyz>3 ", 2323));
-assertNull(res[795].exec("*** Failers ", 2324));
-assertNull(res[795].exec("defabcxyz", 2325));
-assertNull(res[796].exec("abP", 2326));
-assertNull(res[796].exec("abcdeP", 2327));
-assertToStringEquals("abcdef", res[796].exec("abcdefP"), 2328);
-assertNull(res[796].exec("*** Failers", 2329));
-assertNull(res[796].exec("abxP    ", 2330));
-assertNull(res[797].exec("aP", 2331));
-assertNull(res[797].exec("aaP", 2332));
-assertNull(res[797].exec("aa2P ", 2333));
-assertNull(res[797].exec("aaaP", 2334));
-assertNull(res[797].exec("aaa23P ", 2335));
-assertNull(res[797].exec("aaaa12345P", 2336));
-assertToStringEquals("aa0z", res[797].exec("aa0zP"), 2337);
-assertToStringEquals("aaaa4444444444444z", res[797].exec("aaaa4444444444444zP "), 2338);
-assertNull(res[797].exec("*** Failers", 2339));
-assertNull(res[797].exec("azP ", 2340));
-assertNull(res[797].exec("aaaaaP ", 2341));
-assertNull(res[797].exec("a56P ", 2342));
-assertNull(res[799].exec("adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkjPZ", 2343));
-assertNull(res[799].exec("lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefaPBZ", 2344));
-assertNull(res[799].exec("cdabbbbbbbbPRBZ", 2345));
-assertNull(res[799].exec("efabbbbbbbbbbbbbbbbPRBZ", 2346));
-assertNull(res[799].exec("bbbbbbbbbbbbcdXyasdfadfPRBZ    ", 2347));
-assertNull(res[799].exec("abc", 2348));
-assertNull(res[799].exec("** Failers", 2349));
-assertNull(res[799].exec("def  ", 2350));
-assertToStringEquals("the quick brown fox", res[800].exec("the quick brown fox"), 2351);
-assertNull(res[800].exec("The quick brown FOX", 2352));
-assertToStringEquals("the quick brown fox", res[800].exec("What do you know about the quick brown fox?"), 2353);
-assertNull(res[800].exec("What do you know about THE QUICK BROWN FOX?", 2354));
-assertToStringEquals("the quick brown fox", res[801].exec("the quick brown fox"), 2355);
-assertToStringEquals("The quick brown FOX", res[801].exec("The quick brown FOX"), 2356);
-assertToStringEquals("the quick brown fox", res[801].exec("What do you know about the quick brown fox?"), 2357);
-assertToStringEquals("THE QUICK BROWN FOX", res[801].exec("What do you know about THE QUICK BROWN FOX?"), 2358);
-assertToStringEquals("abcd\x09\n\x0d\x0cae9;$\\?caxyz", res[802].exec("abcd\x09\n\x0d\x0cae9;$\\?caxyz"), 2359);
-assertToStringEquals("abxyzpqrrrabbxyyyypqAzz", res[803].exec("abxyzpqrrrabbxyyyypqAzz"), 2360);
-assertToStringEquals("abxyzpqrrrabbxyyyypqAzz", res[803].exec("abxyzpqrrrabbxyyyypqAzz"), 2361);
-assertToStringEquals("aabxyzpqrrrabbxyyyypqAzz", res[803].exec("aabxyzpqrrrabbxyyyypqAzz"), 2362);
-assertToStringEquals("aaabxyzpqrrrabbxyyyypqAzz", res[803].exec("aaabxyzpqrrrabbxyyyypqAzz"), 2363);
-assertToStringEquals("aaaabxyzpqrrrabbxyyyypqAzz", res[803].exec("aaaabxyzpqrrrabbxyyyypqAzz"), 2364);
-assertToStringEquals("abcxyzpqrrrabbxyyyypqAzz", res[803].exec("abcxyzpqrrrabbxyyyypqAzz"), 2365);
-assertToStringEquals("aabcxyzpqrrrabbxyyyypqAzz", res[803].exec("aabcxyzpqrrrabbxyyyypqAzz"), 2366);
-assertToStringEquals("aaabcxyzpqrrrabbxyyyypAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypAzz"), 2367);
-assertToStringEquals("aaabcxyzpqrrrabbxyyyypqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqAzz"), 2368);
-assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqAzz"), 2369);
-assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqqAzz"), 2370);
-assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqqqAzz"), 2371);
-assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqqqqAzz"), 2372);
-assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqqqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqqqqqAzz"), 2373);
-assertToStringEquals("aaaabcxyzpqrrrabbxyyyypqAzz", res[803].exec("aaaabcxyzpqrrrabbxyyyypqAzz"), 2374);
-assertToStringEquals("abxyzzpqrrrabbxyyyypqAzz", res[803].exec("abxyzzpqrrrabbxyyyypqAzz"), 2375);
-assertToStringEquals("aabxyzzzpqrrrabbxyyyypqAzz", res[803].exec("aabxyzzzpqrrrabbxyyyypqAzz"), 2376);
-assertToStringEquals("aaabxyzzzzpqrrrabbxyyyypqAzz", res[803].exec("aaabxyzzzzpqrrrabbxyyyypqAzz"), 2377);
-assertToStringEquals("aaaabxyzzzzpqrrrabbxyyyypqAzz", res[803].exec("aaaabxyzzzzpqrrrabbxyyyypqAzz"), 2378);
-assertToStringEquals("abcxyzzpqrrrabbxyyyypqAzz", res[803].exec("abcxyzzpqrrrabbxyyyypqAzz"), 2379);
-assertToStringEquals("aabcxyzzzpqrrrabbxyyyypqAzz", res[803].exec("aabcxyzzzpqrrrabbxyyyypqAzz"), 2380);
-assertToStringEquals("aaabcxyzzzzpqrrrabbxyyyypqAzz", res[803].exec("aaabcxyzzzzpqrrrabbxyyyypqAzz"), 2381);
-assertToStringEquals("aaaabcxyzzzzpqrrrabbxyyyypqAzz", res[803].exec("aaaabcxyzzzzpqrrrabbxyyyypqAzz"), 2382);
-assertToStringEquals("aaaabcxyzzzzpqrrrabbbxyyyypqAzz", res[803].exec("aaaabcxyzzzzpqrrrabbbxyyyypqAzz"), 2383);
-assertToStringEquals("aaaabcxyzzzzpqrrrabbbxyyyyypqAzz", res[803].exec("aaaabcxyzzzzpqrrrabbbxyyyyypqAzz"), 2384);
-assertToStringEquals("aaabcxyzpqrrrabbxyyyypABzz", res[803].exec("aaabcxyzpqrrrabbxyyyypABzz"), 2385);
-assertToStringEquals("aaabcxyzpqrrrabbxyyyypABBzz", res[803].exec("aaabcxyzpqrrrabbxyyyypABBzz"), 2386);
-assertToStringEquals("aaabxyzpqrrrabbxyyyypqAzz", res[803].exec(">>>aaabxyzpqrrrabbxyyyypqAzz"), 2387);
-assertToStringEquals("aaaabxyzpqrrrabbxyyyypqAzz", res[803].exec(">aaaabxyzpqrrrabbxyyyypqAzz"), 2388);
-assertToStringEquals("abcxyzpqrrrabbxyyyypqAzz", res[803].exec(">>>>abcxyzpqrrrabbxyyyypqAzz"), 2389);
-assertNull(res[803].exec("*** Failers", 2390));
-assertNull(res[803].exec("abxyzpqrrabbxyyyypqAzz", 2391));
-assertNull(res[803].exec("abxyzpqrrrrabbxyyyypqAzz", 2392));
-assertNull(res[803].exec("abxyzpqrrrabxyyyypqAzz", 2393));
-assertNull(res[803].exec("aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz", 2394));
-assertNull(res[803].exec("aaaabcxyzzzzpqrrrabbbxyyypqAzz", 2395));
-assertNull(res[803].exec("aaabcxyzpqrrrabbxyyyypqqqqqqqAzz", 2396));
-assertToStringEquals("abczz,abc", res[804].exec("abczz"), 2397);
-assertToStringEquals("abcabczz,abc", res[804].exec("abcabczz"), 2398);
-assertNull(res[804].exec("*** Failers", 2399));
-assertNull(res[804].exec("zz", 2400));
-assertNull(res[804].exec("abcabcabczz", 2401));
-assertNull(res[804].exec(">>abczz", 2402));
-assertToStringEquals("bc,b", res[805].exec("bc"), 2403);
-assertToStringEquals("bbc,b", res[805].exec("bbc"), 2404);
-assertToStringEquals("bbbc,bb", res[805].exec("bbbc"), 2405);
-assertToStringEquals("bac,a", res[805].exec("bac"), 2406);
-assertToStringEquals("bbac,a", res[805].exec("bbac"), 2407);
-assertToStringEquals("aac,a", res[805].exec("aac"), 2408);
-assertToStringEquals("abbbbbbbbbbbc,bbbbbbbbbbb", res[805].exec("abbbbbbbbbbbc"), 2409);
-assertToStringEquals("bbbbbbbbbbbac,a", res[805].exec("bbbbbbbbbbbac"), 2410);
-assertNull(res[805].exec("*** Failers", 2411));
-assertNull(res[805].exec("aaac", 2412));
-assertNull(res[805].exec("abbbbbbbbbbbac", 2413));
-assertToStringEquals("bc,b", res[806].exec("bc"), 2414);
-assertToStringEquals("bbc,bb", res[806].exec("bbc"), 2415);
-assertToStringEquals("bbbc,bbb", res[806].exec("bbbc"), 2416);
-assertToStringEquals("bac,a", res[806].exec("bac"), 2417);
-assertToStringEquals("bbac,a", res[806].exec("bbac"), 2418);
-assertToStringEquals("aac,a", res[806].exec("aac"), 2419);
-assertToStringEquals("abbbbbbbbbbbc,bbbbbbbbbbb", res[806].exec("abbbbbbbbbbbc"), 2420);
-assertToStringEquals("bbbbbbbbbbbac,a", res[806].exec("bbbbbbbbbbbac"), 2421);
-assertNull(res[806].exec("*** Failers", 2422));
-assertNull(res[806].exec("aaac", 2423));
-assertNull(res[806].exec("abbbbbbbbbbbac", 2424));
-assertToStringEquals("bbc,bb", res[806].exec("bbc"), 2425);
-assertToStringEquals("babc,ba", res[807].exec("babc"), 2426);
-assertToStringEquals("bbabc,ba", res[807].exec("bbabc"), 2427);
-assertToStringEquals("bababc,ba", res[807].exec("bababc"), 2428);
-assertNull(res[807].exec("*** Failers", 2429));
-assertNull(res[807].exec("bababbc", 2430));
-assertNull(res[807].exec("babababc", 2431));
-assertToStringEquals("babc,ba", res[808].exec("babc"), 2432);
-assertToStringEquals("bbabc,ba", res[808].exec("bbabc"), 2433);
-assertToStringEquals("bababc,ba", res[808].exec("bababc"), 2434);
-assertNull(res[808].exec("*** Failers", 2435));
-assertNull(res[808].exec("bababbc", 2436));
-assertNull(res[808].exec("babababc", 2437));
+assertEquals(null, res[443].exec("aaaa", 885));
+assertEquals(null, res[443].exec("bacxxx", 886));
+assertEquals(null, res[443].exec("bbaccxxx ", 887));
+assertEquals(null, res[443].exec("bbbacccxx", 888));
+assertEquals(null, res[443].exec("aaaa", 889));
+assertEquals(null, res[443].exec("bacxxx", 890));
+assertEquals(null, res[443].exec("bbaccxxx ", 891));
+assertEquals(null, res[443].exec("bbbacccxx", 892));
+assertEquals("a,a", res[444].exec("aaaa"), 893);
+assertEquals(null, res[444].exec("bacxxx", 894));
+assertEquals(null, res[444].exec("bbaccxxx ", 895));
+assertEquals(null, res[444].exec("bbbacccxx", 896));
+assertEquals("a,a", res[445].exec("aaaa"), 897);
+assertEquals(null, res[445].exec("bacxxx", 898));
+assertEquals(null, res[445].exec("bbaccxxx ", 899));
+assertEquals(null, res[445].exec("bbbacccxx", 900));
+assertEquals("a,a", res[446].exec("aaaa"), 901);
+assertEquals(null, res[446].exec("bacxxx", 902));
+assertEquals(null, res[446].exec("bbaccxxx ", 903));
+assertEquals(null, res[446].exec("bbbacccxx", 904));
+assertEquals("a,a,a", res[447].exec("aaaa"), 905);
+assertEquals(null, res[447].exec("bacxxx", 906));
+assertEquals(null, res[447].exec("bbaccxxx ", 907));
+assertEquals(null, res[447].exec("bbbacccxx", 908));
+assertEquals(null, res[449].exec("bacxxx", 909));
+assertEquals(null, res[449].exec("XaaX", 910));
+assertEquals(null, res[449].exec("XAAX ", 911));
+assertEquals(null, res[449].exec("XaaX", 912));
+assertEquals(null, res[449].exec("** Failers ", 913));
+assertEquals(null, res[449].exec("XAAX ", 914));
+assertEquals(null, res[449].exec("XaaX", 915));
+assertEquals(null, res[449].exec("XAAX ", 916));
+assertEquals(null, res[449].exec("xzxx", 917));
+assertEquals(null, res[449].exec("yzyy ", 918));
+assertEquals(null, res[449].exec("** Failers", 919));
+assertEquals(null, res[449].exec("xxz  ", 920));
+assertEquals("a,,,a", res[450].exec("cat"), 921);
+assertEquals("a,,,a", res[451].exec("cat"), 922);
+assertEquals("TA]", res[452].exec("The ACTA] comes "), 923);
+assertEquals("TA]", res[453].exec("The ACTA] comes "), 924);
+assertEquals(null, res[453].exec("abcbabc", 925));
+assertEquals(null, res[453].exec("abcbabc", 926));
+assertEquals(null, res[453].exec("abcbabc", 927));
+assertEquals(null, res[453].exec("** Failers ", 928));
+assertEquals(null, res[453].exec("abcXabc", 929));
+assertEquals(null, res[453].exec("abcXabc", 930));
+assertEquals(null, res[453].exec("** Failers ", 931));
+assertEquals(null, res[453].exec("abcbabc", 932));
+assertEquals(null, res[453].exec("xyzbabcxyz", 933));
+assertEquals(null, res[456].exec("** Failers", 934));
+assertEquals(null, res[456].exec("ab", 935));
+assertEquals(null, res[457].exec("** Failers", 936));
+assertEquals(null, res[457].exec("ab ", 937));
+assertEquals(null, res[457].exec("** Failers", 938));
+assertEquals(null, res[457].exec("ab ", 939));
+assertEquals("aXb", res[458].exec("aXb"), 940);
+assertEquals("a\nb", res[458].exec("a\nb "), 941);
+assertEquals(null, res[458].exec("** Failers", 942));
+assertEquals(null, res[458].exec("ab  ", 943));
+assertEquals("aXb", res[459].exec("aXb"), 944);
+assertEquals("a\nX\nXb", res[459].exec("a\nX\nXb "), 945);
+assertEquals(null, res[459].exec("** Failers", 946));
+assertEquals(null, res[459].exec("ab  ", 947));
+assertEquals("acb", res[463].exec("acb"), 948);
+assertEquals("ab", res[463].exec("ab"), 949);
+assertEquals(null, res[463].exec("ax{100}b ", 950));
+assertEquals(null, res[463].exec("*** Failers", 951));
+assertEquals(null, res[463].exec("a\nb  ", 952));
+assertEquals(null, res[464].exec("ax{4000}xyb ", 953));
+assertEquals(null, res[464].exec("ax{4000}yb ", 954));
+assertEquals(null, res[464].exec("ax{4000}x{100}yb ", 955));
+assertEquals(null, res[464].exec("*** Failers", 956));
+assertEquals(null, res[464].exec("ax{4000}b ", 957));
+assertEquals(null, res[464].exec("ac\ncb ", 958));
+assertEquals("a\xc0,,\xc0", res[465].exec("a\xc0\x88b"), 959);
+assertEquals("ax,,x", res[466].exec("ax{100}b"), 960);
+assertEquals("a\xc0\x88b,\xc0\x88,b", res[467].exec("a\xc0\x88b"), 961);
+assertEquals("ax{100}b,x{100},b", res[468].exec("ax{100}b"), 962);
+assertEquals("a\xc0\x92,\xc0,\x92", res[469].exec("a\xc0\x92bcd"), 963);
+assertEquals("ax{,x,{", res[470].exec("ax{240}bcd"), 964);
+assertEquals("a\xc0\x92,\xc0,\x92", res[471].exec("a\xc0\x92bcd"), 965);
+assertEquals("ax{,x,{", res[472].exec("ax{240}bcd"), 966);
+assertEquals("a\xc0,,\xc0", res[473].exec("a\xc0\x92bcd"), 967);
+assertEquals("ax,,x", res[474].exec("ax{240}bcd"), 968);
+assertEquals(null, res[475].exec("ax{1234}xyb ", 969));
+assertEquals(null, res[475].exec("ax{1234}x{4321}yb ", 970));
+assertEquals(null, res[475].exec("ax{1234}x{4321}x{3412}b ", 971));
+assertEquals(null, res[475].exec("*** Failers", 972));
+assertEquals(null, res[475].exec("ax{1234}b ", 973));
+assertEquals(null, res[475].exec("ac\ncb ", 974));
+assertEquals("ax{1234}xyb,x{1234}xy", res[476].exec("ax{1234}xyb "), 975);
+assertEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[476].exec("ax{1234}x{4321}yb "), 976);
+assertEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[476].exec("ax{1234}x{4321}x{3412}b "), 977);
+assertEquals("axxxxbcdefghijb,xxxxbcdefghij", res[476].exec("axxxxbcdefghijb "), 978);
+assertEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[476].exec("ax{1234}x{4321}x{3412}x{3421}b "), 979);
+assertEquals(null, res[476].exec("*** Failers", 980));
+assertEquals("ax{1234}b,x{1234}", res[476].exec("ax{1234}b "), 981);
+assertEquals("ax{1234}xyb,x{1234}xy", res[477].exec("ax{1234}xyb "), 982);
+assertEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[477].exec("ax{1234}x{4321}yb "), 983);
+assertEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[477].exec("ax{1234}x{4321}x{3412}b "), 984);
+assertEquals("axxxxb,xxxx", res[477].exec("axxxxbcdefghijb "), 985);
+assertEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[477].exec("ax{1234}x{4321}x{3412}x{3421}b "), 986);
+assertEquals(null, res[477].exec("*** Failers", 987));
+assertEquals("ax{1234}b,x{1234}", res[477].exec("ax{1234}b "), 988);
+assertEquals(null, res[478].exec("ax{1234}xyb ", 989));
+assertEquals(null, res[478].exec("ax{1234}x{4321}yb ", 990));
+assertEquals(null, res[478].exec("ax{1234}x{4321}x{3412}b ", 991));
+assertEquals("axxxxb,xxxx", res[478].exec("axxxxbcdefghijb "), 992);
+assertEquals(null, res[478].exec("ax{1234}x{4321}x{3412}x{3421}b ", 993));
+assertEquals("axbxxb,xbxx", res[478].exec("axbxxbcdefghijb "), 994);
+assertEquals("axxxxxb,xxxxx", res[478].exec("axxxxxbcdefghijb "), 995);
+assertEquals(null, res[478].exec("*** Failers", 996));
+assertEquals(null, res[478].exec("ax{1234}b ", 997));
+assertEquals(null, res[478].exec("axxxxxxbcdefghijb ", 998));
+assertEquals(null, res[479].exec("ax{1234}xyb ", 999));
+assertEquals(null, res[479].exec("ax{1234}x{4321}yb ", 1000));
+assertEquals(null, res[479].exec("ax{1234}x{4321}x{3412}b ", 1001));
+assertEquals("axxxxb,xxxx", res[479].exec("axxxxbcdefghijb "), 1002);
+assertEquals(null, res[479].exec("ax{1234}x{4321}x{3412}x{3421}b ", 1003));
+assertEquals("axbxxb,xbxx", res[479].exec("axbxxbcdefghijb "), 1004);
+assertEquals("axxxxxb,xxxxx", res[479].exec("axxxxxbcdefghijb "), 1005);
+assertEquals(null, res[479].exec("*** Failers", 1006));
+assertEquals(null, res[479].exec("ax{1234}b ", 1007));
+assertEquals(null, res[479].exec("axxxxxxbcdefghijb ", 1008));
+assertEquals(null, res[479].exec("*** Failers", 1009));
+assertEquals(null, res[479].exec("x{100}", 1010));
+assertEquals(null, res[479].exec("aXbcd", 1011));
+assertEquals(null, res[479].exec("ax{100}bcd", 1012));
+assertEquals(null, res[479].exec("ax{100000}bcd", 1013));
+assertEquals(null, res[479].exec("x{100}x{100}x{100}b", 1014));
+assertEquals(null, res[479].exec("*** Failers ", 1015));
+assertEquals(null, res[479].exec("x{100}x{100}b", 1016));
+assertEquals(null, res[479].exec("x{ab} ", 1017));
+assertEquals(null, res[479].exec("\xc2\xab", 1018));
+assertEquals(null, res[479].exec("*** Failers ", 1019));
+assertEquals(null, res[479].exec("\x00{ab}", 1020));
+assertEquals(null, res[479].exec("WXYZ", 1021));
+assertEquals(null, res[479].exec("x{256}XYZ ", 1022));
+assertEquals(null, res[479].exec("*** Failers", 1023));
+assertEquals(null, res[479].exec("XYZ ", 1024));
+assertEquals(null, res[480].exec("Xx{1234}", 1025));
+assertEquals(null, res[481].exec("Xx{1234}YZ", 1026));
+assertEquals("X", res[482].exec("XYZabcdce"), 1027);
+assertEquals("X", res[483].exec("XYZabcde"), 1028);
+assertEquals(null, res[484].exec("Xabcdefg   ", 1029));
+assertEquals(null, res[484].exec("Xx{1234} ", 1030));
+assertEquals(null, res[484].exec("Xx{1234}YZ", 1031));
+assertEquals(null, res[484].exec("Xx{1234}x{512}  ", 1032));
+assertEquals(null, res[484].exec("Xx{1234}x{512}YZ", 1033));
+assertEquals(null, res[485].exec("Xabcdefg   ", 1034));
+assertEquals(null, res[485].exec("Xx{1234} ", 1035));
+assertEquals(null, res[485].exec("Xx{1234}YZ", 1036));
+assertEquals(null, res[485].exec("Xx{1234}x{512}  ", 1037));
+assertEquals("bcd", res[486].exec("bcd"), 1038);
+assertEquals("00}", res[486].exec("x{100}aYx{256}Z "), 1039);
+assertEquals("x{", res[487].exec("x{100}bc"), 1040);
+assertEquals("x{100}bcA", res[488].exec("x{100}bcAa"), 1041);
+assertEquals("x{", res[489].exec("x{100}bca"), 1042);
+assertEquals("bcd", res[490].exec("bcd"), 1043);
+assertEquals("00}", res[490].exec("x{100}aYx{256}Z "), 1044);
+assertEquals("x{", res[491].exec("x{100}bc"), 1045);
+assertEquals("x{100}bc", res[492].exec("x{100}bcAa"), 1046);
+assertEquals("x{", res[493].exec("x{100}bca"), 1047);
+assertEquals(null, res[493].exec("abcd", 1048));
+assertEquals(null, res[493].exec("abcd", 1049));
+assertEquals("x{", res[493].exec("x{100}x{100} "), 1050);
+assertEquals("x{", res[493].exec("x{100}x{100} "), 1051);
+assertEquals("x{", res[493].exec("x{100}x{100}x{100}x{100} "), 1052);
+assertEquals(null, res[493].exec("abce", 1053));
+assertEquals("x{", res[493].exec("x{100}x{100}x{100}x{100} "), 1054);
+assertEquals(null, res[493].exec("abcdx{100}x{100}x{100}x{100} ", 1055));
+assertEquals(null, res[493].exec("abcdx{100}x{100}x{100}x{100} ", 1056));
+assertEquals(null, res[493].exec("abcdx{100}x{100}x{100}x{100} ", 1057));
+assertEquals(null, res[493].exec("abcdx{100}x{100}x{100}XX", 1058));
+assertEquals(null, res[493].exec("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX", 1059));
+assertEquals(null, res[493].exec("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX", 1060));
+assertEquals("Xy", res[493].exec("Xyyyax{100}x{100}bXzzz"), 1061);
+assertEquals("X", res[496].exec("1X2"), 1062);
+assertEquals("x", res[496].exec("1x{100}2 "), 1063);
+assertEquals(">X", res[497].exec("> >X Y"), 1064);
+assertEquals(">x", res[497].exec("> >x{100} Y"), 1065);
+assertEquals("1", res[498].exec("x{100}3"), 1066);
+assertEquals(" ", res[499].exec("x{100} X"), 1067);
+assertEquals("abcd", res[500].exec("12abcd34"), 1068);
+assertEquals("*** Failers", res[500].exec("*** Failers"), 1069);
+assertEquals("  ", res[500].exec("1234  "), 1070);
+assertEquals("abc", res[501].exec("12abcd34"), 1071);
+assertEquals("ab", res[501].exec("12ab34"), 1072);
+assertEquals("***", res[501].exec("*** Failers  "), 1073);
+assertEquals(null, res[501].exec("1234", 1074));
+assertEquals("  ", res[501].exec("12a34  "), 1075);
+assertEquals("ab", res[502].exec("12abcd34"), 1076);
+assertEquals("ab", res[502].exec("12ab34"), 1077);
+assertEquals("**", res[502].exec("*** Failers  "), 1078);
+assertEquals(null, res[502].exec("1234", 1079));
+assertEquals("  ", res[502].exec("12a34  "), 1080);
+assertEquals("12", res[503].exec("12abcd34"), 1081);
+assertEquals(null, res[503].exec("*** Failers", 1082));
+assertEquals("12", res[504].exec("12abcd34"), 1083);
+assertEquals("123", res[504].exec("1234abcd"), 1084);
+assertEquals(null, res[504].exec("*** Failers  ", 1085));
+assertEquals(null, res[504].exec("1.4 ", 1086));
+assertEquals("12", res[505].exec("12abcd34"), 1087);
+assertEquals("12", res[505].exec("1234abcd"), 1088);
+assertEquals(null, res[505].exec("*** Failers  ", 1089));
+assertEquals(null, res[505].exec("1.4 ", 1090));
+assertEquals("12abcd34", res[506].exec("12abcd34"), 1091);
+assertEquals("***", res[506].exec("*** Failers"), 1092);
+assertEquals(null, res[506].exec("     ", 1093));
+assertEquals("12a", res[507].exec("12abcd34"), 1094);
+assertEquals("123", res[507].exec("1234abcd"), 1095);
+assertEquals("***", res[507].exec("*** Failers"), 1096);
+assertEquals(null, res[507].exec("       ", 1097));
+assertEquals("12", res[508].exec("12abcd34"), 1098);
+assertEquals("12", res[508].exec("1234abcd"), 1099);
+assertEquals("**", res[508].exec("*** Failers"), 1100);
+assertEquals(null, res[508].exec("       ", 1101));
+assertEquals(">      <", res[509].exec("12>      <34"), 1102);
+assertEquals(null, res[509].exec("*** Failers", 1103));
+assertEquals(">  <", res[510].exec("ab>  <cd"), 1104);
+assertEquals(">   <", res[510].exec("ab>   <ce"), 1105);
+assertEquals(null, res[510].exec("*** Failers", 1106));
+assertEquals(null, res[510].exec("ab>    <cd ", 1107));
+assertEquals(">  <", res[511].exec("ab>  <cd"), 1108);
+assertEquals(">   <", res[511].exec("ab>   <ce"), 1109);
+assertEquals(null, res[511].exec("*** Failers", 1110));
+assertEquals(null, res[511].exec("ab>    <cd ", 1111));
+assertEquals("12", res[512].exec("12      34"), 1112);
+assertEquals("Failers", res[512].exec("*** Failers"), 1113);
+assertEquals(null, res[512].exec("+++=*! ", 1114));
+assertEquals("ab", res[513].exec("ab  cd"), 1115);
+assertEquals("abc", res[513].exec("abcd ce"), 1116);
+assertEquals("Fai", res[513].exec("*** Failers"), 1117);
+assertEquals(null, res[513].exec("a.b.c", 1118));
+assertEquals("ab", res[514].exec("ab  cd"), 1119);
+assertEquals("ab", res[514].exec("abcd ce"), 1120);
+assertEquals("Fa", res[514].exec("*** Failers"), 1121);
+assertEquals(null, res[514].exec("a.b.c", 1122));
+assertEquals("====", res[515].exec("12====34"), 1123);
+assertEquals("*** ", res[515].exec("*** Failers"), 1124);
+assertEquals(" ", res[515].exec("abcd "), 1125);
+assertEquals("===", res[516].exec("ab====cd"), 1126);
+assertEquals("==", res[516].exec("ab==cd"), 1127);
+assertEquals("***", res[516].exec("*** Failers"), 1128);
+assertEquals(null, res[516].exec("a.b.c", 1129));
+assertEquals("==", res[517].exec("ab====cd"), 1130);
+assertEquals("==", res[517].exec("ab==cd"), 1131);
+assertEquals("**", res[517].exec("*** Failers"), 1132);
+assertEquals(null, res[517].exec("a.b.c", 1133));
+assertEquals(null, res[517].exec("x{100}", 1134));
+assertEquals(null, res[517].exec("Zx{100}", 1135));
+assertEquals(null, res[517].exec("x{100}Z", 1136));
+assertEquals("**", res[517].exec("*** Failers "), 1137);
+assertEquals(null, res[517].exec("Zx{100}", 1138));
+assertEquals(null, res[517].exec("x{100}", 1139));
+assertEquals(null, res[517].exec("x{100}Z", 1140));
+assertEquals("**", res[517].exec("*** Failers "), 1141);
+assertEquals(null, res[517].exec("abcx{200}X", 1142));
+assertEquals(null, res[517].exec("abcx{100}X ", 1143));
+assertEquals("**", res[517].exec("*** Failers"), 1144);
+assertEquals("  ", res[517].exec("X  "), 1145);
+assertEquals(null, res[517].exec("abcx{200}X", 1146));
+assertEquals(null, res[517].exec("abcx{100}X ", 1147));
+assertEquals(null, res[517].exec("abQX ", 1148));
+assertEquals("**", res[517].exec("*** Failers"), 1149);
+assertEquals("  ", res[517].exec("X  "), 1150);
+assertEquals(null, res[517].exec("abcx{100}x{200}x{100}X", 1151));
+assertEquals("**", res[517].exec("*** Failers"), 1152);
+assertEquals(null, res[517].exec("abcx{200}X", 1153));
+assertEquals("  ", res[517].exec("X  "), 1154);
+assertEquals(null, res[517].exec("AX", 1155));
+assertEquals(null, res[517].exec("x{150}X", 1156));
+assertEquals(null, res[517].exec("x{500}X ", 1157));
+assertEquals("**", res[517].exec("*** Failers"), 1158);
+assertEquals(null, res[517].exec("x{100}X", 1159));
+assertEquals("  ", res[517].exec("x{200}X   "), 1160);
+assertEquals(null, res[517].exec("AX", 1161));
+assertEquals(null, res[517].exec("x{150}X", 1162));
+assertEquals(null, res[517].exec("x{500}X ", 1163));
+assertEquals("**", res[517].exec("*** Failers"), 1164);
+assertEquals(null, res[517].exec("x{100}X", 1165));
+assertEquals("  ", res[517].exec("x{200}X   "), 1166);
+assertEquals(null, res[517].exec("QX ", 1167));
+assertEquals(null, res[517].exec("AX", 1168));
+assertEquals(null, res[517].exec("x{500}X ", 1169));
+assertEquals("**", res[517].exec("*** Failers"), 1170);
+assertEquals(null, res[517].exec("x{100}X", 1171));
+assertEquals(null, res[517].exec("x{150}X", 1172));
+assertEquals("  ", res[517].exec("x{200}X   "), 1173);
+assertEquals(null, res[518].exec("aXb", 1174));
+assertEquals(null, res[518].exec("a\nb", 1175));
+assertEquals(null, res[519].exec("aXb", 1176));
+assertEquals(null, res[519].exec("a\nb", 1177));
+assertEquals(null, res[519].exec("*** Failers ", 1178));
+assertEquals(null, res[519].exec("ax{100}b ", 1179));
+assertEquals(null, res[519].exec("z", 1180));
+assertEquals(null, res[519].exec("Z ", 1181));
+assertEquals(null, res[519].exec("x{100}", 1182));
+assertEquals(null, res[519].exec("*** Failers", 1183));
+assertEquals(null, res[519].exec("x{102}", 1184));
+assertEquals(null, res[519].exec("y    ", 1185));
+assertEquals("\xff", res[520].exec(">\xff<"), 1186);
+assertEquals(null, res[521].exec(">x{ff}<", 1187));
+assertEquals("X", res[522].exec("XYZ"), 1188);
+assertEquals("X", res[523].exec("XYZ"), 1189);
+assertEquals("x", res[523].exec("x{123} "), 1190);
+assertEquals(",", res[528].exec("catac"), 1191);
+assertEquals(",", res[528].exec("ax{256}a "), 1192);
+assertEquals(",", res[528].exec("x{85}"), 1193);
+assertEquals(",", res[528].exec("\u1234 "), 1194);
+assertEquals(",", res[528].exec("\u1234 "), 1195);
+assertEquals(",", res[528].exec("abcdefg"), 1196);
+assertEquals(",", res[528].exec("ab"), 1197);
+assertEquals(",", res[528].exec("a "), 1198);
+assertEquals("Ax", res[529].exec("Ax{a3}BC"), 1199);
+assertEquals("Ax", res[530].exec("Ax{a3}BC"), 1200);
+assertEquals("}=", res[531].exec("+x{a3}== "), 1201);
+assertEquals("}=", res[532].exec("+x{a3}== "), 1202);
+assertEquals("x", res[533].exec("x{442}x{435}x{441}x{442}"), 1203);
+assertEquals("x", res[534].exec("x{442}x{435}x{441}x{442}"), 1204);
+assertEquals("x", res[535].exec("x{442}x{435}x{441}x{442}"), 1205);
+assertEquals("x", res[536].exec("x{442}x{435}x{441}x{442}"), 1206);
+assertEquals("{", res[537].exec("x{2442}x{2435}x{2441}x{2442}"), 1207);
+assertEquals("{", res[538].exec("x{2442}x{2435}x{2441}x{2442}"), 1208);
+assertEquals("abc\n\x0dx{442}x{435}x{441}x{442}xyz ", res[539].exec("abc\n\x0dx{442}x{435}x{441}x{442}xyz "), 1209);
+assertEquals("x{442}x{435}x{441}x{442}", res[539].exec("x{442}x{435}x{441}x{442}"), 1210);
+assertEquals("c d", res[540].exec("abc defx{442}x{443}xyz\npqr"), 1211);
+assertEquals("c d", res[541].exec("abc defx{442}x{443}xyz\npqr"), 1212);
+assertEquals(null, res[542].exec("+x{2442}", 1213));
+assertEquals(null, res[543].exec("+x{2442}", 1214));
+assertEquals(null, res[544].exec("Ax{442}", 1215));
+assertEquals(null, res[545].exec("Ax{442}", 1216));
+assertEquals(null, res[546].exec("Ax{442}", 1217));
+assertEquals(null, res[547].exec("Ax{442}", 1218));
+assertEquals(null, res[548].exec("\x19x{e01ff}", 1219));
+assertEquals(null, res[549].exec("Ax{422}", 1220));
+assertEquals(null, res[550].exec("x{19}x{e01ff}", 1221));
+assertEquals(null, res[551].exec("Ax{442}", 1222));
+assertEquals(null, res[552].exec("Ax{442}", 1223));
+assertEquals(null, res[553].exec("ax{442}", 1224));
+assertEquals(null, res[554].exec("+x{2442}", 1225));
+assertEquals(null, res[555].exec("Mx{442}", 1226));
+assertEquals("abc", res[556].exec("abc"), 1227);
+assertEquals("abc", res[557].exec("abc"), 1228);
+assertEquals("abc", res[558].exec("abc"), 1229);
+assertEquals("abc", res[559].exec("abc"), 1230);
+assertEquals(null, res[560].exec("x{100}ax{1234}bcd", 1231));
+assertEquals(null, res[562].exec("x{0041}x{2262}x{0391}x{002e}", 1232));
+assertEquals(null, res[562].exec("x{D55c}x{ad6d}x{C5B4} ", 1233));
+assertEquals(null, res[562].exec("x{65e5}x{672c}x{8a9e}", 1234));
+assertEquals("{861}X", res[563].exec("x{212ab}x{212ab}x{212ab}x{861}X"), 1235);
+assertEquals("x{2", res[564].exec("x{212ab}x{212ab}x{212ab}x{861}"), 1236);
+assertEquals("x{c", res[564].exec("x{c0}b"), 1237);
+assertEquals("ax{", res[564].exec("ax{c0}aaaa/ "), 1238);
+assertEquals("ax{", res[564].exec("ax{c0}aaaa/ "), 1239);
+assertEquals("ax{", res[564].exec("ax{c0}ax{c0}aaa/ "), 1240);
+assertEquals("ax{", res[564].exec("ax{c0}aaaa/ "), 1241);
+assertEquals("ax{", res[564].exec("ax{c0}ax{c0}aaa/ "), 1242);
+assertEquals("ax{", res[564].exec("ax{c0}aaaa/ "), 1243);
+assertEquals("ax{", res[564].exec("ax{c0}ax{c0}aaa/ "), 1244);
+assertEquals("Sho", res[564].exec("Should produce an error diagnostic"), 1245);
+assertEquals(null, res[565].exec("Xx{1234}", 1246));
+assertEquals(null, res[565].exec("X\nabc ", 1247));
+assertEquals("b", res[566].exec("bar"), 1248);
+assertEquals(null, res[566].exec("*** Failers", 1249));
+assertEquals(null, res[566].exec("c", 1250));
+assertEquals(null, res[566].exec("x{ff}", 1251));
+assertEquals(null, res[566].exec("x{100}  ", 1252));
+assertEquals("c", res[567].exec("c"), 1253);
+assertEquals("x", res[567].exec("x{ff}"), 1254);
+assertEquals("x", res[567].exec("x{100}  "), 1255);
+assertEquals("*", res[567].exec("*** Failers "), 1256);
+assertEquals(null, res[567].exec("aaa", 1257));
+assertEquals("x", res[568].exec("x{f1}"), 1258);
+assertEquals("x", res[568].exec("x{bf}"), 1259);
+assertEquals("x", res[568].exec("x{100}"), 1260);
+assertEquals("x", res[568].exec("x{1000}   "), 1261);
+assertEquals("*", res[568].exec("*** Failers"), 1262);
+assertEquals("x", res[568].exec("x{c0} "), 1263);
+assertEquals("x", res[568].exec("x{f0} "), 1264);
+assertEquals("1", res[568].exec("1234"), 1265);
+assertEquals("\"", res[568].exec("\"1234\" "), 1266);
+assertEquals("x", res[568].exec("x{100}1234"), 1267);
+assertEquals("\"", res[568].exec("\"x{100}1234\"  "), 1268);
+assertEquals("x", res[568].exec("x{100}x{100}12ab "), 1269);
+assertEquals("x", res[568].exec("x{100}x{100}\"12\" "), 1270);
+assertEquals("*", res[568].exec("*** Failers "), 1271);
+assertEquals("x", res[568].exec("x{100}x{100}abcd"), 1272);
+assertEquals("A", res[568].exec("A"), 1273);
+assertEquals("x", res[568].exec("x{100}"), 1274);
+assertEquals("Z", res[568].exec("Zx{100}"), 1275);
+assertEquals("x", res[568].exec("x{100}Z"), 1276);
+assertEquals("*", res[568].exec("*** Failers "), 1277);
+assertEquals("Z", res[568].exec("Zx{100}"), 1278);
+assertEquals("x", res[568].exec("x{100}"), 1279);
+assertEquals("x", res[568].exec("x{100}Z"), 1280);
+assertEquals("*", res[568].exec("*** Failers "), 1281);
+assertEquals("x", res[568].exec("x{100}"), 1282);
+assertEquals("x", res[568].exec("x{104}"), 1283);
+assertEquals("*", res[568].exec("*** Failers"), 1284);
+assertEquals("x", res[568].exec("x{105}"), 1285);
+assertEquals("x", res[568].exec("x{ff}    "), 1286);
+assertEquals("x", res[568].exec("x{100}"), 1287);
+assertEquals("\u0100", res[568].exec("\u0100 "), 1288);
+assertEquals("\xff", res[569].exec(">\xff<"), 1289);
+assertEquals(null, res[570].exec(">x{ff}<", 1290));
+assertEquals("\xd6", res[572].exec("\xd6 # Matches without Study"), 1291);
+assertEquals("x", res[572].exec("x{d6}"), 1292);
+assertEquals("\xd6", res[572].exec("\xd6 <-- Same with Study"), 1293);
+assertEquals("x", res[572].exec("x{d6}"), 1294);
+assertEquals("\xd6", res[572].exec("\xd6 # Matches without Study"), 1295);
+assertEquals("x", res[572].exec("x{d6} "), 1296);
+assertEquals("\xd6", res[572].exec("\xd6 <-- Same with Study"), 1297);
+assertEquals("x", res[572].exec("x{d6} "), 1298);
+assertEquals("\ufffd", res[572].exec("\ufffd]"), 1299);
+assertEquals("\ufffd", res[572].exec("\ufffd"), 1300);
+assertEquals("\ufffd", res[572].exec("\ufffd\ufffd\ufffd"), 1301);
+assertEquals("\ufffd", res[572].exec("\ufffd\ufffd\ufffd?"), 1302);
+assertEquals(null, res[573].exec("\xc0\x80", 1303));
+assertEquals(null, res[573].exec("\xc1\x8f ", 1304));
+assertEquals(null, res[573].exec("\xe0\x9f\x80", 1305));
+assertEquals(null, res[573].exec("\xf0\x8f\x80\x80 ", 1306));
+assertEquals(null, res[573].exec("\xf8\x87\x80\x80\x80  ", 1307));
+assertEquals(null, res[573].exec("\xfc\x83\x80\x80\x80\x80", 1308));
+assertEquals(null, res[573].exec("\xfe\x80\x80\x80\x80\x80  ", 1309));
+assertEquals(null, res[573].exec("\xff\x80\x80\x80\x80\x80  ", 1310));
+assertEquals(null, res[573].exec("\xc3\x8f", 1311));
+assertEquals(null, res[573].exec("\xe0\xaf\x80", 1312));
+assertEquals(null, res[573].exec("\xe1\x80\x80", 1313));
+assertEquals(null, res[573].exec("\xf0\x9f\x80\x80 ", 1314));
+assertEquals(null, res[573].exec("\xf1\x8f\x80\x80 ", 1315));
+assertEquals(null, res[573].exec("\xf8\x88\x80\x80\x80  ", 1316));
+assertEquals(null, res[573].exec("\xf9\x87\x80\x80\x80  ", 1317));
+assertEquals(null, res[573].exec("\xfc\x84\x80\x80\x80\x80", 1318));
+assertEquals(null, res[573].exec("\xfd\x83\x80\x80\x80\x80", 1319));
+assertEquals(null, res[573].exec("?\xf8\x88\x80\x80\x80  ", 1320));
+assertEquals(null, res[573].exec("?\xf9\x87\x80\x80\x80  ", 1321));
+assertEquals(null, res[573].exec("?\xfc\x84\x80\x80\x80\x80", 1322));
+assertEquals(null, res[573].exec("?\xfd\x83\x80\x80\x80\x80", 1323));
+assertEquals(".", res[574].exec("A.B"), 1324);
+assertEquals("{", res[574].exec("Ax{100}B "), 1325);
+assertEquals("x", res[575].exec("x{100}X   "), 1326);
+assertEquals("a", res[575].exec("ax{1234}b"), 1327);
+assertEquals(null, res[577].exec("AxxB     ", 1328));
+assertEquals("abc1", res[578].exec("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 x{0085}abc7 x{2028}abc8 x{2029}abc9 JUNK"), 1329);
+assertEquals("abc1", res[579].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6x{0085} abc7x{2028} abc8x{2029} abc9"), 1330);
+assertEquals(null, res[580].exec("a\nb", 1331));
+assertEquals(null, res[580].exec("a\x0db", 1332));
+assertEquals(null, res[580].exec("a\x0d\nb", 1333));
+assertEquals(null, res[580].exec("a\x0bb", 1334));
+assertEquals(null, res[580].exec("a\x0cb", 1335));
+assertEquals(null, res[580].exec("ax{85}b   ", 1336));
+assertEquals(null, res[580].exec("ax{2028}b ", 1337));
+assertEquals(null, res[580].exec("ax{2029}b ", 1338));
+assertEquals(null, res[580].exec("** Failers", 1339));
+assertEquals(null, res[580].exec("a\n\x0db    ", 1340));
+assertEquals("ab", res[581].exec("ab"), 1341);
+assertEquals(null, res[581].exec("a\nb", 1342));
+assertEquals(null, res[581].exec("a\x0db", 1343));
+assertEquals(null, res[581].exec("a\x0d\nb", 1344));
+assertEquals(null, res[581].exec("a\x0bb", 1345));
+assertEquals(null, res[581].exec("a\x0cx{2028}x{2029}b", 1346));
+assertEquals(null, res[581].exec("ax{85}b   ", 1347));
+assertEquals(null, res[581].exec("a\n\x0db    ", 1348));
+assertEquals(null, res[581].exec("a\n\x0dx{85}\x0cb ", 1349));
+assertEquals(null, res[582].exec("a\nb", 1350));
+assertEquals(null, res[582].exec("a\x0db", 1351));
+assertEquals(null, res[582].exec("a\x0d\nb", 1352));
+assertEquals(null, res[582].exec("a\x0bb", 1353));
+assertEquals(null, res[582].exec("a\x0cx{2028}x{2029}b", 1354));
+assertEquals(null, res[582].exec("ax{85}b   ", 1355));
+assertEquals(null, res[582].exec("a\n\x0db    ", 1356));
+assertEquals(null, res[582].exec("a\n\x0dx{85}\x0cb ", 1357));
+assertEquals(null, res[582].exec("** Failers", 1358));
+assertEquals(null, res[582].exec("ab  ", 1359));
+assertEquals(null, res[583].exec("a\nb", 1360));
+assertEquals(null, res[583].exec("a\n\x0db", 1361));
+assertEquals(null, res[583].exec("a\n\x0dx{85}b", 1362));
+assertEquals(null, res[583].exec("a\x0d\n\x0d\nb ", 1363));
+assertEquals(null, res[583].exec("a\x0d\n\x0d\n\x0d\nb ", 1364));
+assertEquals(null, res[583].exec("a\n\x0d\n\x0db", 1365));
+assertEquals(null, res[583].exec("a\n\n\x0d\nb ", 1366));
+assertEquals(null, res[583].exec("** Failers", 1367));
+assertEquals(null, res[583].exec("a\n\n\n\x0db", 1368));
+assertEquals(null, res[583].exec("a\x0d", 1369));
+assertEquals(null, res[584].exec("X X\n", 1370));
+assertEquals(null, res[584].exec("X\x09X\x0b", 1371));
+assertEquals(null, res[584].exec("** Failers", 1372));
+assertEquals(null, res[584].exec("x{a0} X\n   ", 1373));
+assertEquals(null, res[585].exec("\x09 x{a0}X\n\x0b\x0c\x0d\n", 1374));
+assertEquals(null, res[585].exec("\x09 x{a0}\n\x0b\x0c\x0d\n", 1375));
+assertEquals(null, res[585].exec("\x09 x{a0}\n\x0b\x0c", 1376));
+assertEquals(null, res[585].exec("** Failers ", 1377));
+assertEquals(null, res[585].exec("\x09 x{a0}\n\x0b", 1378));
+assertEquals(null, res[585].exec(" ", 1379));
+assertEquals(null, res[586].exec("x{3001}x{3000}x{2030}x{2028}", 1380));
+assertEquals(null, res[586].exec("Xx{180e}Xx{85}", 1381));
+assertEquals(null, res[586].exec("** Failers", 1382));
+assertEquals(null, res[586].exec("x{2009} X\n   ", 1383));
+assertEquals(null, res[587].exec("x{1680}x{180e}x{2007}Xx{2028}x{2029}\x0c\x0d\n", 1384));
+assertEquals(null, res[587].exec("\x09x{205f}x{a0}\nx{2029}\x0cx{2028}\n", 1385));
+assertEquals(null, res[587].exec("\x09 x{202f}\n\x0b\x0c", 1386));
+assertEquals(null, res[587].exec("** Failers ", 1387));
+assertEquals(null, res[587].exec("\x09x{200a}x{a0}x{2028}\x0b", 1388));
+assertEquals(null, res[587].exec(" ", 1389));
+assertEquals(null, res[588].exec(">x{1680}", 1390));
+assertEquals(null, res[589].exec(">x{1680}x{180e}x{2000}x{2003}x{200a}x{202f}x{205f}x{3000}<", 1391));
+assertEquals("x{1ec5} ", res[593].exec("x{1ec5} "), 1392);
+assertEquals(null, res[594].exec("x{0}x{d7ff}x{e000}x{10ffff}", 1393));
+assertEquals(null, res[594].exec("x{d800}", 1394));
+assertEquals(null, res[594].exec("x{d800}?", 1395));
+assertEquals(null, res[594].exec("x{da00}", 1396));
+assertEquals(null, res[594].exec("x{da00}?", 1397));
+assertEquals(null, res[594].exec("x{dfff}", 1398));
+assertEquals(null, res[594].exec("x{dfff}?", 1399));
+assertEquals(null, res[594].exec("x{110000}    ", 1400));
+assertEquals(null, res[594].exec("x{110000}?    ", 1401));
+assertEquals(null, res[594].exec("x{2000000} ", 1402));
+assertEquals(null, res[594].exec("x{2000000}? ", 1403));
+assertEquals(null, res[594].exec("x{7fffffff} ", 1404));
+assertEquals(null, res[594].exec("x{7fffffff}? ", 1405));
+assertEquals(null, res[595].exec("a\x0db", 1406));
+assertEquals(null, res[595].exec("a\nb", 1407));
+assertEquals(null, res[595].exec("a\x0d\nb", 1408));
+assertEquals(null, res[595].exec("** Failers", 1409));
+assertEquals(null, res[595].exec("ax{85}b", 1410));
+assertEquals(null, res[595].exec("a\x0bb     ", 1411));
+assertEquals(null, res[596].exec("a\x0db", 1412));
+assertEquals(null, res[596].exec("a\nb", 1413));
+assertEquals(null, res[596].exec("a\x0d\nb", 1414));
+assertEquals(null, res[596].exec("ax{85}b", 1415));
+assertEquals(null, res[596].exec("a\x0bb     ", 1416));
+assertEquals(null, res[596].exec("** Failers ", 1417));
+assertEquals(null, res[596].exec("ax{85}b<bsr_anycrlf>", 1418));
+assertEquals(null, res[596].exec("a\x0bb<bsr_anycrlf>", 1419));
+assertEquals(null, res[597].exec("a\x0db", 1420));
+assertEquals(null, res[597].exec("a\nb", 1421));
+assertEquals(null, res[597].exec("a\x0d\nb", 1422));
+assertEquals(null, res[597].exec("** Failers", 1423));
+assertEquals(null, res[597].exec("ax{85}b", 1424));
+assertEquals(null, res[597].exec("a\x0bb     ", 1425));
+assertEquals(null, res[598].exec("a\x0db", 1426));
+assertEquals(null, res[598].exec("a\nb", 1427));
+assertEquals(null, res[598].exec("a\x0d\nb", 1428));
+assertEquals(null, res[598].exec("ax{85}b", 1429));
+assertEquals(null, res[598].exec("a\x0bb     ", 1430));
+assertEquals(null, res[598].exec("** Failers ", 1431));
+assertEquals(null, res[598].exec("ax{85}b<bsr_anycrlf>", 1432));
+assertEquals(null, res[598].exec("a\x0bb<bsr_anycrlf>", 1433));
+assertEquals("QQQx{2029}ABCaXYZ=!bPQR", res[599].exec("QQQx{2029}ABCaXYZ=!bPQR"), 1434);
+assertEquals(null, res[599].exec("** Failers", 1435));
+assertEquals(null, res[599].exec("ax{2029}b", 1436));
+assertEquals(null, res[599].exec("a\xe2\x80\xa9b ", 1437));
+assertEquals(null, res[600].exec("ax{1234}b", 1438));
+assertEquals("a\nb", res[600].exec("a\nb "), 1439);
+assertEquals(null, res[600].exec("** Failers", 1440));
+assertEquals(null, res[600].exec("ab  ", 1441));
+assertEquals("aXb", res[601].exec("aXb"), 1442);
+assertEquals("a\nX\nXx{1234}b", res[601].exec("a\nX\nXx{1234}b "), 1443);
+assertEquals(null, res[601].exec("** Failers", 1444));
+assertEquals(null, res[601].exec("ab  ", 1445));
+assertEquals(null, res[601].exec("x{de}x{de}", 1446));
+assertEquals(null, res[601].exec("x{123} ", 1447));
+assertEquals("X", res[602].exec("Ax{1ec5}ABCXYZ"), 1448);
+assertEquals(null, res[604].exec("x{c0}x{30f}x{660}x{66c}x{f01}x{1680}<", 1449));
+assertEquals(null, res[604].exec("\npx{300}9!$ < ", 1450));
+assertEquals(null, res[604].exec("** Failers ", 1451));
+assertEquals(null, res[604].exec("apx{300}9!$ < ", 1452));
+assertEquals(null, res[605].exec("X", 1453));
+assertEquals(null, res[605].exec("** Failers ", 1454));
+assertEquals(null, res[605].exec("", 1455));
+assertEquals(null, res[606].exec("9", 1456));
+assertEquals(null, res[606].exec("** Failers ", 1457));
+assertEquals(null, res[606].exec("x{c0}", 1458));
+assertEquals(null, res[607].exec("X", 1459));
+assertEquals(null, res[607].exec("** Failers ", 1460));
+assertEquals(null, res[607].exec("x{30f}", 1461));
+assertEquals(null, res[608].exec("X", 1462));
+assertEquals(null, res[608].exec("** Failers ", 1463));
+assertEquals(null, res[608].exec("x{660}", 1464));
+assertEquals(null, res[609].exec("X", 1465));
+assertEquals(null, res[609].exec("** Failers ", 1466));
+assertEquals(null, res[609].exec("x{66c}", 1467));
+assertEquals(null, res[610].exec("X", 1468));
+assertEquals(null, res[610].exec("** Failers ", 1469));
+assertEquals(null, res[610].exec("x{f01}", 1470));
+assertEquals(null, res[611].exec("X", 1471));
+assertEquals(null, res[611].exec("** Failers ", 1472));
+assertEquals(null, res[611].exec("x{1680}", 1473));
+assertEquals(null, res[612].exec("x{017}", 1474));
+assertEquals(null, res[612].exec("x{09f} ", 1475));
+assertEquals(null, res[612].exec("** Failers", 1476));
+assertEquals(null, res[612].exec("x{0600} ", 1477));
+assertEquals(null, res[613].exec("x{601}", 1478));
+assertEquals(null, res[613].exec("** Failers", 1479));
+assertEquals(null, res[613].exec("x{09f} ", 1480));
+assertEquals(null, res[614].exec("x{e0000}", 1481));
+assertEquals(null, res[614].exec("** Failers", 1482));
+assertEquals(null, res[614].exec("x{09f} ", 1483));
+assertEquals(null, res[615].exec("x{f8ff}", 1484));
+assertEquals(null, res[615].exec("** Failers", 1485));
+assertEquals(null, res[615].exec("x{09f} ", 1486));
+assertEquals(null, res[616].exec("?x{dfff}", 1487));
+assertEquals(null, res[616].exec("** Failers", 1488));
+assertEquals(null, res[616].exec("x{09f} ", 1489));
+assertEquals(null, res[617].exec("a", 1490));
+assertEquals(null, res[617].exec("** Failers ", 1491));
+assertEquals(null, res[617].exec("Z", 1492));
+assertEquals(null, res[617].exec("x{e000}  ", 1493));
+assertEquals(null, res[618].exec("x{2b0}", 1494));
+assertEquals(null, res[618].exec("** Failers", 1495));
+assertEquals(null, res[618].exec("a ", 1496));
+assertEquals(null, res[619].exec("x{1bb}", 1497));
+assertEquals(null, res[619].exec("x{3400}", 1498));
+assertEquals(null, res[619].exec("x{3401}", 1499));
+assertEquals(null, res[619].exec("x{4d00}", 1500));
+assertEquals(null, res[619].exec("x{4db4}", 1501));
+assertEquals(null, res[619].exec("x{4db5}     ", 1502));
+assertEquals(null, res[619].exec("** Failers", 1503));
+assertEquals(null, res[619].exec("a ", 1504));
+assertEquals(null, res[619].exec("x{2b0}", 1505));
+assertEquals(null, res[619].exec("x{4db6} ", 1506));
+assertEquals(null, res[620].exec("x{1c5}", 1507));
+assertEquals(null, res[620].exec("** Failers", 1508));
+assertEquals(null, res[620].exec("a ", 1509));
+assertEquals(null, res[620].exec("x{2b0}", 1510));
+assertEquals(null, res[621].exec("A", 1511));
+assertEquals(null, res[621].exec("** Failers", 1512));
+assertEquals(null, res[621].exec("x{2b0}", 1513));
+assertEquals(null, res[622].exec("x{903}", 1514));
+assertEquals(null, res[622].exec("** Failers", 1515));
+assertEquals(null, res[622].exec("X", 1516));
+assertEquals(null, res[622].exec("x{300}", 1517));
+assertEquals(null, res[622].exec("   ", 1518));
+assertEquals(null, res[623].exec("x{488}", 1519));
+assertEquals(null, res[623].exec("** Failers", 1520));
+assertEquals(null, res[623].exec("X", 1521));
+assertEquals(null, res[623].exec("x{903}", 1522));
+assertEquals(null, res[623].exec("x{300}", 1523));
+assertEquals(null, res[624].exec("x{300}", 1524));
+assertEquals(null, res[624].exec("** Failers", 1525));
+assertEquals(null, res[624].exec("X", 1526));
+assertEquals(null, res[624].exec("x{903}", 1527));
+assertEquals(null, res[624].exec("0123456789x{660}x{661}x{662}x{663}x{664}x{665}x{666}x{667}x{668}x{669}x{66a}", 1528));
+assertEquals(null, res[624].exec("x{6f0}x{6f1}x{6f2}x{6f3}x{6f4}x{6f5}x{6f6}x{6f7}x{6f8}x{6f9}x{6fa}", 1529));
+assertEquals(null, res[624].exec("x{966}x{967}x{968}x{969}x{96a}x{96b}x{96c}x{96d}x{96e}x{96f}x{970}", 1530));
+assertEquals(null, res[624].exec("** Failers", 1531));
+assertEquals(null, res[624].exec("X", 1532));
+assertEquals(null, res[625].exec("x{16ee}", 1533));
+assertEquals(null, res[625].exec("** Failers", 1534));
+assertEquals(null, res[625].exec("X", 1535));
+assertEquals(null, res[625].exec("x{966}", 1536));
+assertEquals(null, res[626].exec("x{b2}", 1537));
+assertEquals(null, res[626].exec("x{b3}", 1538));
+assertEquals(null, res[626].exec("** Failers", 1539));
+assertEquals(null, res[626].exec("X", 1540));
+assertEquals(null, res[626].exec("x{16ee}", 1541));
+assertEquals(null, res[627].exec("_", 1542));
+assertEquals(null, res[627].exec("x{203f}", 1543));
+assertEquals(null, res[627].exec("** Failers", 1544));
+assertEquals(null, res[627].exec("X", 1545));
+assertEquals(null, res[627].exec("-", 1546));
+assertEquals(null, res[627].exec("x{58a}", 1547));
+assertEquals(null, res[628].exec("-", 1548));
+assertEquals(null, res[628].exec("x{58a}", 1549));
+assertEquals(null, res[628].exec("** Failers", 1550));
+assertEquals(null, res[628].exec("X", 1551));
+assertEquals(null, res[628].exec("x{203f}", 1552));
+assertEquals(null, res[629].exec(")", 1553));
+assertEquals(null, res[629].exec("]", 1554));
+assertEquals(null, res[629].exec("}", 1555));
+assertEquals(null, res[629].exec("x{f3b}", 1556));
+assertEquals(null, res[629].exec("** Failers", 1557));
+assertEquals(null, res[629].exec("X", 1558));
+assertEquals(null, res[629].exec("x{203f}", 1559));
+assertEquals(null, res[629].exec("(", 1560));
+assertEquals(null, res[629].exec("[", 1561));
+assertEquals(null, res[629].exec("{", 1562));
+assertEquals(null, res[629].exec("x{f3c}", 1563));
+assertEquals(null, res[630].exec("x{bb}", 1564));
+assertEquals(null, res[630].exec("x{2019}", 1565));
+assertEquals(null, res[630].exec("** Failers", 1566));
+assertEquals(null, res[630].exec("X", 1567));
+assertEquals(null, res[630].exec("x{203f}", 1568));
+assertEquals(null, res[631].exec("x{ab}", 1569));
+assertEquals(null, res[631].exec("x{2018}", 1570));
+assertEquals(null, res[631].exec("** Failers", 1571));
+assertEquals(null, res[631].exec("X", 1572));
+assertEquals(null, res[631].exec("x{203f}", 1573));
+assertEquals(null, res[632].exec("!", 1574));
+assertEquals(null, res[632].exec("x{37e}", 1575));
+assertEquals(null, res[632].exec("** Failers", 1576));
+assertEquals(null, res[632].exec("X", 1577));
+assertEquals(null, res[632].exec("x{203f}", 1578));
+assertEquals(null, res[633].exec("(", 1579));
+assertEquals(null, res[633].exec("[", 1580));
+assertEquals(null, res[633].exec("{", 1581));
+assertEquals(null, res[633].exec("x{f3c}", 1582));
+assertEquals(null, res[633].exec("** Failers", 1583));
+assertEquals(null, res[633].exec("X", 1584));
+assertEquals(null, res[633].exec(")", 1585));
+assertEquals(null, res[633].exec("]", 1586));
+assertEquals(null, res[633].exec("}", 1587));
+assertEquals(null, res[633].exec("x{f3b}", 1588));
+assertEquals(null, res[633].exec("$x{a2}x{a3}x{a4}x{a5}x{a6}", 1589));
+assertEquals(null, res[633].exec("x{9f2}", 1590));
+assertEquals(null, res[633].exec("** Failers", 1591));
+assertEquals(null, res[633].exec("X", 1592));
+assertEquals(null, res[633].exec("x{2c2}", 1593));
+assertEquals(null, res[634].exec("x{2c2}", 1594));
+assertEquals(null, res[634].exec("** Failers", 1595));
+assertEquals(null, res[634].exec("X", 1596));
+assertEquals(null, res[634].exec("x{9f2}", 1597));
+assertEquals(null, res[634].exec("+<|~x{ac}x{2044}", 1598));
+assertEquals(null, res[634].exec("** Failers", 1599));
+assertEquals(null, res[634].exec("X", 1600));
+assertEquals(null, res[634].exec("x{9f2}", 1601));
+assertEquals(null, res[635].exec("x{a6}", 1602));
+assertEquals(null, res[635].exec("x{482} ", 1603));
+assertEquals(null, res[635].exec("** Failers", 1604));
+assertEquals(null, res[635].exec("X", 1605));
+assertEquals(null, res[635].exec("x{9f2}", 1606));
+assertEquals(null, res[636].exec("x{2028}", 1607));
+assertEquals(null, res[636].exec("** Failers", 1608));
+assertEquals(null, res[636].exec("X", 1609));
+assertEquals(null, res[636].exec("x{2029}", 1610));
+assertEquals(null, res[637].exec("x{2029}", 1611));
+assertEquals(null, res[637].exec("** Failers", 1612));
+assertEquals(null, res[637].exec("X", 1613));
+assertEquals(null, res[637].exec("x{2028}", 1614));
+assertEquals(null, res[638].exec("\\ \\", 1615));
+assertEquals(null, res[638].exec("x{a0}", 1616));
+assertEquals(null, res[638].exec("x{1680}", 1617));
+assertEquals(null, res[638].exec("x{180e}", 1618));
+assertEquals(null, res[638].exec("x{2000}", 1619));
+assertEquals(null, res[638].exec("x{2001}     ", 1620));
+assertEquals(null, res[638].exec("** Failers", 1621));
+assertEquals(null, res[638].exec("x{2028}", 1622));
+assertEquals(null, res[638].exec("x{200d} ", 1623));
+assertEquals(null, res[638].exec("  x{660}x{661}x{662}ABC", 1624));
+assertEquals(null, res[638].exec("  x{660}x{661}x{662}ABC", 1625));
+assertEquals(null, res[639].exec("  x{660}x{661}x{662}ABC", 1626));
+assertEquals(null, res[640].exec("  x{660}x{661}x{662}ABC", 1627));
+assertEquals(null, res[641].exec("  x{660}x{661}x{662}ABC", 1628));
+assertEquals(null, res[642].exec("  x{660}x{661}x{662}ABC", 1629));
+assertEquals(null, res[643].exec("  x{660}x{661}x{662}ABC", 1630));
+assertEquals(null, res[644].exec("  x{660}x{661}x{662}ABC", 1631));
+assertEquals(null, res[645].exec("  x{660}x{661}x{662}ABC", 1632));
+assertEquals(null, res[646].exec("  x{660}x{661}x{662}ABC", 1633));
+assertEquals(null, res[647].exec("  x{660}x{661}x{662}ABC", 1634));
+assertEquals(null, res[647].exec("  x{660}x{661}x{662}ABC", 1635));
+assertEquals(null, res[647].exec("  x{660}x{661}x{662}ABC", 1636));
+assertEquals(null, res[647].exec("  ** Failers", 1637));
+assertEquals(null, res[647].exec("  x{660}x{661}x{662}ABC", 1638));
+assertEquals(null, res[648].exec("A", 1639));
+assertEquals(null, res[648].exec("ax{10a0}B ", 1640));
+assertEquals(null, res[648].exec("** Failers ", 1641));
+assertEquals(null, res[648].exec("a", 1642));
+assertEquals(null, res[648].exec("x{1d00}  ", 1643));
+assertEquals(null, res[649].exec("1234", 1644));
+assertEquals(null, res[649].exec("** Failers", 1645));
+assertEquals(null, res[649].exec("ABC ", 1646));
+assertEquals(null, res[650].exec("1234", 1647));
+assertEquals(null, res[650].exec("** Failers", 1648));
+assertEquals(null, res[650].exec("ABC ", 1649));
+assertEquals(null, res[650].exec("A2XYZ", 1650));
+assertEquals(null, res[650].exec("123A5XYZPQR", 1651));
+assertEquals(null, res[650].exec("ABAx{660}XYZpqr", 1652));
+assertEquals(null, res[650].exec("** Failers", 1653));
+assertEquals(null, res[650].exec("AXYZ", 1654));
+assertEquals(null, res[650].exec("XYZ     ", 1655));
+assertEquals(null, res[650].exec("1XYZ", 1656));
+assertEquals(null, res[650].exec("AB=XYZ.. ", 1657));
+assertEquals(null, res[650].exec("XYZ ", 1658));
+assertEquals(null, res[650].exec("** Failers", 1659));
+assertEquals(null, res[650].exec("WXYZ ", 1660));
+assertEquals(null, res[655].exec("1234", 1661));
+assertEquals(null, res[655].exec("1234", 1662));
+assertEquals(null, res[655].exec("12-34", 1663));
+assertEquals("{", res[655].exec("12+x{661}-34  "), 1664);
+assertEquals(null, res[655].exec("** Failers", 1665));
+assertEquals("d", res[655].exec("abcd  "), 1666);
+assertEquals("d", res[656].exec("abcd"), 1667);
+assertEquals(null, res[656].exec("** Failers", 1668));
+assertEquals(null, res[656].exec("1234", 1669));
+assertEquals(null, res[657].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1670));
+assertEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[657].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1671);
+assertEquals(" ", res[657].exec(" "), 1672);
+assertEquals(null, res[657].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1673));
+assertEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[657].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1674);
+assertEquals(null, res[658].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1675));
+assertEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[658].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1676);
+assertEquals(null, res[659].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1677));
+assertEquals(null, res[659].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 1678));
+assertEquals(null, res[660].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 1679));
+assertEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[660].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 1680);
+assertEquals(null, res[661].exec("a", 1681));
+assertEquals(null, res[661].exec("A ", 1682));
+assertEquals(null, res[662].exec("a", 1683));
+assertEquals(null, res[662].exec("A ", 1684));
+assertEquals(null, res[663].exec("A", 1685));
+assertEquals(null, res[663].exec("aZ", 1686));
+assertEquals(null, res[663].exec("** Failers", 1687));
+assertEquals(null, res[663].exec("abc   ", 1688));
+assertEquals(null, res[664].exec("A", 1689));
+assertEquals(null, res[664].exec("aZ", 1690));
+assertEquals(null, res[664].exec("** Failers", 1691));
+assertEquals(null, res[664].exec("abc   ", 1692));
+assertEquals(null, res[665].exec("a", 1693));
+assertEquals(null, res[665].exec("Az", 1694));
+assertEquals(null, res[665].exec("** Failers", 1695));
+assertEquals(null, res[665].exec("ABC   ", 1696));
+assertEquals(null, res[666].exec("a", 1697));
+assertEquals(null, res[666].exec("Az", 1698));
+assertEquals(null, res[666].exec("** Failers", 1699));
+assertEquals(null, res[666].exec("ABC   ", 1700));
+assertEquals(null, res[666].exec("x{c0}", 1701));
+assertEquals(null, res[666].exec("x{e0} ", 1702));
+assertEquals(null, res[666].exec("x{c0}", 1703));
+assertEquals(null, res[666].exec("x{e0} ", 1704));
+assertEquals(null, res[666].exec("Ax{391}x{10427}x{ff3a}x{1fb0}", 1705));
+assertEquals(null, res[666].exec("** Failers", 1706));
+assertEquals(null, res[666].exec("ax{391}x{10427}x{ff3a}x{1fb0}   ", 1707));
+assertEquals(null, res[666].exec("Ax{3b1}x{10427}x{ff3a}x{1fb0}", 1708));
+assertEquals(null, res[666].exec("Ax{391}x{1044F}x{ff3a}x{1fb0}", 1709));
+assertEquals(null, res[666].exec("Ax{391}x{10427}x{ff5a}x{1fb0}", 1710));
+assertEquals(null, res[666].exec("Ax{391}x{10427}x{ff3a}x{1fb8}", 1711));
+assertEquals(null, res[666].exec("Ax{391}x{10427}x{ff3a}x{1fb0}", 1712));
+assertEquals(null, res[666].exec("ax{391}x{10427}x{ff3a}x{1fb0}   ", 1713));
+assertEquals(null, res[666].exec("Ax{3b1}x{10427}x{ff3a}x{1fb0}", 1714));
+assertEquals(null, res[666].exec("Ax{391}x{1044F}x{ff3a}x{1fb0}", 1715));
+assertEquals(null, res[666].exec("Ax{391}x{10427}x{ff5a}x{1fb0}", 1716));
+assertEquals(null, res[666].exec("Ax{391}x{10427}x{ff3a}x{1fb8}", 1717));
+assertEquals(null, res[666].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}", 1718));
+assertEquals(null, res[666].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}X", 1719));
+assertEquals(null, res[666].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}X", 1720));
+assertEquals(null, res[666].exec("x{391}", 1721));
+assertEquals(null, res[666].exec("x{ff3a}", 1722));
+assertEquals(null, res[666].exec("x{3b1}", 1723));
+assertEquals(null, res[666].exec("x{ff5a}   ", 1724));
+assertEquals(null, res[666].exec("x{c0}", 1725));
+assertEquals(null, res[666].exec("x{e0} ", 1726));
+assertEquals(null, res[666].exec("x{104}", 1727));
+assertEquals(null, res[666].exec("x{105}", 1728));
+assertEquals(null, res[666].exec("x{109}  ", 1729));
+assertEquals(null, res[666].exec("** Failers", 1730));
+assertEquals(null, res[666].exec("x{100}", 1731));
+assertEquals(null, res[666].exec("x{10a} ", 1732));
+assertEquals(null, res[666].exec("Z", 1733));
+assertEquals(null, res[666].exec("z", 1734));
+assertEquals(null, res[666].exec("x{39c}", 1735));
+assertEquals(null, res[666].exec("x{178}", 1736));
+assertEquals(null, res[666].exec("|", 1737));
+assertEquals(null, res[666].exec("x{80}", 1738));
+assertEquals(null, res[666].exec("x{ff}", 1739));
+assertEquals(null, res[666].exec("x{100}", 1740));
+assertEquals(null, res[666].exec("x{101} ", 1741));
+assertEquals(null, res[666].exec("** Failers", 1742));
+assertEquals(null, res[666].exec("x{102}", 1743));
+assertEquals(null, res[666].exec("Y", 1744));
+assertEquals(null, res[666].exec("y           ", 1745));
+assertEquals(null, res[667].exec("A", 1746));
+assertEquals(null, res[667].exec("Ax{300}BC ", 1747));
+assertEquals(null, res[667].exec("Ax{300}x{301}x{302}BC ", 1748));
+assertEquals(null, res[667].exec("*** Failers", 1749));
+assertEquals(null, res[667].exec("x{300}  ", 1750));
+assertEquals("X", res[668].exec("X123"), 1751);
+assertEquals(null, res[668].exec("*** Failers", 1752));
+assertEquals(null, res[668].exec("AXYZ", 1753));
+assertEquals(null, res[669].exec("Ax{300}x{301}x{302}BCAx{300}x{301} ", 1754));
+assertEquals(null, res[669].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C ", 1755));
+assertEquals(null, res[670].exec("Ax{300}x{301}x{302}BCAx{300}x{301} ", 1756));
+assertEquals(null, res[670].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C ", 1757));
+assertEquals("A,,A", res[671].exec("Ax{300}x{301}x{302}BCAx{300}x{301} "), 1758);
+assertEquals("A,,A", res[671].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 1759);
+assertEquals("A,,A", res[672].exec("Ax{300}x{301}x{302}BCAx{300}x{301} "), 1760);
+assertEquals("A,,A", res[672].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 1761);
+assertEquals(null, res[673].exec("*** Failers", 1762));
+assertEquals(null, res[673].exec("Ax{300}x{301}x{302}", 1763));
+assertEquals(null, res[674].exec("Ax{300}x{301}Bx{300}X", 1764));
+assertEquals(null, res[674].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}", 1765));
+assertEquals(null, res[674].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}X", 1766));
+assertEquals(null, res[674].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X", 1767));
+assertEquals(null, res[675].exec("Ax{300}x{301}Bx{300}X", 1768));
+assertEquals(null, res[675].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}", 1769));
+assertEquals(null, res[675].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}X", 1770));
+assertEquals(null, res[675].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X", 1771));
+assertEquals(null, res[675].exec("x{2e81}x{3007}x{2f804}x{31a0}", 1772));
+assertEquals(null, res[675].exec("** Failers", 1773));
+assertEquals(null, res[675].exec("x{2e7f}  ", 1774));
+assertEquals(null, res[675].exec("x{3105}", 1775));
+assertEquals(null, res[675].exec("** Failers", 1776));
+assertEquals(null, res[675].exec("x{30ff}  ", 1777));
+assertEquals(null, res[676].exec("x{06e9}", 1778));
+assertEquals(null, res[676].exec("x{060b}", 1779));
+assertEquals(null, res[676].exec("** Failers", 1780));
+assertEquals(null, res[676].exec("Xx{06e9}   ", 1781));
+assertEquals(null, res[677].exec("x{2f800}", 1782));
+assertEquals(null, res[677].exec("** Failers", 1783));
+assertEquals(null, res[677].exec("x{a014}", 1784));
+assertEquals(null, res[677].exec("x{a4c6}   ", 1785));
+assertEquals(null, res[678].exec("AXYZ", 1786));
+assertEquals(null, res[678].exec("x{1234}XYZ ", 1787));
+assertEquals(null, res[678].exec("** Failers", 1788));
+assertEquals(null, res[678].exec("X  ", 1789));
+assertEquals(null, res[679].exec("** Failers", 1790));
+assertEquals(null, res[679].exec("AX", 1791));
+assertEquals(null, res[680].exec("XYZ", 1792));
+assertEquals(null, res[680].exec("AXYZ", 1793));
+assertEquals(null, res[680].exec("x{1234}XYZ ", 1794));
+assertEquals(null, res[680].exec("** Failers", 1795));
+assertEquals(null, res[680].exec("ABXYZ   ", 1796));
+assertEquals(null, res[681].exec("XYZ", 1797));
+assertEquals(null, res[681].exec("** Failers", 1798));
+assertEquals(null, res[681].exec("AXYZ", 1799));
+assertEquals(null, res[681].exec("x{1234}XYZ ", 1800));
+assertEquals(null, res[681].exec("ABXYZ   ", 1801));
+assertEquals(null, res[681].exec("AXYZ", 1802));
+assertEquals(null, res[681].exec("x{1234}XYZ", 1803));
+assertEquals(null, res[681].exec("Ax{1234}XYZ", 1804));
+assertEquals(null, res[681].exec("** Failers", 1805));
+assertEquals(null, res[681].exec("XYZ", 1806));
+assertEquals(null, res[681].exec("** Failers", 1807));
+assertEquals(null, res[681].exec("AXYZ", 1808));
+assertEquals(null, res[681].exec("x{1234}XYZ", 1809));
+assertEquals(null, res[681].exec("Ax{1234}XYZ", 1810));
+assertEquals(null, res[681].exec("XYZ", 1811));
+assertEquals(null, res[682].exec("XYZ", 1812));
+assertEquals(null, res[682].exec("AXYZ", 1813));
+assertEquals(null, res[682].exec("x{1234}XYZ", 1814));
+assertEquals(null, res[682].exec("Ax{1234}XYZ", 1815));
+assertEquals(null, res[682].exec("** Failers", 1816));
+assertEquals(null, res[683].exec("XYZ", 1817));
+assertEquals(null, res[683].exec("** Failers", 1818));
+assertEquals(null, res[683].exec("AXYZ", 1819));
+assertEquals(null, res[683].exec("x{1234}XYZ", 1820));
+assertEquals(null, res[683].exec("Ax{1234}XYZ", 1821));
+assertEquals("AX", res[684].exec("AXYZ"), 1822);
+assertEquals(null, res[684].exec("x{1234}XYZ ", 1823));
+assertEquals(null, res[684].exec("** Failers", 1824));
+assertEquals(null, res[684].exec("X  ", 1825));
+assertEquals(null, res[685].exec("** Failers", 1826));
+assertEquals("AX", res[685].exec("AX"), 1827);
+assertEquals("X", res[686].exec("XYZ"), 1828);
+assertEquals("AX", res[686].exec("AXYZ"), 1829);
+assertEquals(null, res[686].exec("x{1234}XYZ ", 1830));
+assertEquals(null, res[686].exec("** Failers", 1831));
+assertEquals(null, res[686].exec("ABXYZ   ", 1832));
+assertEquals("X", res[687].exec("XYZ"), 1833);
+assertEquals(null, res[687].exec("** Failers", 1834));
+assertEquals("AX", res[687].exec("AXYZ"), 1835);
+assertEquals(null, res[687].exec("x{1234}XYZ ", 1836));
+assertEquals(null, res[687].exec("ABXYZ   ", 1837));
+assertEquals("AX", res[688].exec("AXYZ"), 1838);
+assertEquals(null, res[688].exec("x{1234}XYZ", 1839));
+assertEquals(null, res[688].exec("Ax{1234}XYZ", 1840));
+assertEquals(null, res[688].exec("** Failers", 1841));
+assertEquals(null, res[688].exec("XYZ", 1842));
+assertEquals(null, res[689].exec("** Failers", 1843));
+assertEquals("AX", res[689].exec("AXYZ"), 1844);
+assertEquals(null, res[689].exec("x{1234}XYZ", 1845));
+assertEquals(null, res[689].exec("Ax{1234}XYZ", 1846));
+assertEquals(null, res[689].exec("XYZ", 1847));
+assertEquals("X", res[690].exec("XYZ"), 1848);
+assertEquals("AX", res[690].exec("AXYZ"), 1849);
+assertEquals(null, res[690].exec("x{1234}XYZ", 1850));
+assertEquals(null, res[690].exec("Ax{1234}XYZ", 1851));
+assertEquals(null, res[690].exec("** Failers", 1852));
+assertEquals("X", res[691].exec("XYZ"), 1853);
+assertEquals(null, res[691].exec("** Failers", 1854));
+assertEquals("AX", res[691].exec("AXYZ"), 1855);
+assertEquals(null, res[691].exec("x{1234}XYZ", 1856));
+assertEquals(null, res[691].exec("Ax{1234}XYZ", 1857));
+assertEquals(null, res[692].exec("abcdefgh", 1858));
+assertEquals(null, res[692].exec("x{1234}\n\x0dx{3456}xyz ", 1859));
+assertEquals(null, res[693].exec("abcdefgh", 1860));
+assertEquals(null, res[693].exec("x{1234}\n\x0dx{3456}xyz ", 1861));
+assertEquals(null, res[694].exec("** Failers", 1862));
+assertEquals(null, res[694].exec("abcdefgh", 1863));
+assertEquals(null, res[694].exec("x{1234}\n\x0dx{3456}xyz ", 1864));
+assertEquals(null, res[695].exec(" AXY", 1865));
+assertEquals(null, res[695].exec(" aXY", 1866));
+assertEquals(null, res[695].exec(" x{1c5}XY", 1867));
+assertEquals(null, res[695].exec(" ** Failers", 1868));
+assertEquals(null, res[695].exec(" x{1bb}XY", 1869));
+assertEquals(null, res[695].exec(" x{2b0}XY", 1870));
+assertEquals(null, res[695].exec(" !XY      ", 1871));
+assertEquals(null, res[696].exec(" AXY", 1872));
+assertEquals(null, res[696].exec(" aXY", 1873));
+assertEquals(null, res[696].exec(" x{1c5}XY", 1874));
+assertEquals(null, res[696].exec(" ** Failers", 1875));
+assertEquals(null, res[696].exec(" x{1bb}XY", 1876));
+assertEquals(null, res[696].exec(" x{2b0}XY", 1877));
+assertEquals(null, res[696].exec(" !XY      ", 1878));
+assertEquals(null, res[696].exec(" AXY", 1879));
+assertEquals(null, res[696].exec(" aXY", 1880));
+assertEquals(null, res[696].exec(" AbcdeXyz ", 1881));
+assertEquals(null, res[696].exec(" x{1c5}AbXY", 1882));
+assertEquals(null, res[696].exec(" abcDEXypqreXlmn ", 1883));
+assertEquals(null, res[696].exec(" ** Failers", 1884));
+assertEquals(null, res[696].exec(" x{1bb}XY", 1885));
+assertEquals(null, res[696].exec(" x{2b0}XY", 1886));
+assertEquals(null, res[696].exec(" !XY      ", 1887));
+assertEquals(null, res[697].exec(" AXY", 1888));
+assertEquals(null, res[697].exec(" aXY", 1889));
+assertEquals(null, res[697].exec(" AbcdeXyz ", 1890));
+assertEquals(null, res[697].exec(" x{1c5}AbXY", 1891));
+assertEquals(null, res[697].exec(" abcDEXypqreXlmn ", 1892));
+assertEquals(null, res[697].exec(" ** Failers", 1893));
+assertEquals(null, res[697].exec(" x{1bb}XY", 1894));
+assertEquals(null, res[697].exec(" x{2b0}XY", 1895));
+assertEquals(null, res[697].exec(" !XY      ", 1896));
+assertEquals(null, res[697].exec(" AXY", 1897));
+assertEquals(null, res[697].exec(" aXY", 1898));
+assertEquals(null, res[697].exec(" AbcdeXyz ", 1899));
+assertEquals(null, res[697].exec(" x{1c5}AbXY", 1900));
+assertEquals(null, res[697].exec(" abcDEXypqreXlmn ", 1901));
+assertEquals(null, res[697].exec(" ** Failers", 1902));
+assertEquals(null, res[697].exec(" x{1bb}XY", 1903));
+assertEquals(null, res[697].exec(" x{2b0}XY", 1904));
+assertEquals(null, res[697].exec(" !XY      ", 1905));
+assertEquals(null, res[698].exec(" AXY", 1906));
+assertEquals(null, res[698].exec(" aXY", 1907));
+assertEquals(null, res[698].exec(" AbcdeXyz ", 1908));
+assertEquals(null, res[698].exec(" x{1c5}AbXY", 1909));
+assertEquals(null, res[698].exec(" abcDEXypqreXlmn ", 1910));
+assertEquals(null, res[698].exec(" ** Failers", 1911));
+assertEquals(null, res[698].exec(" x{1bb}XY", 1912));
+assertEquals(null, res[698].exec(" x{2b0}XY", 1913));
+assertEquals(null, res[698].exec(" !XY      ", 1914));
+assertEquals(null, res[699].exec(" !XY", 1915));
+assertEquals(null, res[699].exec(" x{1bb}XY", 1916));
+assertEquals(null, res[699].exec(" x{2b0}XY", 1917));
+assertEquals(null, res[699].exec(" ** Failers", 1918));
+assertEquals(null, res[699].exec(" x{1c5}XY", 1919));
+assertEquals(null, res[699].exec(" AXY      ", 1920));
+assertEquals(null, res[700].exec(" !XY", 1921));
+assertEquals(null, res[700].exec(" x{1bb}XY", 1922));
+assertEquals(null, res[700].exec(" x{2b0}XY", 1923));
+assertEquals(null, res[700].exec(" ** Failers", 1924));
+assertEquals(null, res[700].exec(" x{1c5}XY", 1925));
+assertEquals(null, res[700].exec(" AXY      ", 1926));
+assertEquals(null, res[701].exec("\xa0!", 1927));
+assertEquals(null, res[701].exec("AabcabcYZ    ", 1928));
+assertEquals("L=abcX,L=abc,abc", res[702].exec("L=abcX"), 1929);
+assertEquals(null, res[702].exec("x{c0}", 1930));
+assertEquals(null, res[702].exec("x{e0} ", 1931));
+assertEquals(null, res[702].exec("x{c0}", 1932));
+assertEquals(null, res[702].exec("x{e0} ", 1933));
+assertEquals(null, res[703].exec("x{1b00}x{12000}x{7c0}x{a840}x{10900}", 1934));
+assertEquals(null, res[706].exec("123abcdefg", 1935));
+assertEquals(null, res[706].exec("123abc\xc4\xc5zz", 1936));
+assertEquals(null, res[710].exec("A\x80", 1937));
+assertEquals(null, res[725].exec("x{60e} ", 1938));
+assertEquals(null, res[725].exec("x{656} ", 1939));
+assertEquals(null, res[725].exec("x{657} ", 1940));
+assertEquals(null, res[725].exec("x{658} ", 1941));
+assertEquals(null, res[725].exec("x{659} ", 1942));
+assertEquals(null, res[725].exec("x{65a} ", 1943));
+assertEquals(null, res[725].exec("x{65b} ", 1944));
+assertEquals(null, res[725].exec("x{65c} ", 1945));
+assertEquals(null, res[725].exec("x{65d} ", 1946));
+assertEquals(null, res[725].exec("x{65e} ", 1947));
+assertEquals(null, res[725].exec("x{66a} ", 1948));
+assertEquals(null, res[725].exec("x{6e9} ", 1949));
+assertEquals(null, res[725].exec("x{6ef}", 1950));
+assertEquals(null, res[725].exec("x{6fa}  ", 1951));
+assertEquals(null, res[725].exec("** Failers", 1952));
+assertEquals(null, res[725].exec("x{600}", 1953));
+assertEquals(null, res[725].exec("x{650}", 1954));
+assertEquals(null, res[725].exec("x{651}  ", 1955));
+assertEquals(null, res[725].exec("x{652}  ", 1956));
+assertEquals(null, res[725].exec("x{653}  ", 1957));
+assertEquals(null, res[725].exec("x{654} ", 1958));
+assertEquals(null, res[725].exec("x{655} ", 1959));
+assertEquals(null, res[725].exec("x{65f}  ", 1960));
+assertEquals(null, res[726].exec("x{1d2b} ", 1961));
+assertEquals(null, res[727].exec("x{589}", 1962));
+assertEquals(null, res[727].exec("x{60c}", 1963));
+assertEquals(null, res[727].exec("x{61f}  ", 1964));
+assertEquals(null, res[727].exec("x{964}", 1965));
+assertEquals(null, res[727].exec("x{965}  ", 1966));
+assertEquals(null, res[727].exec("x{970}  ", 1967));
+assertEquals(null, res[728].exec("x{64b}", 1968));
+assertEquals(null, res[728].exec("x{654}", 1969));
+assertEquals(null, res[728].exec("x{655}", 1970));
+assertEquals(null, res[728].exec("x{200c} ", 1971));
+assertEquals(null, res[728].exec("** Failers", 1972));
+assertEquals(null, res[728].exec("x{64a}", 1973));
+assertEquals(null, res[728].exec("x{656}     ", 1974));
+assertEquals(null, res[729].exec("x{10450}", 1975));
+assertEquals(null, res[729].exec("x{1047f}", 1976));
+assertEquals(null, res[730].exec("x{10400}", 1977));
+assertEquals(null, res[730].exec("x{1044f}", 1978));
+assertEquals(null, res[731].exec("x{10480}", 1979));
+assertEquals(null, res[731].exec("x{1049d}", 1980));
+assertEquals(null, res[731].exec("x{104a0}", 1981));
+assertEquals(null, res[731].exec("x{104a9}", 1982));
+assertEquals(null, res[731].exec("** Failers", 1983));
+assertEquals(null, res[731].exec("x{1049e}", 1984));
+assertEquals(null, res[731].exec("x{1049f}", 1985));
+assertEquals(null, res[731].exec("x{104aa}           ", 1986));
+assertEquals(null, res[731].exec("\xe2\x80\xa8\xe2\x80\xa8", 1987));
+assertEquals(null, res[731].exec("x{2028}x{2028}x{2028}", 1988));
+assertEquals(null, res[732].exec("x{c0}x{e0}x{116}x{117}", 1989));
+assertEquals(null, res[732].exec("x{c0}x{e0}x{116}x{117}", 1990));
+assertEquals(null, res[733].exec("x{102A4}x{AA52}x{A91D}x{1C46}x{10283}x{1092E}x{1C6B}x{A93B}x{A8BF}x{1BA0}x{A50A}====", 1991));
+assertEquals(null, res[733].exec("x{a77d}x{1d79}", 1992));
+assertEquals(null, res[733].exec("x{1d79}x{a77d} ", 1993));
+assertEquals(null, res[733].exec("x{a77d}x{1d79}", 1994));
+assertEquals(null, res[733].exec("** Failers ", 1995));
+assertEquals(null, res[733].exec("x{1d79}x{a77d} ", 1996));
+assertEquals("AA,A", res[734].exec("AA"), 1997);
+assertEquals("Aa,A", res[734].exec("Aa"), 1998);
+assertEquals("aa,a", res[734].exec("aa"), 1999);
+assertEquals("aA,a", res[734].exec("aA"), 2000);
+assertEquals(null, res[734].exec("x{de}x{de}", 2001));
+assertEquals(null, res[734].exec("x{de}x{fe}", 2002));
+assertEquals(null, res[734].exec("x{fe}x{fe}", 2003));
+assertEquals(null, res[734].exec("x{fe}x{de}", 2004));
+assertEquals(null, res[734].exec("x{10a}x{10a}", 2005));
+assertEquals(null, res[734].exec("x{10a}x{10b}", 2006));
+assertEquals(null, res[734].exec("x{10b}x{10b}", 2007));
+assertEquals(null, res[734].exec("x{10b}x{10a}", 2008));
+assertEquals("abc", res[736].exec("abc"), 2009);
+assertEquals("abc", res[737].exec("abc"), 2010);
+assertEquals("abbbbc", res[737].exec("abbbbc"), 2011);
+assertEquals("ac", res[737].exec("ac"), 2012);
+assertEquals("abc", res[738].exec("abc"), 2013);
+assertEquals("abbbbbbc", res[738].exec("abbbbbbc"), 2014);
+assertEquals(null, res[738].exec("*** Failers ", 2015));
+assertEquals(null, res[738].exec("ac", 2016));
+assertEquals(null, res[738].exec("ab", 2017));
+assertEquals("a", res[739].exec("a"), 2018);
+assertEquals("aaaaaaaaaaaaaaaaa", res[739].exec("aaaaaaaaaaaaaaaaa"), 2019);
+assertEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[739].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "), 2020);
+assertEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[739].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaF "), 2021);
+assertEquals("a,a", res[740].exec("a"), 2022);
+assertEquals("a,a", res[740].exec("abcd"), 2023);
+assertEquals("a,a", res[740].exec("african"), 2024);
+assertEquals("abc", res[741].exec("abcdef"), 2025);
+assertEquals(null, res[741].exec("*** Failers", 2026));
+assertEquals(null, res[741].exec("xyzabc", 2027));
+assertEquals(null, res[741].exec("xyz\nabc    ", 2028));
+assertEquals("abc", res[742].exec("abcdef"), 2029);
+assertEquals("abc", res[742].exec("xyz\nabc    "), 2030);
+assertEquals(null, res[742].exec("*** Failers", 2031));
+assertEquals(null, res[742].exec("xyzabc", 2032));
+assertEquals(null, res[743].exec("abcdef", 2033));
+assertEquals(null, res[743].exec("*** Failers", 2034));
+assertEquals(null, res[743].exec("xyzabc", 2035));
+assertEquals(null, res[743].exec("xyz\nabc    ", 2036));
+assertEquals(null, res[744].exec("abcdef", 2037));
+assertEquals(null, res[744].exec("*** Failers", 2038));
+assertEquals(null, res[744].exec("xyzabc", 2039));
+assertEquals(null, res[744].exec("xyz\nabc    ", 2040));
+assertEquals(null, res[745].exec("abcdef", 2041));
+assertEquals(null, res[745].exec("xyzabc>3", 2042));
+assertEquals(null, res[745].exec("*** Failers", 2043));
+assertEquals(null, res[745].exec("xyzabc    ", 2044));
+assertEquals(null, res[745].exec("xyzabc>2 ", 2045));
+assertEquals("x9yzz", res[746].exec("x9yzz"), 2046);
+assertEquals("x0y+z", res[746].exec("x0y+z"), 2047);
+assertEquals(null, res[746].exec("*** Failers", 2048));
+assertEquals(null, res[746].exec("xyz", 2049));
+assertEquals(null, res[746].exec("xxy0z     ", 2050));
+assertEquals("x yzz", res[747].exec("x yzz"), 2051);
+assertEquals("x y+z", res[747].exec("x y+z"), 2052);
+assertEquals(null, res[747].exec("*** Failers", 2053));
+assertEquals(null, res[747].exec("xyz", 2054));
+assertEquals(null, res[747].exec("xxyyz", 2055));
+assertEquals("xxy+z", res[748].exec("xxy+z"), 2056);
+assertEquals(null, res[748].exec("*** Failers", 2057));
+assertEquals(null, res[748].exec("xxy0z", 2058));
+assertEquals(null, res[748].exec("x+y+z         ", 2059));
+assertEquals("x+y", res[749].exec("x+y"), 2060);
+assertEquals("x-y", res[749].exec("x-y"), 2061);
+assertEquals(null, res[749].exec("*** Failers", 2062));
+assertEquals(null, res[749].exec("x\ny", 2063));
+assertEquals("x+y", res[750].exec("x+y"), 2064);
+assertEquals("x-y", res[750].exec("x-y"), 2065);
+assertEquals(null, res[750].exec("x\ny", 2066));
+assertEquals(null, res[750].exec("a+bc+dp+q", 2067));
+assertEquals(null, res[750].exec("a+bc\ndp+q", 2068));
+assertEquals(null, res[750].exec("x\nyp+q ", 2069));
+assertEquals(null, res[750].exec("*** Failers ", 2070));
+assertEquals(null, res[750].exec("a\nbc\ndp+q", 2071));
+assertEquals(null, res[750].exec("a+bc\ndp\nq", 2072));
+assertEquals(null, res[750].exec("x\nyp\nq ", 2073));
+assertEquals(null, res[751].exec("ba0", 2074));
+assertEquals(null, res[751].exec("*** Failers", 2075));
+assertEquals(null, res[751].exec("ba0\n", 2076));
+assertEquals(null, res[751].exec("ba0\ncd   ", 2077));
+assertEquals(null, res[752].exec("ba0", 2078));
+assertEquals(null, res[752].exec("*** Failers", 2079));
+assertEquals(null, res[752].exec("ba0\n", 2080));
+assertEquals(null, res[752].exec("ba0\ncd   ", 2081));
+assertEquals(null, res[753].exec("ba0", 2082));
+assertEquals(null, res[753].exec("ba0\n", 2083));
+assertEquals(null, res[753].exec("*** Failers", 2084));
+assertEquals(null, res[753].exec("ba0\ncd   ", 2085));
+assertEquals(null, res[754].exec("ba0", 2086));
+assertEquals(null, res[754].exec("ba0\n", 2087));
+assertEquals(null, res[754].exec("*** Failers", 2088));
+assertEquals(null, res[754].exec("ba0\ncd   ", 2089));
+assertEquals("a0", res[755].exec("ba0"), 2090);
+assertEquals(null, res[755].exec("ba0\n", 2091));
+assertEquals(null, res[755].exec("*** Failers", 2092));
+assertEquals(null, res[755].exec("ba0\ncd   ", 2093));
+assertEquals("a0", res[756].exec("ba0"), 2094);
+assertEquals("a0", res[756].exec("ba0\n"), 2095);
+assertEquals("a0", res[756].exec("ba0\ncd   "), 2096);
+assertEquals(null, res[756].exec("*** Failers", 2097));
+assertEquals("abc", res[757].exec("abc"), 2098);
+assertEquals("aBc", res[757].exec("aBc"), 2099);
+assertEquals("ABC", res[757].exec("ABC"), 2100);
+assertEquals("b", res[758].exec("abcd"), 2101);
+assertEquals("abz", res[759].exec("abz"), 2102);
+assertEquals("abb", res[759].exec("abbz"), 2103);
+assertEquals("az", res[759].exec("azz  "), 2104);
+assertEquals("yz", res[760].exec("ayzq"), 2105);
+assertEquals("xyz", res[760].exec("axyzq"), 2106);
+assertEquals("xxyz", res[760].exec("axxyz"), 2107);
+assertEquals("xxxyz", res[760].exec("axxxyzq"), 2108);
+assertEquals("xxxyz", res[760].exec("axxxxyzq"), 2109);
+assertEquals(null, res[760].exec("*** Failers", 2110));
+assertEquals(null, res[760].exec("ax", 2111));
+assertEquals(null, res[760].exec("axx     ", 2112));
+assertEquals(null, res[760].exec("  ", 2113));
+assertEquals("xxxyz", res[761].exec("axxxyzq"), 2114);
+assertEquals("xxxyz", res[761].exec("axxxxyzq"), 2115);
+assertEquals(null, res[761].exec("*** Failers", 2116));
+assertEquals(null, res[761].exec("ax", 2117));
+assertEquals(null, res[761].exec("axx     ", 2118));
+assertEquals(null, res[761].exec("ayzq", 2119));
+assertEquals(null, res[761].exec("axyzq", 2120));
+assertEquals(null, res[761].exec("axxyz", 2121));
+assertEquals(null, res[761].exec("  ", 2122));
+assertEquals("xxyz", res[762].exec("axxyz"), 2123);
+assertEquals("xxxyz", res[762].exec("axxxyzq"), 2124);
+assertEquals("xxxyz", res[762].exec("axxxxyzq"), 2125);
+assertEquals(null, res[762].exec("*** Failers", 2126));
+assertEquals(null, res[762].exec("ax", 2127));
+assertEquals(null, res[762].exec("axx     ", 2128));
+assertEquals(null, res[762].exec("ayzq", 2129));
+assertEquals(null, res[762].exec("axyzq", 2130));
+assertEquals(null, res[762].exec("  ", 2131));
+assertEquals("b", res[763].exec("bac"), 2132);
+assertEquals("bcdef", res[763].exec("bcdefax"), 2133);
+assertEquals("*** F", res[763].exec("*** Failers"), 2134);
+assertEquals("   ", res[763].exec("aaaaa   "), 2135);
+assertEquals("b", res[764].exec("bac"), 2136);
+assertEquals("bcdef", res[764].exec("bcdefax"), 2137);
+assertEquals("*** F", res[764].exec("*** Failers"), 2138);
+assertEquals("", res[764].exec("aaaaa   "), 2139);
+assertEquals("xyz", res[765].exec("xyz"), 2140);
+assertEquals("wxyz", res[765].exec("awxyza"), 2141);
+assertEquals("bcdef", res[765].exec("abcdefa"), 2142);
+assertEquals("bcdef", res[765].exec("abcdefghijk"), 2143);
+assertEquals("*** F", res[765].exec("*** Failers"), 2144);
+assertEquals(null, res[765].exec("axya", 2145));
+assertEquals(null, res[765].exec("axa", 2146));
+assertEquals("     ", res[765].exec("aaaaa         "), 2147);
+assertEquals("1234", res[766].exec("1234b567"), 2148);
+assertEquals("", res[766].exec("xyz"), 2149);
+assertEquals("a", res[767].exec("a1234b567"), 2150);
+assertEquals("xyz", res[767].exec("xyz"), 2151);
+assertEquals(" ", res[767].exec(" "), 2152);
+assertEquals("1234", res[768].exec("ab1234c56"), 2153);
+assertEquals(null, res[768].exec("*** Failers", 2154));
+assertEquals(null, res[768].exec("xyz", 2155));
+assertEquals("ab", res[769].exec("ab123c56"), 2156);
+assertEquals("*** Failers", res[769].exec("*** Failers"), 2157);
+assertEquals(null, res[769].exec("789", 2158));
+assertEquals("5A", res[770].exec("045ABC"), 2159);
+assertEquals("A", res[770].exec("ABC"), 2160);
+assertEquals(null, res[770].exec("*** Failers", 2161));
+assertEquals(null, res[770].exec("XYZ", 2162));
+assertEquals("A", res[771].exec("ABC"), 2163);
+assertEquals("BA", res[771].exec("BAC"), 2164);
+assertEquals("A", res[771].exec("9ABC             "), 2165);
+assertEquals(null, res[771].exec("*** Failers", 2166));
+assertEquals("aaaa", res[772].exec("aaaa"), 2167);
+assertEquals("xyz", res[773].exec("xyz"), 2168);
+assertEquals("ggggggggxyz", res[773].exec("ggggggggxyz"), 2169);
+assertEquals("abcdxyz", res[774].exec("abcdxyz"), 2170);
+assertEquals("axyz", res[774].exec("axyz"), 2171);
+assertEquals(null, res[774].exec("*** Failers", 2172));
+assertEquals(null, res[774].exec("xyz", 2173));
+assertEquals("xyz", res[775].exec("xyz"), 2174);
+assertEquals("cxyz", res[775].exec("cxyz       "), 2175);
+assertEquals("12X", res[776].exec("12X"), 2176);
+assertEquals("123X", res[776].exec("123X"), 2177);
+assertEquals(null, res[776].exec("*** Failers", 2178));
+assertEquals(null, res[776].exec("X", 2179));
+assertEquals(null, res[776].exec("1X", 2180));
+assertEquals(null, res[776].exec("1234X     ", 2181));
+assertEquals("a4", res[777].exec("a45"), 2182);
+assertEquals("b9", res[777].exec("b93"), 2183);
+assertEquals("c9", res[777].exec("c99z"), 2184);
+assertEquals("d0", res[777].exec("d04"), 2185);
+assertEquals(null, res[777].exec("*** Failers", 2186));
+assertEquals(null, res[777].exec("e45", 2187));
+assertEquals(null, res[777].exec("abcd      ", 2188));
+assertEquals(null, res[777].exec("abcd1234", 2189));
+assertEquals(null, res[777].exec("1234  ", 2190));
+assertEquals("a4", res[778].exec("a45"), 2191);
+assertEquals("b9", res[778].exec("b93"), 2192);
+assertEquals("c9", res[778].exec("c99z"), 2193);
+assertEquals("d0", res[778].exec("d04"), 2194);
+assertEquals("abcd1", res[778].exec("abcd1234"), 2195);
+assertEquals("1", res[778].exec("1234  "), 2196);
+assertEquals(null, res[778].exec("*** Failers", 2197));
+assertEquals(null, res[778].exec("e45", 2198));
+assertEquals(null, res[778].exec("abcd      ", 2199));
+assertEquals("a4", res[779].exec("a45"), 2200);
+assertEquals("b9", res[779].exec("b93"), 2201);
+assertEquals("c9", res[779].exec("c99z"), 2202);
+assertEquals("d0", res[779].exec("d04"), 2203);
+assertEquals("abcd1", res[779].exec("abcd1234"), 2204);
+assertEquals(null, res[779].exec("*** Failers", 2205));
+assertEquals(null, res[779].exec("1234  ", 2206));
+assertEquals(null, res[779].exec("e45", 2207));
+assertEquals(null, res[779].exec("abcd      ", 2208));
+assertEquals("aX", res[780].exec("aX"), 2209);
+assertEquals("aaX", res[780].exec("aaX "), 2210);
+assertEquals("a4", res[781].exec("a45"), 2211);
+assertEquals("b9", res[781].exec("b93"), 2212);
+assertEquals("c9", res[781].exec("c99z"), 2213);
+assertEquals("d0", res[781].exec("d04"), 2214);
+assertEquals("1", res[781].exec("1234  "), 2215);
+assertEquals(null, res[781].exec("*** Failers", 2216));
+assertEquals(null, res[781].exec("abcd1234", 2217));
+assertEquals(null, res[781].exec("e45", 2218));
+assertEquals("ab4", res[782].exec("ab45"), 2219);
+assertEquals("bcd9", res[782].exec("bcd93"), 2220);
+assertEquals(null, res[782].exec("*** Failers", 2221));
+assertEquals(null, res[782].exec("1234 ", 2222));
+assertEquals(null, res[782].exec("a36 ", 2223));
+assertEquals(null, res[782].exec("abcd1234", 2224));
+assertEquals(null, res[782].exec("ee45", 2225));
+assertEquals("abc4,abc", res[783].exec("abc45"), 2226);
+assertEquals("abcabcabc4,abc", res[783].exec("abcabcabc45"), 2227);
+assertEquals("4,", res[783].exec("42xyz "), 2228);
+assertEquals(null, res[783].exec("*** Failers", 2229));
+assertEquals("abc4,abc", res[784].exec("abc45"), 2230);
+assertEquals("abcabcabc4,abc", res[784].exec("abcabcabc45"), 2231);
+assertEquals(null, res[784].exec("*** Failers", 2232));
+assertEquals(null, res[784].exec("42xyz ", 2233));
+assertEquals("abc4,abc", res[785].exec("abc45"), 2234);
+assertEquals("4,", res[785].exec("42xyz "), 2235);
+assertEquals(null, res[785].exec("*** Failers", 2236));
+assertEquals(null, res[785].exec("abcabcabc45", 2237));
+assertEquals("abcabc4,abc", res[786].exec("abcabc45"), 2238);
+assertEquals("abcabcabc4,abc", res[786].exec("abcabcabc45"), 2239);
+assertEquals(null, res[786].exec("*** Failers", 2240));
+assertEquals(null, res[786].exec("abcabcabcabc45", 2241));
+assertEquals(null, res[786].exec("abc45", 2242));
+assertEquals(null, res[786].exec("42xyz ", 2243));
+assertEquals(null, res[786].exec("1abc2abc3456", 2244));
+assertEquals(null, res[786].exec("1abc2xyz3456 ", 2245));
+assertEquals("ab=ab,ab,ab", res[787].exec("ab=ab"), 2246);
+assertEquals("ab=ab,ab,ab", res[787].exec("ab=ab"), 2247);
+assertEquals(null, res[787].exec("abc", 2248));
+assertEquals(null, res[787].exec("a(b)c", 2249));
+assertEquals(null, res[787].exec("a(b(c))d  ", 2250));
+assertEquals(null, res[787].exec("*** Failers)", 2251));
+assertEquals(null, res[787].exec("a(b(c)d  ", 2252));
+assertEquals(null, res[787].exec(">abc>123<xyz<", 2253));
+assertEquals(null, res[787].exec(">abc>1(2)3<xyz<", 2254));
+assertEquals(null, res[787].exec(">abc>(1(2)3)<xyz<", 2255));
+assertEquals(null, res[787].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876", 2256));
+assertEquals(null, res[787].exec("*** Failers ", 2257));
+assertEquals(null, res[787].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 2258));
+assertEquals(null, res[787].exec("<>", 2259));
+assertEquals(null, res[787].exec("<abcd>", 2260));
+assertEquals(null, res[787].exec("<abc <123> hij>", 2261));
+assertEquals(null, res[787].exec("<abc <def> hij>", 2262));
+assertEquals(null, res[787].exec("<abc<>def> ", 2263));
+assertEquals(null, res[787].exec("<abc<>      ", 2264));
+assertEquals(null, res[787].exec("*** Failers", 2265));
+assertEquals(null, res[787].exec("<abc", 2266));
+assertEquals(null, res[787].exec("abc:                          ", 2267));
+assertEquals(null, res[787].exec("12                             ", 2268));
+assertEquals(null, res[787].exec("*** Failers                     ", 2269));
+assertEquals(null, res[787].exec("123                       ", 2270));
+assertEquals(null, res[787].exec("xyz                        ", 2271));
+assertEquals(null, res[787].exec("                            ", 2272));
+assertEquals(null, res[787].exec("abc:                        ", 2273));
+assertEquals(null, res[787].exec("12         ", 2274));
+assertEquals(null, res[787].exec("*** Failers", 2275));
+assertEquals(null, res[787].exec("123", 2276));
+assertEquals(null, res[787].exec("xyz    ", 2277));
+assertEquals(null, res[788].exec("abcde:                          ", 2278));
+assertEquals(null, res[788].exec("*** Failers                     ", 2279));
+assertEquals(null, res[788].exec("abc.. ", 2280));
+assertEquals(null, res[788].exec("123                       ", 2281));
+assertEquals(null, res[788].exec("vwxyz                        ", 2282));
+assertEquals(null, res[788].exec("                            ", 2283));
+assertEquals(null, res[789].exec("12         ", 2284));
+assertEquals(null, res[789].exec("*** Failers", 2285));
+assertEquals(null, res[789].exec("abcde:", 2286));
+assertEquals(null, res[789].exec("abc..  ", 2287));
+assertEquals(null, res[789].exec("123", 2288));
+assertEquals(null, res[789].exec("vwxyz    ", 2289));
+assertEquals(null, res[789].exec("abc12345", 2290));
+assertEquals(null, res[789].exec("wxy123z", 2291));
+assertEquals(null, res[789].exec("*** Failers", 2292));
+assertEquals(null, res[789].exec("123abc", 2293));
+assertEquals(null, res[789].exec("123abc", 2294));
+assertEquals(null, res[789].exec("mno123456 ", 2295));
+assertEquals(null, res[789].exec("*** Failers", 2296));
+assertEquals(null, res[789].exec("abc12345", 2297));
+assertEquals(null, res[789].exec("wxy123z", 2298));
+assertEquals(null, res[789].exec("abcxyz", 2299));
+assertEquals(null, res[789].exec("123abcxyz999 ", 2300));
+assertEquals("abc", res[791].exec("abcdef"), 2301);
+assertEquals(null, res[791].exec("*** Failers", 2302));
+assertEquals("abc", res[791].exec("abcdefB  "), 2303);
+assertEquals(",", res[792].exec("bcd"), 2304);
+assertEquals("aaa,aaa", res[792].exec("aaabcd"), 2305);
+assertEquals(",", res[792].exec("xyz"), 2306);
+assertEquals(",", res[792].exec("xyzN  "), 2307);
+assertEquals(",", res[792].exec("*** Failers"), 2308);
+assertEquals(",", res[792].exec("bcdN   "), 2309);
+assertEquals("xyz", res[793].exec("xyz"), 2310);
+assertEquals(null, res[793].exec("xyz\n", 2311));
+assertEquals(null, res[793].exec("*** Failers", 2312));
+assertEquals(null, res[793].exec("xyzZ", 2313));
+assertEquals(null, res[793].exec("xyz\nZ    ", 2314));
+assertEquals("xyz", res[794].exec("xyz"), 2315);
+assertEquals("xyz", res[794].exec("xyz\n "), 2316);
+assertEquals("xyz", res[794].exec("abcxyz\npqr "), 2317);
+assertEquals("xyz", res[794].exec("abcxyz\npqrZ "), 2318);
+assertEquals("xyz", res[794].exec("xyz\nZ    "), 2319);
+assertEquals(null, res[794].exec("*** Failers", 2320));
+assertEquals(null, res[794].exec("xyzZ", 2321));
+assertEquals(null, res[795].exec("abcdef", 2322));
+assertEquals(null, res[795].exec("defabcxyz>3 ", 2323));
+assertEquals(null, res[795].exec("*** Failers ", 2324));
+assertEquals(null, res[795].exec("defabcxyz", 2325));
+assertEquals(null, res[796].exec("abP", 2326));
+assertEquals(null, res[796].exec("abcdeP", 2327));
+assertEquals("abcdef", res[796].exec("abcdefP"), 2328);
+assertEquals(null, res[796].exec("*** Failers", 2329));
+assertEquals(null, res[796].exec("abxP    ", 2330));
+assertEquals(null, res[797].exec("aP", 2331));
+assertEquals(null, res[797].exec("aaP", 2332));
+assertEquals(null, res[797].exec("aa2P ", 2333));
+assertEquals(null, res[797].exec("aaaP", 2334));
+assertEquals(null, res[797].exec("aaa23P ", 2335));
+assertEquals(null, res[797].exec("aaaa12345P", 2336));
+assertEquals("aa0z", res[797].exec("aa0zP"), 2337);
+assertEquals("aaaa4444444444444z", res[797].exec("aaaa4444444444444zP "), 2338);
+assertEquals(null, res[797].exec("*** Failers", 2339));
+assertEquals(null, res[797].exec("azP ", 2340));
+assertEquals(null, res[797].exec("aaaaaP ", 2341));
+assertEquals(null, res[797].exec("a56P ", 2342));
+assertEquals(null, res[799].exec("adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkjPZ", 2343));
+assertEquals(null, res[799].exec("lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefaPBZ", 2344));
+assertEquals(null, res[799].exec("cdabbbbbbbbPRBZ", 2345));
+assertEquals(null, res[799].exec("efabbbbbbbbbbbbbbbbPRBZ", 2346));
+assertEquals(null, res[799].exec("bbbbbbbbbbbbcdXyasdfadfPRBZ    ", 2347));
+assertEquals(null, res[799].exec("abc", 2348));
+assertEquals(null, res[799].exec("** Failers", 2349));
+assertEquals(null, res[799].exec("def  ", 2350));
+assertEquals("the quick brown fox", res[800].exec("the quick brown fox"), 2351);
+assertEquals(null, res[800].exec("The quick brown FOX", 2352));
+assertEquals("the quick brown fox", res[800].exec("What do you know about the quick brown fox?"), 2353);
+assertEquals(null, res[800].exec("What do you know about THE QUICK BROWN FOX?", 2354));
+assertEquals("the quick brown fox", res[801].exec("the quick brown fox"), 2355);
+assertEquals("The quick brown FOX", res[801].exec("The quick brown FOX"), 2356);
+assertEquals("the quick brown fox", res[801].exec("What do you know about the quick brown fox?"), 2357);
+assertEquals("THE QUICK BROWN FOX", res[801].exec("What do you know about THE QUICK BROWN FOX?"), 2358);
+assertEquals("abcd\x09\n\x0d\x0cae9;$\\?caxyz", res[802].exec("abcd\x09\n\x0d\x0cae9;$\\?caxyz"), 2359);
+assertEquals("abxyzpqrrrabbxyyyypqAzz", res[803].exec("abxyzpqrrrabbxyyyypqAzz"), 2360);
+assertEquals("abxyzpqrrrabbxyyyypqAzz", res[803].exec("abxyzpqrrrabbxyyyypqAzz"), 2361);
+assertEquals("aabxyzpqrrrabbxyyyypqAzz", res[803].exec("aabxyzpqrrrabbxyyyypqAzz"), 2362);
+assertEquals("aaabxyzpqrrrabbxyyyypqAzz", res[803].exec("aaabxyzpqrrrabbxyyyypqAzz"), 2363);
+assertEquals("aaaabxyzpqrrrabbxyyyypqAzz", res[803].exec("aaaabxyzpqrrrabbxyyyypqAzz"), 2364);
+assertEquals("abcxyzpqrrrabbxyyyypqAzz", res[803].exec("abcxyzpqrrrabbxyyyypqAzz"), 2365);
+assertEquals("aabcxyzpqrrrabbxyyyypqAzz", res[803].exec("aabcxyzpqrrrabbxyyyypqAzz"), 2366);
+assertEquals("aaabcxyzpqrrrabbxyyyypAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypAzz"), 2367);
+assertEquals("aaabcxyzpqrrrabbxyyyypqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqAzz"), 2368);
+assertEquals("aaabcxyzpqrrrabbxyyyypqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqAzz"), 2369);
+assertEquals("aaabcxyzpqrrrabbxyyyypqqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqqAzz"), 2370);
+assertEquals("aaabcxyzpqrrrabbxyyyypqqqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqqqAzz"), 2371);
+assertEquals("aaabcxyzpqrrrabbxyyyypqqqqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqqqqAzz"), 2372);
+assertEquals("aaabcxyzpqrrrabbxyyyypqqqqqqAzz", res[803].exec("aaabcxyzpqrrrabbxyyyypqqqqqqAzz"), 2373);
+assertEquals("aaaabcxyzpqrrrabbxyyyypqAzz", res[803].exec("aaaabcxyzpqrrrabbxyyyypqAzz"), 2374);
+assertEquals("abxyzzpqrrrabbxyyyypqAzz", res[803].exec("abxyzzpqrrrabbxyyyypqAzz"), 2375);
+assertEquals("aabxyzzzpqrrrabbxyyyypqAzz", res[803].exec("aabxyzzzpqrrrabbxyyyypqAzz"), 2376);
+assertEquals("aaabxyzzzzpqrrrabbxyyyypqAzz", res[803].exec("aaabxyzzzzpqrrrabbxyyyypqAzz"), 2377);
+assertEquals("aaaabxyzzzzpqrrrabbxyyyypqAzz", res[803].exec("aaaabxyzzzzpqrrrabbxyyyypqAzz"), 2378);
+assertEquals("abcxyzzpqrrrabbxyyyypqAzz", res[803].exec("abcxyzzpqrrrabbxyyyypqAzz"), 2379);
+assertEquals("aabcxyzzzpqrrrabbxyyyypqAzz", res[803].exec("aabcxyzzzpqrrrabbxyyyypqAzz"), 2380);
+assertEquals("aaabcxyzzzzpqrrrabbxyyyypqAzz", res[803].exec("aaabcxyzzzzpqrrrabbxyyyypqAzz"), 2381);
+assertEquals("aaaabcxyzzzzpqrrrabbxyyyypqAzz", res[803].exec("aaaabcxyzzzzpqrrrabbxyyyypqAzz"), 2382);
+assertEquals("aaaabcxyzzzzpqrrrabbbxyyyypqAzz", res[803].exec("aaaabcxyzzzzpqrrrabbbxyyyypqAzz"), 2383);
+assertEquals("aaaabcxyzzzzpqrrrabbbxyyyyypqAzz", res[803].exec("aaaabcxyzzzzpqrrrabbbxyyyyypqAzz"), 2384);
+assertEquals("aaabcxyzpqrrrabbxyyyypABzz", res[803].exec("aaabcxyzpqrrrabbxyyyypABzz"), 2385);
+assertEquals("aaabcxyzpqrrrabbxyyyypABBzz", res[803].exec("aaabcxyzpqrrrabbxyyyypABBzz"), 2386);
+assertEquals("aaabxyzpqrrrabbxyyyypqAzz", res[803].exec(">>>aaabxyzpqrrrabbxyyyypqAzz"), 2387);
+assertEquals("aaaabxyzpqrrrabbxyyyypqAzz", res[803].exec(">aaaabxyzpqrrrabbxyyyypqAzz"), 2388);
+assertEquals("abcxyzpqrrrabbxyyyypqAzz", res[803].exec(">>>>abcxyzpqrrrabbxyyyypqAzz"), 2389);
+assertEquals(null, res[803].exec("*** Failers", 2390));
+assertEquals(null, res[803].exec("abxyzpqrrabbxyyyypqAzz", 2391));
+assertEquals(null, res[803].exec("abxyzpqrrrrabbxyyyypqAzz", 2392));
+assertEquals(null, res[803].exec("abxyzpqrrrabxyyyypqAzz", 2393));
+assertEquals(null, res[803].exec("aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz", 2394));
+assertEquals(null, res[803].exec("aaaabcxyzzzzpqrrrabbbxyyypqAzz", 2395));
+assertEquals(null, res[803].exec("aaabcxyzpqrrrabbxyyyypqqqqqqqAzz", 2396));
+assertEquals("abczz,abc", res[804].exec("abczz"), 2397);
+assertEquals("abcabczz,abc", res[804].exec("abcabczz"), 2398);
+assertEquals(null, res[804].exec("*** Failers", 2399));
+assertEquals(null, res[804].exec("zz", 2400));
+assertEquals(null, res[804].exec("abcabcabczz", 2401));
+assertEquals(null, res[804].exec(">>abczz", 2402));
+assertEquals("bc,b", res[805].exec("bc"), 2403);
+assertEquals("bbc,b", res[805].exec("bbc"), 2404);
+assertEquals("bbbc,bb", res[805].exec("bbbc"), 2405);
+assertEquals("bac,a", res[805].exec("bac"), 2406);
+assertEquals("bbac,a", res[805].exec("bbac"), 2407);
+assertEquals("aac,a", res[805].exec("aac"), 2408);
+assertEquals("abbbbbbbbbbbc,bbbbbbbbbbb", res[805].exec("abbbbbbbbbbbc"), 2409);
+assertEquals("bbbbbbbbbbbac,a", res[805].exec("bbbbbbbbbbbac"), 2410);
+assertEquals(null, res[805].exec("*** Failers", 2411));
+assertEquals(null, res[805].exec("aaac", 2412));
+assertEquals(null, res[805].exec("abbbbbbbbbbbac", 2413));
+assertEquals("bc,b", res[806].exec("bc"), 2414);
+assertEquals("bbc,bb", res[806].exec("bbc"), 2415);
+assertEquals("bbbc,bbb", res[806].exec("bbbc"), 2416);
+assertEquals("bac,a", res[806].exec("bac"), 2417);
+assertEquals("bbac,a", res[806].exec("bbac"), 2418);
+assertEquals("aac,a", res[806].exec("aac"), 2419);
+assertEquals("abbbbbbbbbbbc,bbbbbbbbbbb", res[806].exec("abbbbbbbbbbbc"), 2420);
+assertEquals("bbbbbbbbbbbac,a", res[806].exec("bbbbbbbbbbbac"), 2421);
+assertEquals(null, res[806].exec("*** Failers", 2422));
+assertEquals(null, res[806].exec("aaac", 2423));
+assertEquals(null, res[806].exec("abbbbbbbbbbbac", 2424));
+assertEquals("bbc,bb", res[806].exec("bbc"), 2425);
+assertEquals("babc,ba", res[807].exec("babc"), 2426);
+assertEquals("bbabc,ba", res[807].exec("bbabc"), 2427);
+assertEquals("bababc,ba", res[807].exec("bababc"), 2428);
+assertEquals(null, res[807].exec("*** Failers", 2429));
+assertEquals(null, res[807].exec("bababbc", 2430));
+assertEquals(null, res[807].exec("babababc", 2431));
+assertEquals("babc,ba", res[808].exec("babc"), 2432);
+assertEquals("bbabc,ba", res[808].exec("bbabc"), 2433);
+assertEquals("bababc,ba", res[808].exec("bababc"), 2434);
+assertEquals(null, res[808].exec("*** Failers", 2435));
+assertEquals(null, res[808].exec("bababbc", 2436));
+assertEquals(null, res[808].exec("babababc", 2437));
 assertThrows("var re = /^\\ca\\cA\\c[\\c{\\c:/;", 2438);
-assertNull(res[808].exec("\x01\x01e;z", 2439));
-assertToStringEquals("a", res[809].exec("athing"), 2440);
-assertToStringEquals("b", res[809].exec("bthing"), 2441);
-assertToStringEquals("]", res[809].exec("]thing"), 2442);
-assertToStringEquals("c", res[809].exec("cthing"), 2443);
-assertToStringEquals("d", res[809].exec("dthing"), 2444);
-assertToStringEquals("e", res[809].exec("ething"), 2445);
-assertNull(res[809].exec("*** Failers", 2446));
-assertNull(res[809].exec("fthing", 2447));
-assertNull(res[809].exec("[thing", 2448));
-assertNull(res[809].exec("\\thing", 2449));
-assertNull(res[810].exec("]thing", 2450));
-assertNull(res[810].exec("cthing", 2451));
-assertNull(res[810].exec("dthing", 2452));
-assertNull(res[810].exec("ething", 2453));
-assertNull(res[810].exec("*** Failers", 2454));
-assertNull(res[810].exec("athing", 2455));
-assertNull(res[810].exec("fthing", 2456));
-assertToStringEquals("f", res[811].exec("fthing"), 2457);
-assertToStringEquals("[", res[811].exec("[thing"), 2458);
-assertToStringEquals("\\", res[811].exec("\\thing"), 2459);
-assertToStringEquals("*", res[811].exec("*** Failers"), 2460);
-assertNull(res[811].exec("athing", 2461));
-assertNull(res[811].exec("bthing", 2462));
-assertNull(res[811].exec("]thing", 2463));
-assertNull(res[811].exec("cthing", 2464));
-assertNull(res[811].exec("dthing", 2465));
-assertNull(res[811].exec("ething", 2466));
-assertNull(res[812].exec("athing", 2467));
-assertNull(res[812].exec("fthing", 2468));
-assertNull(res[812].exec("*** Failers", 2469));
-assertNull(res[812].exec("]thing", 2470));
-assertNull(res[812].exec("cthing", 2471));
-assertNull(res[812].exec("dthing", 2472));
-assertNull(res[812].exec("ething", 2473));
-assertNull(res[812].exec("\ufffd", 2474));
-assertNull(res[812].exec("\ufffd", 2475));
-assertToStringEquals("0", res[813].exec("0"), 2476);
-assertToStringEquals("1", res[813].exec("1"), 2477);
-assertToStringEquals("2", res[813].exec("2"), 2478);
-assertToStringEquals("3", res[813].exec("3"), 2479);
-assertToStringEquals("4", res[813].exec("4"), 2480);
-assertToStringEquals("5", res[813].exec("5"), 2481);
-assertToStringEquals("6", res[813].exec("6"), 2482);
-assertToStringEquals("7", res[813].exec("7"), 2483);
-assertToStringEquals("8", res[813].exec("8"), 2484);
-assertToStringEquals("9", res[813].exec("9"), 2485);
-assertToStringEquals("10", res[813].exec("10"), 2486);
-assertToStringEquals("100", res[813].exec("100"), 2487);
-assertNull(res[813].exec("*** Failers", 2488));
-assertNull(res[813].exec("abc", 2489));
-assertToStringEquals("enter", res[814].exec("enter"), 2490);
-assertToStringEquals("inter", res[814].exec("inter"), 2491);
-assertToStringEquals("uponter", res[814].exec("uponter"), 2492);
-assertToStringEquals("xxx0", res[815].exec("xxx0"), 2493);
-assertToStringEquals("xxx1234", res[815].exec("xxx1234"), 2494);
-assertNull(res[815].exec("*** Failers", 2495));
-assertNull(res[815].exec("xxx", 2496));
-assertToStringEquals("x123", res[816].exec("x123"), 2497);
-assertToStringEquals("xx123", res[816].exec("xx123"), 2498);
-assertToStringEquals("123456", res[816].exec("123456"), 2499);
-assertNull(res[816].exec("*** Failers", 2500));
-assertNull(res[816].exec("123", 2501));
-assertToStringEquals("x1234", res[816].exec("x1234"), 2502);
-assertToStringEquals("x123", res[817].exec("x123"), 2503);
-assertToStringEquals("xx123", res[817].exec("xx123"), 2504);
-assertToStringEquals("123456", res[817].exec("123456"), 2505);
-assertNull(res[817].exec("*** Failers", 2506));
-assertNull(res[817].exec("123", 2507));
-assertToStringEquals("x1234", res[817].exec("x1234"), 2508);
-assertToStringEquals("abc!pqr=apquxz.ixr.zzz.ac.uk,abc,pqr", res[818].exec("abc!pqr=apquxz.ixr.zzz.ac.uk"), 2509);
-assertNull(res[818].exec("*** Failers", 2510));
-assertNull(res[818].exec("!pqr=apquxz.ixr.zzz.ac.uk", 2511));
-assertNull(res[818].exec("abc!=apquxz.ixr.zzz.ac.uk", 2512));
-assertNull(res[818].exec("abc!pqr=apquxz:ixr.zzz.ac.uk", 2513));
-assertNull(res[818].exec("abc!pqr=apquxz.ixr.zzz.ac.ukk", 2514));
-assertToStringEquals(":", res[819].exec("Well, we need a colon: somewhere"), 2515);
-assertNull(res[819].exec("*** Fail if we don't", 2516));
-assertToStringEquals("0abc,0abc", res[820].exec("0abc"), 2517);
-assertToStringEquals("abc,abc", res[820].exec("abc"), 2518);
-assertToStringEquals("fed,fed", res[820].exec("fed"), 2519);
-assertToStringEquals("E,E", res[820].exec("E"), 2520);
-assertToStringEquals("::,::", res[820].exec("::"), 2521);
-assertToStringEquals("5f03:12C0::932e,5f03:12C0::932e", res[820].exec("5f03:12C0::932e"), 2522);
-assertToStringEquals("def,def", res[820].exec("fed def"), 2523);
-assertToStringEquals("ff,ff", res[820].exec("Any old stuff"), 2524);
-assertNull(res[820].exec("*** Failers", 2525));
-assertNull(res[820].exec("0zzz", 2526));
-assertNull(res[820].exec("gzzz", 2527));
-assertNull(res[820].exec("fed ", 2528));
-assertNull(res[820].exec("Any old rubbish", 2529));
-assertToStringEquals(".1.2.3,1,2,3", res[821].exec(".1.2.3"), 2530);
-assertToStringEquals("A.12.123.0,12,123,0", res[821].exec("A.12.123.0"), 2531);
-assertNull(res[821].exec("*** Failers", 2532));
-assertNull(res[821].exec(".1.2.3333", 2533));
-assertNull(res[821].exec("1.2.3", 2534));
-assertNull(res[821].exec("1234.2.3", 2535));
-assertToStringEquals("1 IN SOA non-sp1 non-sp2(,1,non-sp1,non-sp2", res[822].exec("1 IN SOA non-sp1 non-sp2("), 2536);
-assertToStringEquals("1    IN    SOA    non-sp1    non-sp2   (,1,non-sp1,non-sp2", res[822].exec("1    IN    SOA    non-sp1    non-sp2   ("), 2537);
-assertNull(res[822].exec("*** Failers", 2538));
-assertNull(res[822].exec("1IN SOA non-sp1 non-sp2(", 2539));
-assertToStringEquals("a.,", res[823].exec("a."), 2540);
-assertToStringEquals("Z.,", res[823].exec("Z."), 2541);
-assertToStringEquals("2.,", res[823].exec("2."), 2542);
-assertToStringEquals("ab-c.pq-r.,.pq-r", res[823].exec("ab-c.pq-r."), 2543);
-assertToStringEquals("sxk.zzz.ac.uk.,.uk", res[823].exec("sxk.zzz.ac.uk."), 2544);
-assertToStringEquals("x-.y-.,.y-", res[823].exec("x-.y-."), 2545);
-assertNull(res[823].exec("*** Failers", 2546));
-assertNull(res[823].exec("-abc.peq.", 2547));
-assertToStringEquals("*.a,,,", res[824].exec("*.a"), 2548);
-assertToStringEquals("*.b0-a,0-a,,", res[824].exec("*.b0-a"), 2549);
-assertToStringEquals("*.c3-b.c,3-b,.c,", res[824].exec("*.c3-b.c"), 2550);
-assertToStringEquals("*.c-a.b-c,-a,.b-c,-c", res[824].exec("*.c-a.b-c"), 2551);
-assertNull(res[824].exec("*** Failers", 2552));
-assertNull(res[824].exec("*.0", 2553));
-assertNull(res[824].exec("*.a-", 2554));
-assertNull(res[824].exec("*.a-b.c-", 2555));
-assertNull(res[824].exec("*.c-a.0-c", 2556));
-assertToStringEquals("abde,de,abd,e", res[825].exec("abde"), 2557);
-assertToStringEquals("abdf,,abd,f", res[826].exec("abdf"), 2558);
-assertToStringEquals("ab,abcd,cd,ab", res[827].exec("abcd"), 2559);
-assertToStringEquals("a.b.c.d,.d", res[828].exec("a.b.c.d"), 2560);
-assertToStringEquals("A.B.C.D,.D", res[828].exec("A.B.C.D"), 2561);
-assertToStringEquals("a.b.c.1.2.3.C,.C", res[828].exec("a.b.c.1.2.3.C"), 2562);
-assertToStringEquals("\"1234\",", res[829].exec("\"1234\""), 2563);
-assertToStringEquals("\"abcd\" ;,;", res[829].exec("\"abcd\" ;"), 2564);
-assertToStringEquals("\"\" ; rhubarb,; rhubarb", res[829].exec("\"\" ; rhubarb"), 2565);
-assertNull(res[829].exec("*** Failers", 2566));
-assertNull(res[829].exec("\"1234\" : things", 2567));
-assertNull(res[830].exec("\\", 2568));
-assertNull(res[830].exec("*** Failers", 2569));
-assertToStringEquals("ab c", res[831].exec("ab c"), 2570);
-assertNull(res[831].exec("*** Failers", 2571));
-assertNull(res[831].exec("abc", 2572));
-assertNull(res[831].exec("ab cde", 2573));
-assertToStringEquals("ab c", res[831].exec("ab c"), 2574);
-assertNull(res[831].exec("*** Failers", 2575));
-assertNull(res[831].exec("abc", 2576));
-assertNull(res[831].exec("ab cde", 2577));
-assertToStringEquals("a bcd", res[832].exec("a bcd"), 2578);
-assertNull(res[832].exec("a b d", 2579));
-assertNull(res[832].exec("*** Failers", 2580));
-assertNull(res[832].exec("abcd", 2581));
-assertNull(res[832].exec("ab d", 2582));
-assertToStringEquals("abcdefhijklm,abc,bc,c,def,ef,f,hij,ij,j,klm,lm,m", res[833].exec("abcdefhijklm"), 2583);
-assertToStringEquals("abcdefhijklm,bc,c,ef,f,ij,j,lm,m", res[834].exec("abcdefhijklm"), 2584);
-assertNull(res[835].exec("a+ Z0+\x08\n\x1d\x12", 2585));
-assertNull(res[835].exec(".^$(*+)|{?,?}", 2586));
-assertToStringEquals("z", res[836].exec("z"), 2587);
-assertToStringEquals("az", res[836].exec("az"), 2588);
-assertToStringEquals("aaaz", res[836].exec("aaaz"), 2589);
-assertToStringEquals("a", res[836].exec("a"), 2590);
-assertToStringEquals("aa", res[836].exec("aa"), 2591);
-assertToStringEquals("aaaa", res[836].exec("aaaa"), 2592);
-assertToStringEquals("a", res[836].exec("a+"), 2593);
-assertToStringEquals("aa", res[836].exec("aa+"), 2594);
-assertToStringEquals("z", res[837].exec("z"), 2595);
-assertToStringEquals("a", res[837].exec("az"), 2596);
-assertToStringEquals("a", res[837].exec("aaaz"), 2597);
-assertToStringEquals("a", res[837].exec("a"), 2598);
-assertToStringEquals("a", res[837].exec("aa"), 2599);
-assertToStringEquals("a", res[837].exec("aaaa"), 2600);
-assertToStringEquals("a", res[837].exec("a+"), 2601);
-assertToStringEquals("a", res[837].exec("aa+"), 2602);
-assertToStringEquals("az", res[838].exec("az"), 2603);
-assertToStringEquals("aaaz", res[838].exec("aaaz"), 2604);
-assertToStringEquals("aa", res[838].exec("aa"), 2605);
-assertToStringEquals("aaaa", res[838].exec("aaaa"), 2606);
-assertToStringEquals("aa", res[838].exec("aa+"), 2607);
-assertToStringEquals("az", res[839].exec("az"), 2608);
-assertToStringEquals("aa", res[839].exec("aaaz"), 2609);
-assertToStringEquals("aa", res[839].exec("aa"), 2610);
-assertToStringEquals("aa", res[839].exec("aaaa"), 2611);
-assertToStringEquals("aa", res[839].exec("aa+"), 2612);
-assertToStringEquals("1234567890", res[840].exec("1234567890"), 2613);
-assertToStringEquals("12345678ab", res[840].exec("12345678ab"), 2614);
-assertToStringEquals("12345678__", res[840].exec("12345678__"), 2615);
-assertNull(res[840].exec("*** Failers", 2616));
-assertNull(res[840].exec("1234567", 2617));
-assertToStringEquals("uoie", res[841].exec("uoie"), 2618);
-assertToStringEquals("1234", res[841].exec("1234"), 2619);
-assertToStringEquals("12345", res[841].exec("12345"), 2620);
-assertToStringEquals("aaaaa", res[841].exec("aaaaa"), 2621);
-assertNull(res[841].exec("*** Failers", 2622));
-assertNull(res[841].exec("123456", 2623));
-assertToStringEquals("uoie", res[842].exec("uoie"), 2624);
-assertToStringEquals("1234", res[842].exec("1234"), 2625);
-assertToStringEquals("1234", res[842].exec("12345"), 2626);
-assertToStringEquals("aaaa", res[842].exec("aaaaa"), 2627);
-assertToStringEquals("1234", res[842].exec("123456"), 2628);
-assertToStringEquals("From abcd  Mon Sep 01 12:33,abcd", res[843].exec("From abcd  Mon Sep 01 12:33:02 1997"), 2629);
-assertToStringEquals("From abcd  Mon Sep 01 12:33,Sep ", res[844].exec("From abcd  Mon Sep 01 12:33:02 1997"), 2630);
-assertToStringEquals("From abcd  Mon Sep  1 12:33,Sep  ", res[844].exec("From abcd  Mon Sep  1 12:33:02 1997"), 2631);
-assertNull(res[844].exec("*** Failers", 2632));
-assertNull(res[844].exec("From abcd  Sep 01 12:33:02 1997", 2633));
-assertNull(res[845].exec("12\n34", 2634));
-assertNull(res[845].exec("12\x0d34", 2635));
-assertToStringEquals("brown", res[846].exec("the quick brown\x09 fox"), 2636);
-assertToStringEquals("foolish see?,lish see?", res[847].exec("foobar is foolish see?"), 2637);
-assertToStringEquals("rowbar etc, etc", res[848].exec("foobar crowbar etc"), 2638);
-assertToStringEquals("barrel,rel", res[848].exec("barrel"), 2639);
-assertToStringEquals("2barrel,rel", res[848].exec("2barrel"), 2640);
-assertToStringEquals("A barrel,rel", res[848].exec("A barrel"), 2641);
-assertToStringEquals("abc,abc", res[849].exec("abc456"), 2642);
-assertNull(res[849].exec("*** Failers", 2643));
-assertNull(res[849].exec("abc123", 2644));
-assertToStringEquals("1234", res[850].exec("1234"), 2645);
-assertToStringEquals("1234", res[851].exec("1234"), 2646);
-assertToStringEquals("abcd", res[852].exec("abcd"), 2647);
-assertToStringEquals("abcd", res[853].exec("abcd"), 2648);
-assertToStringEquals("abc", res[854].exec("the abc"), 2649);
-assertNull(res[854].exec("*** Failers", 2650));
-assertNull(res[854].exec("abc", 2651));
-assertToStringEquals("abc", res[855].exec("abc"), 2652);
-assertNull(res[855].exec("*** Failers", 2653));
-assertNull(res[855].exec("the abc", 2654));
-assertToStringEquals("aabb,b", res[856].exec("aabbbbb"), 2655);
-assertToStringEquals("aabbbbb,abbbbb", res[857].exec("aabbbbb"), 2656);
-assertToStringEquals("aa,a", res[858].exec("aabbbbb"), 2657);
-assertToStringEquals("aabb,b", res[859].exec("aabbbbb"), 2658);
-assertToStringEquals("Alan Other <user@dom.ain>", res[860].exec("Alan Other <user@dom.ain>"), 2659);
-assertToStringEquals("user@dom.ain", res[860].exec("<user@dom.ain>"), 2660);
-assertToStringEquals("user@dom.ain", res[860].exec("user@dom.ain"), 2661);
-assertToStringEquals("\"A. Other\" <user.1234@dom.ain> (a comment)", res[860].exec("\"A. Other\" <user.1234@dom.ain> (a comment)"), 2662);
-assertToStringEquals(" Other <user.1234@dom.ain> (a comment)", res[860].exec("A. Other <user.1234@dom.ain> (a comment)"), 2663);
-assertToStringEquals("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay", res[860].exec("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay"), 2664);
-assertToStringEquals("user@some.where", res[860].exec("A missing angle <user@some.where"), 2665);
-assertNull(res[860].exec("*** Failers", 2666));
-assertNull(res[860].exec("The quick brown fox", 2667));
-assertToStringEquals("Alan Other <user@dom.ain>", res[861].exec("Alan Other <user@dom.ain>"), 2668);
-assertToStringEquals("user@dom.ain", res[861].exec("<user@dom.ain>"), 2669);
-assertToStringEquals("user@dom.ain", res[861].exec("user@dom.ain"), 2670);
-assertToStringEquals("\"A. Other\" <user.1234@dom.ain>", res[861].exec("\"A. Other\" <user.1234@dom.ain> (a comment)"), 2671);
-assertToStringEquals(" Other <user.1234@dom.ain>", res[861].exec("A. Other <user.1234@dom.ain> (a comment)"), 2672);
-assertToStringEquals("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay", res[861].exec("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay"), 2673);
-assertToStringEquals("user@some.where", res[861].exec("A missing angle <user@some.where"), 2674);
-assertNull(res[861].exec("*** Failers", 2675));
-assertNull(res[861].exec("The quick brown fox", 2676));
-assertNull(res[861].exec("abc\x00def\x00pqr\x00xyz\x000AB", 2677));
-assertNull(res[861].exec("abc456 abc\x00def\x00pqr\x00xyz\x000ABCDE", 2678));
-assertToStringEquals("abc\x0def\x00pqr\x000xyz\x0000AB", res[862].exec("abc\x0def\x00pqr\x000xyz\x0000AB"), 2679);
-assertToStringEquals("abc\x0def\x00pqr\x000xyz\x0000AB", res[862].exec("abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE"), 2680);
-assertToStringEquals("\x00", res[863].exec("\x00A"), 2681);
-assertToStringEquals("\x01", res[863].exec("\x01B"), 2682);
-assertToStringEquals("\x1f", res[863].exec("\x1fC"), 2683);
-assertToStringEquals("\x00\x00\x00\x00", res[864].exec("\x00\x00\x00\x00"), 2684);
-assertNull(res[865].exec("The Ax0x0Z", 2685));
-assertNull(res[865].exec("An A\x00x0\x00Z", 2686));
-assertNull(res[865].exec("*** Failers", 2687));
-assertNull(res[865].exec("A\x00Z", 2688));
-assertNull(res[865].exec("A\x00x0\x00x0Z", 2689));
-assertToStringEquals(" ", res[866].exec(" abc"), 2690);
-assertToStringEquals("\x0c", res[866].exec("\x0cabc"), 2691);
-assertToStringEquals("\n", res[866].exec("\nabc"), 2692);
-assertToStringEquals("\x0d", res[866].exec("\x0dabc"), 2693);
-assertToStringEquals("\x09", res[866].exec("\x09abc"), 2694);
-assertNull(res[866].exec("*** Failers", 2695));
-assertNull(res[866].exec("abc", 2696));
-assertToStringEquals("abc", res[867].exec("abc"), 2697);
-assertToStringEquals("abbbbc", res[868].exec("abbbbc"), 2698);
-assertToStringEquals("abbbc", res[868].exec("abbbc"), 2699);
-assertToStringEquals("abbc", res[868].exec("abbc"), 2700);
-assertNull(res[868].exec("*** Failers", 2701));
-assertNull(res[868].exec("abc", 2702));
-assertNull(res[868].exec("abbbbbc", 2703));
-assertToStringEquals("track1.title:TBlah blah blah,track1,title,Blah blah blah", res[869].exec("track1.title:TBlah blah blah"), 2704);
-assertToStringEquals("track1.title:TBlah blah blah,track1,title,Blah blah blah", res[870].exec("track1.title:TBlah blah blah"), 2705);
-assertToStringEquals("track1.title:TBlah blah blah,track1,title,Blah blah blah", res[871].exec("track1.title:TBlah blah blah"), 2706);
-assertToStringEquals("WXY_^abc", res[872].exec("WXY_^abc"), 2707);
-assertNull(res[872].exec("*** Failers", 2708));
-assertNull(res[872].exec("wxy", 2709));
-assertToStringEquals("WXY_^abc", res[873].exec("WXY_^abc"), 2710);
-assertToStringEquals("wxy_^ABC", res[873].exec("wxy_^ABC"), 2711);
-assertToStringEquals("WXY_^abc", res[874].exec("WXY_^abc"), 2712);
-assertToStringEquals("wxy_^ABC", res[874].exec("wxy_^ABC"), 2713);
-assertToStringEquals("abc", res[875].exec("abc"), 2714);
-assertToStringEquals("abc", res[875].exec("qqq\nabc"), 2715);
-assertToStringEquals("abc", res[875].exec("abc\nzzz"), 2716);
-assertToStringEquals("abc", res[875].exec("qqq\nabc\nzzz"), 2717);
-assertToStringEquals("abc", res[876].exec("abc"), 2718);
-assertNull(res[876].exec("*** Failers", 2719));
-assertNull(res[876].exec("qqq\nabc", 2720));
-assertNull(res[876].exec("abc\nzzz", 2721));
-assertNull(res[876].exec("qqq\nabc\nzzz", 2722));
-assertNull(res[877].exec("abc", 2723));
-assertNull(res[877].exec("abc\n ", 2724));
-assertNull(res[877].exec("*** Failers", 2725));
-assertNull(res[877].exec("qqq\nabc", 2726));
-assertNull(res[877].exec("abc\nzzz", 2727));
-assertNull(res[877].exec("qqq\nabc\nzzz", 2728));
-assertNull(res[878].exec("abc\ndef", 2729));
-assertNull(res[879].exec("*** Failers", 2730));
-assertNull(res[879].exec("abc\ndef", 2731));
-assertToStringEquals("b", res[880].exec("b::c"), 2732);
-assertToStringEquals("::", res[880].exec("c::b"), 2733);
-assertToStringEquals("az-", res[881].exec("az-"), 2734);
-assertToStringEquals("a", res[881].exec("*** Failers"), 2735);
-assertNull(res[881].exec("b", 2736));
-assertToStringEquals("za-", res[882].exec("za-"), 2737);
-assertToStringEquals("a", res[882].exec("*** Failers"), 2738);
-assertNull(res[882].exec("b", 2739));
-assertToStringEquals("a-z", res[883].exec("a-z"), 2740);
-assertToStringEquals("a", res[883].exec("*** Failers"), 2741);
-assertNull(res[883].exec("b", 2742));
-assertToStringEquals("abcdxyz", res[884].exec("abcdxyz"), 2743);
-assertToStringEquals("12-34", res[885].exec("12-34"), 2744);
-assertNull(res[885].exec("*** Failers", 2745));
-assertNull(res[885].exec("aaa", 2746));
-assertToStringEquals("12-34z", res[886].exec("12-34z"), 2747);
-assertNull(res[886].exec("*** Failers", 2748));
-assertNull(res[886].exec("aaa", 2749));
-assertToStringEquals("\\", res[887].exec("\\\\"), 2750);
-assertToStringEquals(" Z", res[888].exec("the Zoo"), 2751);
-assertNull(res[888].exec("*** Failers", 2752));
-assertNull(res[888].exec("Zulu", 2753));
-assertToStringEquals("ab{3cd", res[889].exec("ab{3cd"), 2754);
-assertToStringEquals("ab{3,cd", res[890].exec("ab{3,cd"), 2755);
-assertToStringEquals("ab{3,4a}cd", res[891].exec("ab{3,4a}cd"), 2756);
-assertToStringEquals("{4,5a}bc", res[892].exec("{4,5a}bc"), 2757);
-assertNull(res[893].exec("a\x0db", 2758));
-assertNull(res[893].exec("*** Failers", 2759));
-assertNull(res[893].exec("a\nb", 2760));
-assertToStringEquals("abc", res[894].exec("abc"), 2761);
-assertNull(res[894].exec("abc\n", 2762));
-assertNull(res[894].exec("*** Failers", 2763));
-assertNull(res[894].exec("abc\ndef", 2764));
-assertToStringEquals("abcS,abc", res[895].exec("abcS"), 2765);
-assertToStringEquals("abc\x93,abc", res[896].exec("abc\x93"), 2766);
-assertToStringEquals("abc\xd3,abc", res[897].exec("abc\xd3"), 2767);
-assertToStringEquals("abc@,abc", res[898].exec("abc@"), 2768);
-assertToStringEquals("abc@,abc", res[898].exec("abc@"), 2769);
-assertToStringEquals("abc@,abc", res[898].exec("abc@0"), 2770);
-assertToStringEquals("abc@,abc", res[898].exec("abc@0"), 2771);
-assertToStringEquals("abc@,abc", res[898].exec("abc@0"), 2772);
-assertToStringEquals("abc@,abc", res[898].exec("abc@0"), 2773);
-assertToStringEquals("abc@,abc", res[898].exec("abc@0"), 2774);
-assertToStringEquals("abc@,abc", res[898].exec("abc@0"), 2775);
-assertNull(res[899].exec("abc\x0081", 2776));
-assertNull(res[899].exec("abc\x0081", 2777));
-assertNull(res[900].exec("abc\x0091", 2778));
-assertNull(res[900].exec("abc\x0091", 2779));
-assertToStringEquals("abcdefghijk\nS,a,b,c,d,e,f,g,h,i,j,k", res[901].exec("abcdefghijk\nS"), 2780);
-assertToStringEquals("abidef", res[902].exec("abidef"), 2781);
-assertToStringEquals("bc", res[903].exec("bc"), 2782);
-assertToStringEquals("xyz,,", res[904].exec("xyz"), 2783);
-assertToStringEquals("abc\x08de", res[905].exec("abc\x08de"), 2784);
-assertToStringEquals("abc\x01de", res[906].exec("abc\x01de"), 2785);
-assertToStringEquals("abc\x01de,abc", res[907].exec("abc\x01de"), 2786);
-assertNull(res[907].exec("a\nb", 2787));
-assertToStringEquals("baNOTcccc,b,a,NOT,cccc", res[908].exec("baNOTccccd"), 2788);
-assertToStringEquals("baNOTccc,b,a,NOT,ccc", res[908].exec("baNOTcccd"), 2789);
-assertToStringEquals("baNOTcc,b,a,NO,Tcc", res[908].exec("baNOTccd"), 2790);
-assertToStringEquals("baccc,b,a,,ccc", res[908].exec("bacccd"), 2791);
-assertToStringEquals("*** Failers,*,*,* Fail,ers", res[908].exec("*** Failers"), 2792);
-assertNull(res[908].exec("anything", 2793));
-assertNull(res[908].exec("b\x08c   ", 2794));
-assertNull(res[908].exec("baccd", 2795));
-assertToStringEquals("A", res[909].exec("Abc"), 2796);
-assertToStringEquals("b", res[910].exec("Abc "), 2797);
-assertToStringEquals("AAA", res[911].exec("AAAaAbc"), 2798);
-assertToStringEquals("bc ", res[912].exec("AAAaAbc "), 2799);
-assertToStringEquals("bbb\nccc", res[913].exec("bbb\nccc"), 2800);
-assertToStringEquals("c", res[914].exec("abc"), 2801);
-assertToStringEquals("s", res[914].exec("*** Failers"), 2802);
-assertToStringEquals(" ", res[914].exec("abk   "), 2803);
-assertToStringEquals("abc", res[915].exec("abc"), 2804);
-assertToStringEquals("bc", res[915].exec("kbc"), 2805);
-assertToStringEquals("bc ", res[915].exec("kabc "), 2806);
-assertToStringEquals("ers", res[915].exec("*** Failers"), 2807);
-assertNull(res[915].exec("abk", 2808));
-assertNull(res[915].exec("akb", 2809));
-assertNull(res[915].exec("akk ", 2810));
-assertToStringEquals("12345678@a.b.c.d", res[916].exec("12345678@a.b.c.d"), 2811);
-assertToStringEquals("123456789@x.y.z", res[916].exec("123456789@x.y.z"), 2812);
-assertNull(res[916].exec("*** Failers", 2813));
-assertNull(res[916].exec("12345678@x.y.uk", 2814));
-assertNull(res[916].exec("1234567@a.b.c.d       ", 2815));
-assertToStringEquals("b", res[917].exec("aaaabcd"), 2816);
-assertToStringEquals("A", res[917].exec("aaAabcd "), 2817);
-assertToStringEquals("b", res[918].exec("aaaabcd"), 2818);
-assertToStringEquals("b", res[918].exec("aaAabcd "), 2819);
-assertToStringEquals("b", res[919].exec("aaaabcd"), 2820);
-assertToStringEquals("A", res[919].exec("aaAabcd "), 2821);
-assertToStringEquals("b", res[920].exec("aaaabcd"), 2822);
-assertToStringEquals("b", res[920].exec("aaAabcd "), 2823);
-assertToStringEquals("PSTAIREISLL", res[922].exec("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx"), 2824);
-assertToStringEquals("PSTAIREISLL", res[923].exec("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx"), 2825);
-assertToStringEquals(".230003938,.23", res[924].exec("1.230003938"), 2826);
-assertToStringEquals(".875000282,.875", res[924].exec("1.875000282   "), 2827);
-assertToStringEquals(".235,.23", res[924].exec("1.235  "), 2828);
-assertNull(res[924].exec("              ", 2829));
-assertToStringEquals(".23,.23,", res[925].exec("1.230003938      "), 2830);
-assertToStringEquals(".875,.875,5", res[925].exec("1.875000282"), 2831);
-assertNull(res[925].exec("*** Failers ", 2832));
-assertNull(res[925].exec("1.235 ", 2833));
+assertEquals(null, res[808].exec("\x01\x01e;z", 2439));
+assertEquals("a", res[809].exec("athing"), 2440);
+assertEquals("b", res[809].exec("bthing"), 2441);
+assertEquals("]", res[809].exec("]thing"), 2442);
+assertEquals("c", res[809].exec("cthing"), 2443);
+assertEquals("d", res[809].exec("dthing"), 2444);
+assertEquals("e", res[809].exec("ething"), 2445);
+assertEquals(null, res[809].exec("*** Failers", 2446));
+assertEquals(null, res[809].exec("fthing", 2447));
+assertEquals(null, res[809].exec("[thing", 2448));
+assertEquals(null, res[809].exec("\\thing", 2449));
+assertEquals(null, res[810].exec("]thing", 2450));
+assertEquals(null, res[810].exec("cthing", 2451));
+assertEquals(null, res[810].exec("dthing", 2452));
+assertEquals(null, res[810].exec("ething", 2453));
+assertEquals(null, res[810].exec("*** Failers", 2454));
+assertEquals(null, res[810].exec("athing", 2455));
+assertEquals(null, res[810].exec("fthing", 2456));
+assertEquals("f", res[811].exec("fthing"), 2457);
+assertEquals("[", res[811].exec("[thing"), 2458);
+assertEquals("\\", res[811].exec("\\thing"), 2459);
+assertEquals("*", res[811].exec("*** Failers"), 2460);
+assertEquals(null, res[811].exec("athing", 2461));
+assertEquals(null, res[811].exec("bthing", 2462));
+assertEquals(null, res[811].exec("]thing", 2463));
+assertEquals(null, res[811].exec("cthing", 2464));
+assertEquals(null, res[811].exec("dthing", 2465));
+assertEquals(null, res[811].exec("ething", 2466));
+assertEquals(null, res[812].exec("athing", 2467));
+assertEquals(null, res[812].exec("fthing", 2468));
+assertEquals(null, res[812].exec("*** Failers", 2469));
+assertEquals(null, res[812].exec("]thing", 2470));
+assertEquals(null, res[812].exec("cthing", 2471));
+assertEquals(null, res[812].exec("dthing", 2472));
+assertEquals(null, res[812].exec("ething", 2473));
+assertEquals(null, res[812].exec("\ufffd", 2474));
+assertEquals(null, res[812].exec("\ufffd", 2475));
+assertEquals("0", res[813].exec("0"), 2476);
+assertEquals("1", res[813].exec("1"), 2477);
+assertEquals("2", res[813].exec("2"), 2478);
+assertEquals("3", res[813].exec("3"), 2479);
+assertEquals("4", res[813].exec("4"), 2480);
+assertEquals("5", res[813].exec("5"), 2481);
+assertEquals("6", res[813].exec("6"), 2482);
+assertEquals("7", res[813].exec("7"), 2483);
+assertEquals("8", res[813].exec("8"), 2484);
+assertEquals("9", res[813].exec("9"), 2485);
+assertEquals("10", res[813].exec("10"), 2486);
+assertEquals("100", res[813].exec("100"), 2487);
+assertEquals(null, res[813].exec("*** Failers", 2488));
+assertEquals(null, res[813].exec("abc", 2489));
+assertEquals("enter", res[814].exec("enter"), 2490);
+assertEquals("inter", res[814].exec("inter"), 2491);
+assertEquals("uponter", res[814].exec("uponter"), 2492);
+assertEquals("xxx0", res[815].exec("xxx0"), 2493);
+assertEquals("xxx1234", res[815].exec("xxx1234"), 2494);
+assertEquals(null, res[815].exec("*** Failers", 2495));
+assertEquals(null, res[815].exec("xxx", 2496));
+assertEquals("x123", res[816].exec("x123"), 2497);
+assertEquals("xx123", res[816].exec("xx123"), 2498);
+assertEquals("123456", res[816].exec("123456"), 2499);
+assertEquals(null, res[816].exec("*** Failers", 2500));
+assertEquals(null, res[816].exec("123", 2501));
+assertEquals("x1234", res[816].exec("x1234"), 2502);
+assertEquals("x123", res[817].exec("x123"), 2503);
+assertEquals("xx123", res[817].exec("xx123"), 2504);
+assertEquals("123456", res[817].exec("123456"), 2505);
+assertEquals(null, res[817].exec("*** Failers", 2506));
+assertEquals(null, res[817].exec("123", 2507));
+assertEquals("x1234", res[817].exec("x1234"), 2508);
+assertEquals("abc!pqr=apquxz.ixr.zzz.ac.uk,abc,pqr", res[818].exec("abc!pqr=apquxz.ixr.zzz.ac.uk"), 2509);
+assertEquals(null, res[818].exec("*** Failers", 2510));
+assertEquals(null, res[818].exec("!pqr=apquxz.ixr.zzz.ac.uk", 2511));
+assertEquals(null, res[818].exec("abc!=apquxz.ixr.zzz.ac.uk", 2512));
+assertEquals(null, res[818].exec("abc!pqr=apquxz:ixr.zzz.ac.uk", 2513));
+assertEquals(null, res[818].exec("abc!pqr=apquxz.ixr.zzz.ac.ukk", 2514));
+assertEquals(":", res[819].exec("Well, we need a colon: somewhere"), 2515);
+assertEquals(null, res[819].exec("*** Fail if we don't", 2516));
+assertEquals("0abc,0abc", res[820].exec("0abc"), 2517);
+assertEquals("abc,abc", res[820].exec("abc"), 2518);
+assertEquals("fed,fed", res[820].exec("fed"), 2519);
+assertEquals("E,E", res[820].exec("E"), 2520);
+assertEquals("::,::", res[820].exec("::"), 2521);
+assertEquals("5f03:12C0::932e,5f03:12C0::932e", res[820].exec("5f03:12C0::932e"), 2522);
+assertEquals("def,def", res[820].exec("fed def"), 2523);
+assertEquals("ff,ff", res[820].exec("Any old stuff"), 2524);
+assertEquals(null, res[820].exec("*** Failers", 2525));
+assertEquals(null, res[820].exec("0zzz", 2526));
+assertEquals(null, res[820].exec("gzzz", 2527));
+assertEquals(null, res[820].exec("fed ", 2528));
+assertEquals(null, res[820].exec("Any old rubbish", 2529));
+assertEquals(".1.2.3,1,2,3", res[821].exec(".1.2.3"), 2530);
+assertEquals("A.12.123.0,12,123,0", res[821].exec("A.12.123.0"), 2531);
+assertEquals(null, res[821].exec("*** Failers", 2532));
+assertEquals(null, res[821].exec(".1.2.3333", 2533));
+assertEquals(null, res[821].exec("1.2.3", 2534));
+assertEquals(null, res[821].exec("1234.2.3", 2535));
+assertEquals("1 IN SOA non-sp1 non-sp2(,1,non-sp1,non-sp2", res[822].exec("1 IN SOA non-sp1 non-sp2("), 2536);
+assertEquals("1    IN    SOA    non-sp1    non-sp2   (,1,non-sp1,non-sp2", res[822].exec("1    IN    SOA    non-sp1    non-sp2   ("), 2537);
+assertEquals(null, res[822].exec("*** Failers", 2538));
+assertEquals(null, res[822].exec("1IN SOA non-sp1 non-sp2(", 2539));
+assertEquals("a.,", res[823].exec("a."), 2540);
+assertEquals("Z.,", res[823].exec("Z."), 2541);
+assertEquals("2.,", res[823].exec("2."), 2542);
+assertEquals("ab-c.pq-r.,.pq-r", res[823].exec("ab-c.pq-r."), 2543);
+assertEquals("sxk.zzz.ac.uk.,.uk", res[823].exec("sxk.zzz.ac.uk."), 2544);
+assertEquals("x-.y-.,.y-", res[823].exec("x-.y-."), 2545);
+assertEquals(null, res[823].exec("*** Failers", 2546));
+assertEquals(null, res[823].exec("-abc.peq.", 2547));
+assertEquals("*.a,,,", res[824].exec("*.a"), 2548);
+assertEquals("*.b0-a,0-a,,", res[824].exec("*.b0-a"), 2549);
+assertEquals("*.c3-b.c,3-b,.c,", res[824].exec("*.c3-b.c"), 2550);
+assertEquals("*.c-a.b-c,-a,.b-c,-c", res[824].exec("*.c-a.b-c"), 2551);
+assertEquals(null, res[824].exec("*** Failers", 2552));
+assertEquals(null, res[824].exec("*.0", 2553));
+assertEquals(null, res[824].exec("*.a-", 2554));
+assertEquals(null, res[824].exec("*.a-b.c-", 2555));
+assertEquals(null, res[824].exec("*.c-a.0-c", 2556));
+assertEquals("abde,de,abd,e", res[825].exec("abde"), 2557);
+assertEquals("abdf,,abd,f", res[826].exec("abdf"), 2558);
+assertEquals("ab,abcd,cd,ab", res[827].exec("abcd"), 2559);
+assertEquals("a.b.c.d,.d", res[828].exec("a.b.c.d"), 2560);
+assertEquals("A.B.C.D,.D", res[828].exec("A.B.C.D"), 2561);
+assertEquals("a.b.c.1.2.3.C,.C", res[828].exec("a.b.c.1.2.3.C"), 2562);
+assertEquals("\"1234\",", res[829].exec("\"1234\""), 2563);
+assertEquals("\"abcd\" ;,;", res[829].exec("\"abcd\" ;"), 2564);
+assertEquals("\"\" ; rhubarb,; rhubarb", res[829].exec("\"\" ; rhubarb"), 2565);
+assertEquals(null, res[829].exec("*** Failers", 2566));
+assertEquals(null, res[829].exec("\"1234\" : things", 2567));
+assertEquals(null, res[830].exec("\\", 2568));
+assertEquals(null, res[830].exec("*** Failers", 2569));
+assertEquals("ab c", res[831].exec("ab c"), 2570);
+assertEquals(null, res[831].exec("*** Failers", 2571));
+assertEquals(null, res[831].exec("abc", 2572));
+assertEquals(null, res[831].exec("ab cde", 2573));
+assertEquals("ab c", res[831].exec("ab c"), 2574);
+assertEquals(null, res[831].exec("*** Failers", 2575));
+assertEquals(null, res[831].exec("abc", 2576));
+assertEquals(null, res[831].exec("ab cde", 2577));
+assertEquals("a bcd", res[832].exec("a bcd"), 2578);
+assertEquals(null, res[832].exec("a b d", 2579));
+assertEquals(null, res[832].exec("*** Failers", 2580));
+assertEquals(null, res[832].exec("abcd", 2581));
+assertEquals(null, res[832].exec("ab d", 2582));
+assertEquals("abcdefhijklm,abc,bc,c,def,ef,f,hij,ij,j,klm,lm,m", res[833].exec("abcdefhijklm"), 2583);
+assertEquals("abcdefhijklm,bc,c,ef,f,ij,j,lm,m", res[834].exec("abcdefhijklm"), 2584);
+assertEquals(null, res[835].exec("a+ Z0+\x08\n\x1d\x12", 2585));
+assertEquals(null, res[835].exec(".^$(*+)|{?,?}", 2586));
+assertEquals("z", res[836].exec("z"), 2587);
+assertEquals("az", res[836].exec("az"), 2588);
+assertEquals("aaaz", res[836].exec("aaaz"), 2589);
+assertEquals("a", res[836].exec("a"), 2590);
+assertEquals("aa", res[836].exec("aa"), 2591);
+assertEquals("aaaa", res[836].exec("aaaa"), 2592);
+assertEquals("a", res[836].exec("a+"), 2593);
+assertEquals("aa", res[836].exec("aa+"), 2594);
+assertEquals("z", res[837].exec("z"), 2595);
+assertEquals("a", res[837].exec("az"), 2596);
+assertEquals("a", res[837].exec("aaaz"), 2597);
+assertEquals("a", res[837].exec("a"), 2598);
+assertEquals("a", res[837].exec("aa"), 2599);
+assertEquals("a", res[837].exec("aaaa"), 2600);
+assertEquals("a", res[837].exec("a+"), 2601);
+assertEquals("a", res[837].exec("aa+"), 2602);
+assertEquals("az", res[838].exec("az"), 2603);
+assertEquals("aaaz", res[838].exec("aaaz"), 2604);
+assertEquals("aa", res[838].exec("aa"), 2605);
+assertEquals("aaaa", res[838].exec("aaaa"), 2606);
+assertEquals("aa", res[838].exec("aa+"), 2607);
+assertEquals("az", res[839].exec("az"), 2608);
+assertEquals("aa", res[839].exec("aaaz"), 2609);
+assertEquals("aa", res[839].exec("aa"), 2610);
+assertEquals("aa", res[839].exec("aaaa"), 2611);
+assertEquals("aa", res[839].exec("aa+"), 2612);
+assertEquals("1234567890", res[840].exec("1234567890"), 2613);
+assertEquals("12345678ab", res[840].exec("12345678ab"), 2614);
+assertEquals("12345678__", res[840].exec("12345678__"), 2615);
+assertEquals(null, res[840].exec("*** Failers", 2616));
+assertEquals(null, res[840].exec("1234567", 2617));
+assertEquals("uoie", res[841].exec("uoie"), 2618);
+assertEquals("1234", res[841].exec("1234"), 2619);
+assertEquals("12345", res[841].exec("12345"), 2620);
+assertEquals("aaaaa", res[841].exec("aaaaa"), 2621);
+assertEquals(null, res[841].exec("*** Failers", 2622));
+assertEquals(null, res[841].exec("123456", 2623));
+assertEquals("uoie", res[842].exec("uoie"), 2624);
+assertEquals("1234", res[842].exec("1234"), 2625);
+assertEquals("1234", res[842].exec("12345"), 2626);
+assertEquals("aaaa", res[842].exec("aaaaa"), 2627);
+assertEquals("1234", res[842].exec("123456"), 2628);
+assertEquals("From abcd  Mon Sep 01 12:33,abcd", res[843].exec("From abcd  Mon Sep 01 12:33:02 1997"), 2629);
+assertEquals("From abcd  Mon Sep 01 12:33,Sep ", res[844].exec("From abcd  Mon Sep 01 12:33:02 1997"), 2630);
+assertEquals("From abcd  Mon Sep  1 12:33,Sep  ", res[844].exec("From abcd  Mon Sep  1 12:33:02 1997"), 2631);
+assertEquals(null, res[844].exec("*** Failers", 2632));
+assertEquals(null, res[844].exec("From abcd  Sep 01 12:33:02 1997", 2633));
+assertEquals(null, res[845].exec("12\n34", 2634));
+assertEquals(null, res[845].exec("12\x0d34", 2635));
+assertEquals("brown", res[846].exec("the quick brown\x09 fox"), 2636);
+assertEquals("foolish see?,lish see?", res[847].exec("foobar is foolish see?"), 2637);
+assertEquals("rowbar etc, etc", res[848].exec("foobar crowbar etc"), 2638);
+assertEquals("barrel,rel", res[848].exec("barrel"), 2639);
+assertEquals("2barrel,rel", res[848].exec("2barrel"), 2640);
+assertEquals("A barrel,rel", res[848].exec("A barrel"), 2641);
+assertEquals("abc,abc", res[849].exec("abc456"), 2642);
+assertEquals(null, res[849].exec("*** Failers", 2643));
+assertEquals(null, res[849].exec("abc123", 2644));
+assertEquals("1234", res[850].exec("1234"), 2645);
+assertEquals("1234", res[851].exec("1234"), 2646);
+assertEquals("abcd", res[852].exec("abcd"), 2647);
+assertEquals("abcd", res[853].exec("abcd"), 2648);
+assertEquals("abc", res[854].exec("the abc"), 2649);
+assertEquals(null, res[854].exec("*** Failers", 2650));
+assertEquals(null, res[854].exec("abc", 2651));
+assertEquals("abc", res[855].exec("abc"), 2652);
+assertEquals(null, res[855].exec("*** Failers", 2653));
+assertEquals(null, res[855].exec("the abc", 2654));
+assertEquals("aabb,b", res[856].exec("aabbbbb"), 2655);
+assertEquals("aabbbbb,abbbbb", res[857].exec("aabbbbb"), 2656);
+assertEquals("aa,a", res[858].exec("aabbbbb"), 2657);
+assertEquals("aabb,b", res[859].exec("aabbbbb"), 2658);
+assertEquals("Alan Other <user@dom.ain>", res[860].exec("Alan Other <user@dom.ain>"), 2659);
+assertEquals("user@dom.ain", res[860].exec("<user@dom.ain>"), 2660);
+assertEquals("user@dom.ain", res[860].exec("user@dom.ain"), 2661);
+assertEquals("\"A. Other\" <user.1234@dom.ain> (a comment)", res[860].exec("\"A. Other\" <user.1234@dom.ain> (a comment)"), 2662);
+assertEquals(" Other <user.1234@dom.ain> (a comment)", res[860].exec("A. Other <user.1234@dom.ain> (a comment)"), 2663);
+assertEquals("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay", res[860].exec("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay"), 2664);
+assertEquals("user@some.where", res[860].exec("A missing angle <user@some.where"), 2665);
+assertEquals(null, res[860].exec("*** Failers", 2666));
+assertEquals(null, res[860].exec("The quick brown fox", 2667));
+assertEquals("Alan Other <user@dom.ain>", res[861].exec("Alan Other <user@dom.ain>"), 2668);
+assertEquals("user@dom.ain", res[861].exec("<user@dom.ain>"), 2669);
+assertEquals("user@dom.ain", res[861].exec("user@dom.ain"), 2670);
+assertEquals("\"A. Other\" <user.1234@dom.ain>", res[861].exec("\"A. Other\" <user.1234@dom.ain> (a comment)"), 2671);
+assertEquals(" Other <user.1234@dom.ain>", res[861].exec("A. Other <user.1234@dom.ain> (a comment)"), 2672);
+assertEquals("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay", res[861].exec("\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay"), 2673);
+assertEquals("user@some.where", res[861].exec("A missing angle <user@some.where"), 2674);
+assertEquals(null, res[861].exec("*** Failers", 2675));
+assertEquals(null, res[861].exec("The quick brown fox", 2676));
+assertEquals(null, res[861].exec("abc\x00def\x00pqr\x00xyz\x000AB", 2677));
+assertEquals(null, res[861].exec("abc456 abc\x00def\x00pqr\x00xyz\x000ABCDE", 2678));
+assertEquals("abc\x0def\x00pqr\x000xyz\x0000AB", res[862].exec("abc\x0def\x00pqr\x000xyz\x0000AB"), 2679);
+assertEquals("abc\x0def\x00pqr\x000xyz\x0000AB", res[862].exec("abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE"), 2680);
+assertEquals("\x00", res[863].exec("\x00A"), 2681);
+assertEquals("\x01", res[863].exec("\x01B"), 2682);
+assertEquals("\x1f", res[863].exec("\x1fC"), 2683);
+assertEquals("\x00\x00\x00\x00", res[864].exec("\x00\x00\x00\x00"), 2684);
+assertEquals(null, res[865].exec("The Ax0x0Z", 2685));
+assertEquals(null, res[865].exec("An A\x00x0\x00Z", 2686));
+assertEquals(null, res[865].exec("*** Failers", 2687));
+assertEquals(null, res[865].exec("A\x00Z", 2688));
+assertEquals(null, res[865].exec("A\x00x0\x00x0Z", 2689));
+assertEquals(" ", res[866].exec(" abc"), 2690);
+assertEquals("\x0c", res[866].exec("\x0cabc"), 2691);
+assertEquals("\n", res[866].exec("\nabc"), 2692);
+assertEquals("\x0d", res[866].exec("\x0dabc"), 2693);
+assertEquals("\x09", res[866].exec("\x09abc"), 2694);
+assertEquals(null, res[866].exec("*** Failers", 2695));
+assertEquals(null, res[866].exec("abc", 2696));
+assertEquals("abc", res[867].exec("abc"), 2697);
+assertEquals("abbbbc", res[868].exec("abbbbc"), 2698);
+assertEquals("abbbc", res[868].exec("abbbc"), 2699);
+assertEquals("abbc", res[868].exec("abbc"), 2700);
+assertEquals(null, res[868].exec("*** Failers", 2701));
+assertEquals(null, res[868].exec("abc", 2702));
+assertEquals(null, res[868].exec("abbbbbc", 2703));
+assertEquals("track1.title:TBlah blah blah,track1,title,Blah blah blah", res[869].exec("track1.title:TBlah blah blah"), 2704);
+assertEquals("track1.title:TBlah blah blah,track1,title,Blah blah blah", res[870].exec("track1.title:TBlah blah blah"), 2705);
+assertEquals("track1.title:TBlah blah blah,track1,title,Blah blah blah", res[871].exec("track1.title:TBlah blah blah"), 2706);
+assertEquals("WXY_^abc", res[872].exec("WXY_^abc"), 2707);
+assertEquals(null, res[872].exec("*** Failers", 2708));
+assertEquals(null, res[872].exec("wxy", 2709));
+assertEquals("WXY_^abc", res[873].exec("WXY_^abc"), 2710);
+assertEquals("wxy_^ABC", res[873].exec("wxy_^ABC"), 2711);
+assertEquals("WXY_^abc", res[874].exec("WXY_^abc"), 2712);
+assertEquals("wxy_^ABC", res[874].exec("wxy_^ABC"), 2713);
+assertEquals("abc", res[875].exec("abc"), 2714);
+assertEquals("abc", res[875].exec("qqq\nabc"), 2715);
+assertEquals("abc", res[875].exec("abc\nzzz"), 2716);
+assertEquals("abc", res[875].exec("qqq\nabc\nzzz"), 2717);
+assertEquals("abc", res[876].exec("abc"), 2718);
+assertEquals(null, res[876].exec("*** Failers", 2719));
+assertEquals(null, res[876].exec("qqq\nabc", 2720));
+assertEquals(null, res[876].exec("abc\nzzz", 2721));
+assertEquals(null, res[876].exec("qqq\nabc\nzzz", 2722));
+assertEquals(null, res[877].exec("abc", 2723));
+assertEquals(null, res[877].exec("abc\n ", 2724));
+assertEquals(null, res[877].exec("*** Failers", 2725));
+assertEquals(null, res[877].exec("qqq\nabc", 2726));
+assertEquals(null, res[877].exec("abc\nzzz", 2727));
+assertEquals(null, res[877].exec("qqq\nabc\nzzz", 2728));
+assertEquals(null, res[878].exec("abc\ndef", 2729));
+assertEquals(null, res[879].exec("*** Failers", 2730));
+assertEquals(null, res[879].exec("abc\ndef", 2731));
+assertEquals("b", res[880].exec("b::c"), 2732);
+assertEquals("::", res[880].exec("c::b"), 2733);
+assertEquals("az-", res[881].exec("az-"), 2734);
+assertEquals("a", res[881].exec("*** Failers"), 2735);
+assertEquals(null, res[881].exec("b", 2736));
+assertEquals("za-", res[882].exec("za-"), 2737);
+assertEquals("a", res[882].exec("*** Failers"), 2738);
+assertEquals(null, res[882].exec("b", 2739));
+assertEquals("a-z", res[883].exec("a-z"), 2740);
+assertEquals("a", res[883].exec("*** Failers"), 2741);
+assertEquals(null, res[883].exec("b", 2742));
+assertEquals("abcdxyz", res[884].exec("abcdxyz"), 2743);
+assertEquals("12-34", res[885].exec("12-34"), 2744);
+assertEquals(null, res[885].exec("*** Failers", 2745));
+assertEquals(null, res[885].exec("aaa", 2746));
+assertEquals("12-34z", res[886].exec("12-34z"), 2747);
+assertEquals(null, res[886].exec("*** Failers", 2748));
+assertEquals(null, res[886].exec("aaa", 2749));
+assertEquals("\\", res[887].exec("\\\\"), 2750);
+assertEquals(" Z", res[888].exec("the Zoo"), 2751);
+assertEquals(null, res[888].exec("*** Failers", 2752));
+assertEquals(null, res[888].exec("Zulu", 2753));
+assertEquals("ab{3cd", res[889].exec("ab{3cd"), 2754);
+assertEquals("ab{3,cd", res[890].exec("ab{3,cd"), 2755);
+assertEquals("ab{3,4a}cd", res[891].exec("ab{3,4a}cd"), 2756);
+assertEquals("{4,5a}bc", res[892].exec("{4,5a}bc"), 2757);
+assertEquals(null, res[893].exec("a\x0db", 2758));
+assertEquals(null, res[893].exec("*** Failers", 2759));
+assertEquals(null, res[893].exec("a\nb", 2760));
+assertEquals("abc", res[894].exec("abc"), 2761);
+assertEquals(null, res[894].exec("abc\n", 2762));
+assertEquals(null, res[894].exec("*** Failers", 2763));
+assertEquals(null, res[894].exec("abc\ndef", 2764));
+assertEquals("abcS,abc", res[895].exec("abcS"), 2765);
+assertEquals("abc\x93,abc", res[896].exec("abc\x93"), 2766);
+assertEquals("abc\xd3,abc", res[897].exec("abc\xd3"), 2767);
+assertEquals("abc@,abc", res[898].exec("abc@"), 2768);
+assertEquals("abc@,abc", res[898].exec("abc@"), 2769);
+assertEquals("abc@,abc", res[898].exec("abc@0"), 2770);
+assertEquals("abc@,abc", res[898].exec("abc@0"), 2771);
+assertEquals("abc@,abc", res[898].exec("abc@0"), 2772);
+assertEquals("abc@,abc", res[898].exec("abc@0"), 2773);
+assertEquals("abc@,abc", res[898].exec("abc@0"), 2774);
+assertEquals("abc@,abc", res[898].exec("abc@0"), 2775);
+assertEquals(null, res[899].exec("abc\x0081", 2776));
+assertEquals(null, res[899].exec("abc\x0081", 2777));
+assertEquals(null, res[900].exec("abc\x0091", 2778));
+assertEquals(null, res[900].exec("abc\x0091", 2779));
+assertEquals("abcdefghijk\nS,a,b,c,d,e,f,g,h,i,j,k", res[901].exec("abcdefghijk\nS"), 2780);
+assertEquals("abidef", res[902].exec("abidef"), 2781);
+assertEquals("bc", res[903].exec("bc"), 2782);
+assertEquals("xyz,,", res[904].exec("xyz"), 2783);
+assertEquals("abc\x08de", res[905].exec("abc\x08de"), 2784);
+assertEquals("abc\x01de", res[906].exec("abc\x01de"), 2785);
+assertEquals("abc\x01de,abc", res[907].exec("abc\x01de"), 2786);
+assertEquals(null, res[907].exec("a\nb", 2787));
+assertEquals("baNOTcccc,b,a,NOT,cccc", res[908].exec("baNOTccccd"), 2788);
+assertEquals("baNOTccc,b,a,NOT,ccc", res[908].exec("baNOTcccd"), 2789);
+assertEquals("baNOTcc,b,a,NO,Tcc", res[908].exec("baNOTccd"), 2790);
+assertEquals("baccc,b,a,,ccc", res[908].exec("bacccd"), 2791);
+assertEquals("*** Failers,*,*,* Fail,ers", res[908].exec("*** Failers"), 2792);
+assertEquals(null, res[908].exec("anything", 2793));
+assertEquals(null, res[908].exec("b\x08c   ", 2794));
+assertEquals(null, res[908].exec("baccd", 2795));
+assertEquals("A", res[909].exec("Abc"), 2796);
+assertEquals("b", res[910].exec("Abc "), 2797);
+assertEquals("AAA", res[911].exec("AAAaAbc"), 2798);
+assertEquals("bc ", res[912].exec("AAAaAbc "), 2799);
+assertEquals("bbb\nccc", res[913].exec("bbb\nccc"), 2800);
+assertEquals("c", res[914].exec("abc"), 2801);
+assertEquals("s", res[914].exec("*** Failers"), 2802);
+assertEquals(" ", res[914].exec("abk   "), 2803);
+assertEquals("abc", res[915].exec("abc"), 2804);
+assertEquals("bc", res[915].exec("kbc"), 2805);
+assertEquals("bc ", res[915].exec("kabc "), 2806);
+assertEquals("ers", res[915].exec("*** Failers"), 2807);
+assertEquals(null, res[915].exec("abk", 2808));
+assertEquals(null, res[915].exec("akb", 2809));
+assertEquals(null, res[915].exec("akk ", 2810));
+assertEquals("12345678@a.b.c.d", res[916].exec("12345678@a.b.c.d"), 2811);
+assertEquals("123456789@x.y.z", res[916].exec("123456789@x.y.z"), 2812);
+assertEquals(null, res[916].exec("*** Failers", 2813));
+assertEquals(null, res[916].exec("12345678@x.y.uk", 2814));
+assertEquals(null, res[916].exec("1234567@a.b.c.d       ", 2815));
+assertEquals("b", res[917].exec("aaaabcd"), 2816);
+assertEquals("A", res[917].exec("aaAabcd "), 2817);
+assertEquals("b", res[918].exec("aaaabcd"), 2818);
+assertEquals("b", res[918].exec("aaAabcd "), 2819);
+assertEquals("b", res[919].exec("aaaabcd"), 2820);
+assertEquals("A", res[919].exec("aaAabcd "), 2821);
+assertEquals("b", res[920].exec("aaaabcd"), 2822);
+assertEquals("b", res[920].exec("aaAabcd "), 2823);
+assertEquals("PSTAIREISLL", res[922].exec("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx"), 2824);
+assertEquals("PSTAIREISLL", res[923].exec("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx"), 2825);
+assertEquals(".230003938,.23", res[924].exec("1.230003938"), 2826);
+assertEquals(".875000282,.875", res[924].exec("1.875000282   "), 2827);
+assertEquals(".235,.23", res[924].exec("1.235  "), 2828);
+assertEquals(null, res[924].exec("              ", 2829));
+assertEquals(".23,.23,", res[925].exec("1.230003938      "), 2830);
+assertEquals(".875,.875,5", res[925].exec("1.875000282"), 2831);
+assertEquals(null, res[925].exec("*** Failers ", 2832));
+assertEquals(null, res[925].exec("1.235 ", 2833));
 assertThrows("var re = /a(?)b/;", 2834);
-assertNull(res[925].exec("ab ", 2835));
-assertToStringEquals("foo table,foo,table", res[926].exec("Food is on the foo table"), 2836);
-assertToStringEquals("food is under the bar in the bar,d is under the bar in the ", res[927].exec("The food is under the bar in the barn."), 2837);
-assertToStringEquals("food is under the bar,d is under the ", res[928].exec("The food is under the bar in the barn."), 2838);
-assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: 53147,", res[929].exec("I have 2 numbers: 53147"), 2839);
-assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: 5314,7", res[930].exec("I have 2 numbers: 53147"), 2840);
-assertToStringEquals(",,", res[931].exec("I have 2 numbers: 53147"), 2841);
-assertToStringEquals("I have 2,I have ,2", res[932].exec("I have 2 numbers: 53147"), 2842);
-assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: 5314,7", res[933].exec("I have 2 numbers: 53147"), 2843);
-assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: ,53147", res[934].exec("I have 2 numbers: 53147"), 2844);
-assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: ,53147", res[935].exec("I have 2 numbers: 53147"), 2845);
-assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: ,53147", res[936].exec("I have 2 numbers: 53147"), 2846);
-assertToStringEquals("AB", res[937].exec("ABC123"), 2847);
-assertToStringEquals(" ", res[937].exec(" "), 2848);
-assertToStringEquals("ABC,ABC", res[938].exec("ABC445"), 2849);
-assertNull(res[938].exec("*** Failers", 2850));
-assertNull(res[938].exec("ABC123", 2851));
-assertToStringEquals("W46]", res[939].exec("W46]789 "), 2852);
-assertToStringEquals("-46]", res[939].exec("-46]789"), 2853);
-assertNull(res[939].exec("*** Failers", 2854));
-assertNull(res[939].exec("Wall", 2855));
-assertNull(res[939].exec("Zebra", 2856));
-assertNull(res[939].exec("42", 2857));
-assertNull(res[939].exec("[abcd] ", 2858));
-assertNull(res[939].exec("]abcd[", 2859));
-assertNull(res[939].exec("   ", 2860));
-assertToStringEquals("W", res[940].exec("W46]789 "), 2861);
-assertToStringEquals("W", res[940].exec("Wall"), 2862);
-assertToStringEquals("Z", res[940].exec("Zebra"), 2863);
-assertToStringEquals("X", res[940].exec("Xylophone  "), 2864);
-assertToStringEquals("4", res[940].exec("42"), 2865);
-assertToStringEquals("[", res[940].exec("[abcd] "), 2866);
-assertToStringEquals("]", res[940].exec("]abcd["), 2867);
-assertToStringEquals("\\", res[940].exec("\\backslash "), 2868);
-assertNull(res[940].exec("*** Failers", 2869));
-assertNull(res[940].exec("-46]789", 2870));
-assertNull(res[940].exec("well", 2871));
-assertToStringEquals("01/01/2000", res[941].exec("01/01/2000"), 2872);
-assertToStringEquals(",", res[944].exec("bcd"), 2873);
-assertToStringEquals(",", res[944].exec("abc"), 2874);
-assertToStringEquals(",", res[944].exec("aab     "), 2875);
-assertToStringEquals(",", res[945].exec("bcd"), 2876);
-assertToStringEquals("a,a", res[945].exec("abc"), 2877);
-assertToStringEquals("a,a", res[945].exec("aab  "), 2878);
-assertToStringEquals(",", res[946].exec("bcd"), 2879);
-assertToStringEquals("a,a", res[946].exec("abc"), 2880);
-assertToStringEquals("aa,a", res[946].exec("aab  "), 2881);
-assertToStringEquals(",", res[947].exec("bcd"), 2882);
-assertToStringEquals("a,a", res[947].exec("abc"), 2883);
-assertToStringEquals("aa,a", res[947].exec("aab"), 2884);
-assertToStringEquals("aaa,a", res[947].exec("aaa   "), 2885);
-assertToStringEquals(",", res[948].exec("bcd"), 2886);
-assertToStringEquals("a,a", res[948].exec("abc"), 2887);
-assertToStringEquals("aa,a", res[948].exec("aab"), 2888);
-assertToStringEquals("aaa,a", res[948].exec("aaa"), 2889);
-assertToStringEquals("aaaaaaaa,a", res[948].exec("aaaaaaaa    "), 2890);
-assertNull(res[949].exec("bcd", 2891));
-assertToStringEquals("a,a", res[949].exec("abc"), 2892);
-assertToStringEquals("a,a", res[949].exec("aab  "), 2893);
-assertNull(res[950].exec("bcd", 2894));
-assertToStringEquals("a,a", res[950].exec("abc"), 2895);
-assertToStringEquals("aa,a", res[950].exec("aab  "), 2896);
-assertNull(res[951].exec("bcd", 2897));
-assertToStringEquals("a,a", res[951].exec("abc"), 2898);
-assertToStringEquals("aa,a", res[951].exec("aab"), 2899);
-assertToStringEquals("aaa,a", res[951].exec("aaa   "), 2900);
-assertNull(res[952].exec("bcd", 2901));
-assertToStringEquals("a,a", res[952].exec("abc"), 2902);
-assertToStringEquals("aa,a", res[952].exec("aab"), 2903);
-assertToStringEquals("aaa,a", res[952].exec("aaa"), 2904);
-assertToStringEquals("aaaaaaaa,a", res[952].exec("aaaaaaaa    "), 2905);
-assertToStringEquals("bib.gif", res[953].exec("borfle\nbib.gif\nno"), 2906);
-assertToStringEquals("bib.gif", res[954].exec("borfle\nbib.gif\nno"), 2907);
-assertToStringEquals("bib.gif", res[955].exec("borfle\nbib.gif\nno"), 2908);
-assertToStringEquals("bib.gif", res[956].exec("borfle\nbib.gif\nno"), 2909);
-assertToStringEquals("bib.gif", res[957].exec("borfle\nbib.gif\nno"), 2910);
-assertToStringEquals("no", res[958].exec("borfle\nbib.gif\nno"), 2911);
-assertToStringEquals("borfle", res[959].exec("borfle\nbib.gif\nno"), 2912);
-assertToStringEquals("no", res[960].exec("borfle\nbib.gif\nno"), 2913);
-assertToStringEquals("borfle", res[961].exec("borfle\nbib.gif\nno"), 2914);
-assertToStringEquals("", res[962].exec("borfle\nbib.gif\nno\n"), 2915);
-assertToStringEquals("borfle", res[963].exec("borfle\nbib.gif\nno\n"), 2916);
-assertToStringEquals("", res[964].exec("borfle\nbib.gif\nno\n"), 2917);
-assertToStringEquals("borfle", res[965].exec("borfle\nbib.gif\nno\n"), 2918);
-assertToStringEquals("1234X,1234X", res[966].exec("abcde\n1234Xyz"), 2919);
-assertToStringEquals("B,B", res[966].exec("BarFoo "), 2920);
-assertNull(res[966].exec("*** Failers", 2921));
-assertNull(res[966].exec("abcde\nBar  ", 2922));
-assertToStringEquals("1234X,1234X", res[967].exec("abcde\n1234Xyz"), 2923);
-assertToStringEquals("B,B", res[967].exec("BarFoo "), 2924);
-assertToStringEquals("B,B", res[967].exec("abcde\nBar  "), 2925);
-assertToStringEquals("1234X,1234X", res[968].exec("abcde\n1234Xyz"), 2926);
-assertToStringEquals("B,B", res[968].exec("BarFoo "), 2927);
-assertNull(res[968].exec("*** Failers", 2928));
-assertNull(res[968].exec("abcde\nBar  ", 2929));
-assertToStringEquals("1234X,1234X", res[969].exec("abcde\n1234Xyz"), 2930);
-assertToStringEquals("B,B", res[969].exec("BarFoo "), 2931);
-assertToStringEquals("B,B", res[969].exec("abcde\nBar  "), 2932);
-assertToStringEquals("1234X,1234X", res[969].exec("abcde\n1234Xyz"), 2933);
-assertToStringEquals("B,B", res[969].exec("BarFoo "), 2934);
-assertNull(res[969].exec("*** Failers ", 2935));
-assertToStringEquals("B,B", res[969].exec("abcde\nBar  "), 2936);
-assertToStringEquals("1234X,1234X", res[969].exec("abcde\n1234Xyz"), 2937);
-assertToStringEquals("B,B", res[969].exec("BarFoo "), 2938);
-assertNull(res[969].exec("*** Failers ", 2939));
-assertToStringEquals("B,B", res[969].exec("abcde\nBar  "), 2940);
-assertNull(res[970].exec("**** Failers", 2941));
-assertNull(res[970].exec("abc\nB", 2942));
-assertNull(res[970].exec(" ", 2943));
-assertNull(res[970].exec("abc\nB", 2944));
-assertNull(res[970].exec("abc\nB", 2945));
-assertNull(res[970].exec(" ", 2946));
-assertNull(res[970].exec("abc\nB", 2947));
-assertNull(res[970].exec("abc\nB", 2948));
-assertToStringEquals("B", res[970].exec("B\n"), 2949);
-assertToStringEquals("123456654321", res[971].exec("123456654321"), 2950);
-assertToStringEquals("123456654321", res[972].exec("123456654321 "), 2951);
-assertToStringEquals("123456654321", res[973].exec("123456654321"), 2952);
-assertToStringEquals("abcabcabcabc", res[974].exec("abcabcabcabc"), 2953);
-assertToStringEquals("abcabcabcabc", res[975].exec("abcabcabcabc"), 2954);
-assertToStringEquals("abcabcabcabc,c", res[976].exec("abcabcabcabc "), 2955);
-assertToStringEquals("n", res[977].exec("n"), 2956);
-assertNull(res[977].exec("*** Failers ", 2957));
-assertNull(res[977].exec("z ", 2958));
-assertToStringEquals("abcd", res[978].exec("abcd"), 2959);
-assertNull(res[978].exec("*** Failers", 2960));
-assertNull(res[978].exec("abce  ", 2961));
-assertToStringEquals("abe", res[979].exec("abe"), 2962);
-assertNull(res[979].exec("*** Failers", 2963));
-assertNull(res[979].exec("abcde ", 2964));
-assertToStringEquals("abd,", res[980].exec("abd"), 2965);
-assertNull(res[980].exec("*** Failers", 2966));
-assertNull(res[980].exec("abcd   ", 2967));
-assertToStringEquals("a,", res[981].exec("a"), 2968);
-assertToStringEquals("ab,b", res[981].exec("ab"), 2969);
-assertToStringEquals("abbbb,bbbb", res[981].exec("abbbb"), 2970);
-assertToStringEquals("a,", res[981].exec("*** Failers"), 2971);
-assertNull(res[981].exec("bbbbb    ", 2972));
-assertToStringEquals("abe", res[982].exec("abe"), 2973);
-assertNull(res[982].exec("*** Failers", 2974));
-assertNull(res[982].exec("ab1e   ", 2975));
-assertToStringEquals("\"quick\",quick", res[983].exec("the \"quick\" brown fox"), 2976);
-assertToStringEquals("\"the \\\"quick\\\" brown fox\", brown fox", res[983].exec("\"the \\\"quick\\\" brown fox\" "), 2977);
-assertToStringEquals("", res[984].exec("abc"), 2978);
-assertToStringEquals("", res[985].exec("abc "), 2979);
-assertToStringEquals("", res[986].exec("abc "), 2980);
+assertEquals(null, res[925].exec("ab ", 2835));
+assertEquals("foo table,foo,table", res[926].exec("Food is on the foo table"), 2836);
+assertEquals("food is under the bar in the bar,d is under the bar in the ", res[927].exec("The food is under the bar in the barn."), 2837);
+assertEquals("food is under the bar,d is under the ", res[928].exec("The food is under the bar in the barn."), 2838);
+assertEquals("I have 2 numbers: 53147,I have 2 numbers: 53147,", res[929].exec("I have 2 numbers: 53147"), 2839);
+assertEquals("I have 2 numbers: 53147,I have 2 numbers: 5314,7", res[930].exec("I have 2 numbers: 53147"), 2840);
+assertEquals(",,", res[931].exec("I have 2 numbers: 53147"), 2841);
+assertEquals("I have 2,I have ,2", res[932].exec("I have 2 numbers: 53147"), 2842);
+assertEquals("I have 2 numbers: 53147,I have 2 numbers: 5314,7", res[933].exec("I have 2 numbers: 53147"), 2843);
+assertEquals("I have 2 numbers: 53147,I have 2 numbers: ,53147", res[934].exec("I have 2 numbers: 53147"), 2844);
+assertEquals("I have 2 numbers: 53147,I have 2 numbers: ,53147", res[935].exec("I have 2 numbers: 53147"), 2845);
+assertEquals("I have 2 numbers: 53147,I have 2 numbers: ,53147", res[936].exec("I have 2 numbers: 53147"), 2846);
+assertEquals("AB", res[937].exec("ABC123"), 2847);
+assertEquals(" ", res[937].exec(" "), 2848);
+assertEquals("ABC,ABC", res[938].exec("ABC445"), 2849);
+assertEquals(null, res[938].exec("*** Failers", 2850));
+assertEquals(null, res[938].exec("ABC123", 2851));
+assertEquals("W46]", res[939].exec("W46]789 "), 2852);
+assertEquals("-46]", res[939].exec("-46]789"), 2853);
+assertEquals(null, res[939].exec("*** Failers", 2854));
+assertEquals(null, res[939].exec("Wall", 2855));
+assertEquals(null, res[939].exec("Zebra", 2856));
+assertEquals(null, res[939].exec("42", 2857));
+assertEquals(null, res[939].exec("[abcd] ", 2858));
+assertEquals(null, res[939].exec("]abcd[", 2859));
+assertEquals(null, res[939].exec("   ", 2860));
+assertEquals("W", res[940].exec("W46]789 "), 2861);
+assertEquals("W", res[940].exec("Wall"), 2862);
+assertEquals("Z", res[940].exec("Zebra"), 2863);
+assertEquals("X", res[940].exec("Xylophone  "), 2864);
+assertEquals("4", res[940].exec("42"), 2865);
+assertEquals("[", res[940].exec("[abcd] "), 2866);
+assertEquals("]", res[940].exec("]abcd["), 2867);
+assertEquals("\\", res[940].exec("\\backslash "), 2868);
+assertEquals(null, res[940].exec("*** Failers", 2869));
+assertEquals(null, res[940].exec("-46]789", 2870));
+assertEquals(null, res[940].exec("well", 2871));
+assertEquals("01/01/2000", res[941].exec("01/01/2000"), 2872);
+assertEquals(",", res[944].exec("bcd"), 2873);
+assertEquals(",", res[944].exec("abc"), 2874);
+assertEquals(",", res[944].exec("aab     "), 2875);
+assertEquals(",", res[945].exec("bcd"), 2876);
+assertEquals("a,a", res[945].exec("abc"), 2877);
+assertEquals("a,a", res[945].exec("aab  "), 2878);
+assertEquals(",", res[946].exec("bcd"), 2879);
+assertEquals("a,a", res[946].exec("abc"), 2880);
+assertEquals("aa,a", res[946].exec("aab  "), 2881);
+assertEquals(",", res[947].exec("bcd"), 2882);
+assertEquals("a,a", res[947].exec("abc"), 2883);
+assertEquals("aa,a", res[947].exec("aab"), 2884);
+assertEquals("aaa,a", res[947].exec("aaa   "), 2885);
+assertEquals(",", res[948].exec("bcd"), 2886);
+assertEquals("a,a", res[948].exec("abc"), 2887);
+assertEquals("aa,a", res[948].exec("aab"), 2888);
+assertEquals("aaa,a", res[948].exec("aaa"), 2889);
+assertEquals("aaaaaaaa,a", res[948].exec("aaaaaaaa    "), 2890);
+assertEquals(null, res[949].exec("bcd", 2891));
+assertEquals("a,a", res[949].exec("abc"), 2892);
+assertEquals("a,a", res[949].exec("aab  "), 2893);
+assertEquals(null, res[950].exec("bcd", 2894));
+assertEquals("a,a", res[950].exec("abc"), 2895);
+assertEquals("aa,a", res[950].exec("aab  "), 2896);
+assertEquals(null, res[951].exec("bcd", 2897));
+assertEquals("a,a", res[951].exec("abc"), 2898);
+assertEquals("aa,a", res[951].exec("aab"), 2899);
+assertEquals("aaa,a", res[951].exec("aaa   "), 2900);
+assertEquals(null, res[952].exec("bcd", 2901));
+assertEquals("a,a", res[952].exec("abc"), 2902);
+assertEquals("aa,a", res[952].exec("aab"), 2903);
+assertEquals("aaa,a", res[952].exec("aaa"), 2904);
+assertEquals("aaaaaaaa,a", res[952].exec("aaaaaaaa    "), 2905);
+assertEquals("bib.gif", res[953].exec("borfle\nbib.gif\nno"), 2906);
+assertEquals("bib.gif", res[954].exec("borfle\nbib.gif\nno"), 2907);
+assertEquals("bib.gif", res[955].exec("borfle\nbib.gif\nno"), 2908);
+assertEquals("bib.gif", res[956].exec("borfle\nbib.gif\nno"), 2909);
+assertEquals("bib.gif", res[957].exec("borfle\nbib.gif\nno"), 2910);
+assertEquals("no", res[958].exec("borfle\nbib.gif\nno"), 2911);
+assertEquals("borfle", res[959].exec("borfle\nbib.gif\nno"), 2912);
+assertEquals("no", res[960].exec("borfle\nbib.gif\nno"), 2913);
+assertEquals("borfle", res[961].exec("borfle\nbib.gif\nno"), 2914);
+assertEquals("", res[962].exec("borfle\nbib.gif\nno\n"), 2915);
+assertEquals("borfle", res[963].exec("borfle\nbib.gif\nno\n"), 2916);
+assertEquals("", res[964].exec("borfle\nbib.gif\nno\n"), 2917);
+assertEquals("borfle", res[965].exec("borfle\nbib.gif\nno\n"), 2918);
+assertEquals("1234X,1234X", res[966].exec("abcde\n1234Xyz"), 2919);
+assertEquals("B,B", res[966].exec("BarFoo "), 2920);
+assertEquals(null, res[966].exec("*** Failers", 2921));
+assertEquals(null, res[966].exec("abcde\nBar  ", 2922));
+assertEquals("1234X,1234X", res[967].exec("abcde\n1234Xyz"), 2923);
+assertEquals("B,B", res[967].exec("BarFoo "), 2924);
+assertEquals("B,B", res[967].exec("abcde\nBar  "), 2925);
+assertEquals("1234X,1234X", res[968].exec("abcde\n1234Xyz"), 2926);
+assertEquals("B,B", res[968].exec("BarFoo "), 2927);
+assertEquals(null, res[968].exec("*** Failers", 2928));
+assertEquals(null, res[968].exec("abcde\nBar  ", 2929));
+assertEquals("1234X,1234X", res[969].exec("abcde\n1234Xyz"), 2930);
+assertEquals("B,B", res[969].exec("BarFoo "), 2931);
+assertEquals("B,B", res[969].exec("abcde\nBar  "), 2932);
+assertEquals("1234X,1234X", res[969].exec("abcde\n1234Xyz"), 2933);
+assertEquals("B,B", res[969].exec("BarFoo "), 2934);
+assertEquals(null, res[969].exec("*** Failers ", 2935));
+assertEquals("B,B", res[969].exec("abcde\nBar  "), 2936);
+assertEquals("1234X,1234X", res[969].exec("abcde\n1234Xyz"), 2937);
+assertEquals("B,B", res[969].exec("BarFoo "), 2938);
+assertEquals(null, res[969].exec("*** Failers ", 2939));
+assertEquals("B,B", res[969].exec("abcde\nBar  "), 2940);
+assertEquals(null, res[970].exec("**** Failers", 2941));
+assertEquals(null, res[970].exec("abc\nB", 2942));
+assertEquals(null, res[970].exec(" ", 2943));
+assertEquals(null, res[970].exec("abc\nB", 2944));
+assertEquals(null, res[970].exec("abc\nB", 2945));
+assertEquals(null, res[970].exec(" ", 2946));
+assertEquals(null, res[970].exec("abc\nB", 2947));
+assertEquals(null, res[970].exec("abc\nB", 2948));
+assertEquals("B", res[970].exec("B\n"), 2949);
+assertEquals("123456654321", res[971].exec("123456654321"), 2950);
+assertEquals("123456654321", res[972].exec("123456654321 "), 2951);
+assertEquals("123456654321", res[973].exec("123456654321"), 2952);
+assertEquals("abcabcabcabc", res[974].exec("abcabcabcabc"), 2953);
+assertEquals("abcabcabcabc", res[975].exec("abcabcabcabc"), 2954);
+assertEquals("abcabcabcabc,c", res[976].exec("abcabcabcabc "), 2955);
+assertEquals("n", res[977].exec("n"), 2956);
+assertEquals(null, res[977].exec("*** Failers ", 2957));
+assertEquals(null, res[977].exec("z ", 2958));
+assertEquals("abcd", res[978].exec("abcd"), 2959);
+assertEquals(null, res[978].exec("*** Failers", 2960));
+assertEquals(null, res[978].exec("abce  ", 2961));
+assertEquals("abe", res[979].exec("abe"), 2962);
+assertEquals(null, res[979].exec("*** Failers", 2963));
+assertEquals(null, res[979].exec("abcde ", 2964));
+assertEquals("abd,", res[980].exec("abd"), 2965);
+assertEquals(null, res[980].exec("*** Failers", 2966));
+assertEquals(null, res[980].exec("abcd   ", 2967));
+assertEquals("a,", res[981].exec("a"), 2968);
+assertEquals("ab,b", res[981].exec("ab"), 2969);
+assertEquals("abbbb,bbbb", res[981].exec("abbbb"), 2970);
+assertEquals("a,", res[981].exec("*** Failers"), 2971);
+assertEquals(null, res[981].exec("bbbbb    ", 2972));
+assertEquals("abe", res[982].exec("abe"), 2973);
+assertEquals(null, res[982].exec("*** Failers", 2974));
+assertEquals(null, res[982].exec("ab1e   ", 2975));
+assertEquals("\"quick\",quick", res[983].exec("the \"quick\" brown fox"), 2976);
+assertEquals("\"the \\\"quick\\\" brown fox\", brown fox", res[983].exec("\"the \\\"quick\\\" brown fox\" "), 2977);
+assertEquals("", res[984].exec("abc"), 2978);
+assertEquals("", res[985].exec("abc "), 2979);
+assertEquals("", res[986].exec("abc "), 2980);
 assertThrows("var re = //;", 2981);
-assertToStringEquals("", res[986].exec("abc"), 2982);
-assertToStringEquals("acb", res[988].exec("acb"), 2983);
-assertToStringEquals("a\nb", res[988].exec("a\nb"), 2984);
-assertToStringEquals("acb", res[989].exec("acb"), 2985);
-assertNull(res[989].exec("*** Failers ", 2986));
-assertNull(res[989].exec("a\nb   ", 2987));
-assertToStringEquals("acb", res[990].exec("acb"), 2988);
-assertToStringEquals("a\nb", res[990].exec("a\nb  "), 2989);
-assertToStringEquals("acb", res[991].exec("acb"), 2990);
-assertNull(res[991].exec("a\nb  ", 2991));
-assertToStringEquals("bac,a", res[992].exec("bac"), 2992);
-assertToStringEquals("bbac,a", res[992].exec("bbac"), 2993);
-assertToStringEquals("bbbac,a", res[992].exec("bbbac"), 2994);
-assertToStringEquals("bbbbac,a", res[992].exec("bbbbac"), 2995);
-assertToStringEquals("bbbbbac,a", res[992].exec("bbbbbac "), 2996);
-assertToStringEquals("bac,a", res[993].exec("bac"), 2997);
-assertToStringEquals("bbac,a", res[993].exec("bbac"), 2998);
-assertToStringEquals("bbbac,a", res[993].exec("bbbac"), 2999);
-assertToStringEquals("bbbbac,a", res[993].exec("bbbbac"), 3000);
-assertToStringEquals("bbbbbac,a", res[993].exec("bbbbbac "), 3001);
-assertToStringEquals("x", res[994].exec("x\nb\n"), 3002);
-assertToStringEquals("x", res[994].exec("a\x08x\n  "), 3003);
-assertNull(res[995].exec("\x00{ab} ", 3004));
-assertToStringEquals("CD,", res[996].exec("CD "), 3005);
-assertToStringEquals("CD,", res[997].exec("CD "), 3006);
-assertNull(res[997].exec("foo", 3007));
-assertNull(res[997].exec("catfood", 3008));
-assertNull(res[997].exec("arfootle", 3009));
-assertNull(res[997].exec("rfoosh", 3010));
-assertNull(res[997].exec("*** Failers", 3011));
-assertNull(res[997].exec("barfoo", 3012));
-assertNull(res[997].exec("towbarfoo", 3013));
-assertNull(res[997].exec("catfood", 3014));
-assertNull(res[997].exec("*** Failers", 3015));
-assertNull(res[997].exec("foo", 3016));
-assertNull(res[997].exec("barfoo", 3017));
-assertNull(res[997].exec("towbarfoo", 3018));
-assertNull(res[997].exec("fooabar", 3019));
-assertNull(res[997].exec("*** Failers", 3020));
-assertNull(res[997].exec("bar", 3021));
-assertNull(res[997].exec("foobbar", 3022));
-assertNull(res[997].exec("  ", 3023));
-assertNull(res[998].exec("abc", 3024));
-assertNull(res[998].exec("*** Failers", 3025));
-assertNull(res[998].exec("abc\n   ", 3026));
-assertNull(res[998].exec("qqq\nabc", 3027));
-assertNull(res[998].exec("abc\nzzz", 3028));
-assertNull(res[998].exec("qqq\nabc\nzzz", 3029));
-assertNull(res[998].exec("/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/", 3030));
-assertNull(res[998].exec("/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo", 3031));
-assertNull(res[998].exec("1.230003938", 3032));
-assertNull(res[998].exec("1.875000282", 3033));
-assertNull(res[998].exec("*** Failers ", 3034));
-assertNull(res[998].exec("1.235 ", 3035));
-assertNull(res[998].exec("now is the time for all good men to come to the aid of the party", 3036));
-assertNull(res[998].exec("*** Failers", 3037));
-assertNull(res[998].exec("this is not a line with only words and spaces!", 3038));
-assertToStringEquals("12345a,12345,a", res[999].exec("12345a"), 3039);
-assertToStringEquals("12345,1234,5", res[999].exec("12345+ "), 3040);
-assertToStringEquals("12345a,12345,a", res[999].exec("12345a"), 3041);
-assertNull(res[999].exec("*** Failers", 3042));
-assertToStringEquals("12345,1234,5", res[999].exec("12345+ "), 3043);
-assertNull(res[999].exec("aaab", 3044));
-assertNull(res[999].exec("aaab", 3045));
-assertNull(res[999].exec("aaab", 3046));
-assertNull(res[999].exec("aaabbbccc", 3047));
-assertNull(res[999].exec("aaabbbbccccd", 3048));
-assertToStringEquals("aaabbbbcccc,ccc", res[1000].exec("aaabbbbccccd"), 3049);
-assertToStringEquals("abc,b", res[1000].exec("((abc(ade)ufh()()x"), 3050);
-assertNull(res[1000].exec("", 3051));
-assertToStringEquals("abc,b", res[1000].exec("(abc)"), 3052);
-assertToStringEquals("abc,b", res[1000].exec("(abc(def)xyz)"), 3053);
-assertNull(res[1000].exec("*** Failers", 3054));
-assertNull(res[1000].exec("ab", 3055));
-assertNull(res[1000].exec("Ab", 3056));
-assertNull(res[1000].exec("*** Failers ", 3057));
-assertNull(res[1000].exec("aB", 3058));
-assertNull(res[1000].exec("AB", 3059));
-assertNull(res[1000].exec("    ", 3060));
-assertToStringEquals("bc,b", res[1000].exec("a bcd e"), 3061);
-assertNull(res[1000].exec("*** Failers", 3062));
-assertToStringEquals("c,", res[1000].exec("a b cd e"), 3063);
-assertToStringEquals("abc,b", res[1000].exec("abcd e   "), 3064);
-assertToStringEquals("bc,b", res[1000].exec("a bcde "), 3065);
-assertToStringEquals("bc,b", res[1000].exec("a bcde f"), 3066);
-assertNull(res[1000].exec("*** Failers", 3067));
-assertToStringEquals("abc,b", res[1000].exec("abcdef  "), 3068);
-assertToStringEquals("abc,b", res[1000].exec("abc"), 3069);
-assertToStringEquals("c,", res[1000].exec("aBc"), 3070);
-assertNull(res[1000].exec("*** Failers", 3071));
-assertNull(res[1000].exec("abC", 3072));
-assertNull(res[1000].exec("aBC  ", 3073));
-assertToStringEquals("bc,b", res[1000].exec("Abc"), 3074);
-assertToStringEquals("c,", res[1000].exec("ABc"), 3075);
-assertNull(res[1000].exec("ABC", 3076));
-assertNull(res[1000].exec("AbC", 3077));
-assertNull(res[1000].exec("", 3078));
-assertToStringEquals("abc,b", res[1000].exec("abc"), 3079);
-assertToStringEquals("c,", res[1000].exec("aBc"), 3080);
-assertNull(res[1000].exec("*** Failers ", 3081));
-assertNull(res[1000].exec("ABC", 3082));
-assertNull(res[1000].exec("abC", 3083));
-assertNull(res[1000].exec("aBC", 3084));
-assertNull(res[1000].exec("", 3085));
-assertToStringEquals("c,", res[1000].exec("aBc"), 3086);
-assertToStringEquals("c,", res[1000].exec("aBBc"), 3087);
-assertNull(res[1000].exec("*** Failers ", 3088));
-assertNull(res[1000].exec("aBC", 3089));
-assertNull(res[1000].exec("aBBC", 3090));
-assertNull(res[1000].exec("", 3091));
-assertToStringEquals("abc,b", res[1000].exec("abcd"), 3092);
-assertNull(res[1000].exec("abCd", 3093));
-assertNull(res[1000].exec("*** Failers", 3094));
-assertNull(res[1000].exec("aBCd", 3095));
-assertToStringEquals("abc,b", res[1000].exec("abcD     "), 3096);
-assertNull(res[1000].exec("", 3097));
-assertNull(res[1000].exec("more than million", 3098));
-assertNull(res[1000].exec("more than MILLION", 3099));
-assertNull(res[1000].exec("more \n than Million ", 3100));
-assertNull(res[1000].exec("*** Failers", 3101));
-assertNull(res[1000].exec("MORE THAN MILLION    ", 3102));
-assertNull(res[1000].exec("more \n than \n million ", 3103));
-assertNull(res[1000].exec("more than million", 3104));
-assertNull(res[1000].exec("more than MILLION", 3105));
-assertNull(res[1000].exec("more \n than Million ", 3106));
-assertNull(res[1000].exec("*** Failers", 3107));
-assertNull(res[1000].exec("MORE THAN MILLION    ", 3108));
-assertNull(res[1000].exec("more \n than \n million ", 3109));
-assertNull(res[1000].exec("", 3110));
-assertToStringEquals("abc,b", res[1000].exec("abc"), 3111);
-assertToStringEquals("bc,b", res[1000].exec("aBbc"), 3112);
-assertToStringEquals("c,", res[1000].exec("aBBc "), 3113);
-assertNull(res[1000].exec("*** Failers", 3114));
-assertToStringEquals("bc,b", res[1000].exec("Abc"), 3115);
-assertNull(res[1000].exec("abAb    ", 3116));
-assertNull(res[1000].exec("abbC ", 3117));
-assertNull(res[1000].exec("", 3118));
-assertToStringEquals("abc,b", res[1000].exec("abc"), 3119);
-assertToStringEquals("c,", res[1000].exec("aBc"), 3120);
-assertNull(res[1000].exec("*** Failers", 3121));
-assertNull(res[1000].exec("Ab ", 3122));
-assertNull(res[1000].exec("abC", 3123));
-assertNull(res[1000].exec("aBC     ", 3124));
-assertNull(res[1000].exec("", 3125));
-assertToStringEquals("c,", res[1000].exec("abxxc"), 3126);
-assertToStringEquals("c,", res[1000].exec("aBxxc"), 3127);
-assertNull(res[1000].exec("*** Failers", 3128));
-assertToStringEquals("c,", res[1000].exec("Abxxc"), 3129);
-assertToStringEquals("c,", res[1000].exec("ABxxc"), 3130);
-assertNull(res[1000].exec("abxxC      ", 3131));
-assertToStringEquals("abc,b", res[1000].exec("abc:"), 3132);
-assertNull(res[1000].exec("12", 3133));
-assertNull(res[1000].exec("*** Failers", 3134));
-assertNull(res[1000].exec("123", 3135));
-assertNull(res[1000].exec("xyz    ", 3136));
-assertToStringEquals("abc,b", res[1000].exec("abc:"), 3137);
-assertNull(res[1000].exec("12", 3138));
-assertNull(res[1000].exec("*** Failers", 3139));
-assertNull(res[1000].exec("123", 3140));
-assertNull(res[1000].exec("xyz    ", 3141));
-assertNull(res[1000].exec("", 3142));
-assertNull(res[1000].exec("foobar", 3143));
-assertToStringEquals("c,", res[1000].exec("cat"), 3144);
-assertToStringEquals("c,", res[1000].exec("fcat"), 3145);
-assertToStringEquals("c,", res[1000].exec("focat   "), 3146);
-assertNull(res[1000].exec("*** Failers", 3147));
-assertToStringEquals("c,", res[1000].exec("foocat  "), 3148);
-assertNull(res[1000].exec("foobar", 3149));
-assertToStringEquals("c,", res[1000].exec("cat"), 3150);
-assertToStringEquals("c,", res[1000].exec("fcat"), 3151);
-assertToStringEquals("c,", res[1000].exec("focat   "), 3152);
-assertNull(res[1000].exec("*** Failers", 3153));
-assertToStringEquals("c,", res[1000].exec("foocat  "), 3154);
-assertNull(res[1000].exec("a", 3155));
-assertNull(res[1000].exec("aa", 3156));
-assertNull(res[1000].exec("aaaa", 3157));
-assertNull(res[1000].exec("", 3158));
-assertToStringEquals("abc,abc", res[1001].exec("abc"), 3159);
-assertToStringEquals("abcabc,abc", res[1001].exec("abcabc"), 3160);
-assertToStringEquals("abcabcabc,abc", res[1001].exec("abcabcabc"), 3161);
-assertToStringEquals(",", res[1001].exec("xyz      "), 3162);
-assertToStringEquals("a,a", res[1002].exec("a"), 3163);
-assertToStringEquals("aaaaa,aaaaa", res[1002].exec("aaaaa "), 3164);
-assertToStringEquals("a,a", res[1003].exec("a"), 3165);
-assertToStringEquals("b,b", res[1003].exec("b"), 3166);
-assertToStringEquals("ababab,ababab", res[1003].exec("ababab"), 3167);
-assertToStringEquals("aaaab,aaaab", res[1003].exec("aaaabcde"), 3168);
-assertToStringEquals("bbbb,bbbb", res[1003].exec("bbbb    "), 3169);
-assertToStringEquals("b,b", res[1004].exec("b"), 3170);
-assertToStringEquals("bbbb,bbbb", res[1004].exec("bbbb"), 3171);
-assertToStringEquals(",", res[1004].exec("aaa   "), 3172);
-assertToStringEquals("cccc,cccc", res[1005].exec("cccc"), 3173);
-assertToStringEquals(",", res[1005].exec("abab  "), 3174);
-assertToStringEquals("a,a", res[1006].exec("a"), 3175);
-assertToStringEquals("aaaa,a", res[1006].exec("aaaa "), 3176);
-assertToStringEquals("a,a", res[1007].exec("a"), 3177);
-assertToStringEquals("b,b", res[1007].exec("b"), 3178);
-assertToStringEquals("abab,b", res[1007].exec("abab"), 3179);
-assertToStringEquals("baba,a", res[1007].exec("baba   "), 3180);
-assertToStringEquals("b,b", res[1008].exec("b"), 3181);
-assertToStringEquals("bbbb,b", res[1008].exec("bbbb"), 3182);
-assertToStringEquals(",", res[1008].exec("aaa   "), 3183);
-assertToStringEquals("c,c", res[1009].exec("c"), 3184);
-assertToStringEquals("cccc,c", res[1009].exec("cccc"), 3185);
-assertToStringEquals(",", res[1009].exec("baba   "), 3186);
-assertToStringEquals(",", res[1009].exec("a"), 3187);
-assertToStringEquals(",", res[1009].exec("aaabcde "), 3188);
-assertToStringEquals(",", res[1009].exec("aaaaa"), 3189);
-assertToStringEquals(",", res[1009].exec("aabbaa "), 3190);
-assertToStringEquals(",", res[1009].exec("aaaaa"), 3191);
-assertToStringEquals(",", res[1009].exec("aabbaa "), 3192);
-assertToStringEquals("12-sep-98,8", res[1009].exec("12-sep-98"), 3193);
-assertToStringEquals("12-09-98,8", res[1009].exec("12-09-98"), 3194);
-assertToStringEquals("*** F,F", res[1009].exec("*** Failers"), 3195);
-assertToStringEquals("sep-12-98,8", res[1009].exec("sep-12-98"), 3196);
-assertToStringEquals("    , ", res[1009].exec("    "), 3197);
-assertToStringEquals("s,s", res[1009].exec("saturday"), 3198);
-assertToStringEquals("sund,d", res[1009].exec("sunday"), 3199);
-assertToStringEquals("S,S", res[1009].exec("Saturday"), 3200);
-assertToStringEquals("Sund,d", res[1009].exec("Sunday"), 3201);
-assertToStringEquals("SATURDAY,Y", res[1009].exec("SATURDAY"), 3202);
-assertToStringEquals("SUNDAY,Y", res[1009].exec("SUNDAY"), 3203);
-assertToStringEquals("SunD,D", res[1009].exec("SunDay"), 3204);
-assertToStringEquals(",", res[1009].exec("abcx"), 3205);
-assertToStringEquals(",", res[1009].exec("aBCx"), 3206);
-assertToStringEquals(",", res[1009].exec("bbx"), 3207);
-assertToStringEquals("BBx,x", res[1009].exec("BBx"), 3208);
-assertToStringEquals("*** F,F", res[1009].exec("*** Failers"), 3209);
-assertToStringEquals(",", res[1009].exec("abcX"), 3210);
-assertToStringEquals(",", res[1009].exec("aBCX"), 3211);
-assertToStringEquals(",", res[1009].exec("bbX"), 3212);
-assertToStringEquals("BBX               , ", res[1009].exec("BBX               "), 3213);
-assertToStringEquals(",", res[1009].exec("ac"), 3214);
-assertToStringEquals(",", res[1009].exec("aC"), 3215);
-assertToStringEquals(",", res[1009].exec("bD"), 3216);
-assertToStringEquals("eleph,h", res[1009].exec("elephant"), 3217);
-assertToStringEquals("Europe , ", res[1009].exec("Europe "), 3218);
-assertToStringEquals("frog,g", res[1009].exec("frog"), 3219);
-assertToStringEquals("Fr,r", res[1009].exec("France"), 3220);
-assertToStringEquals("*** F,F", res[1009].exec("*** Failers"), 3221);
-assertToStringEquals("Afric,c", res[1009].exec("Africa     "), 3222);
-assertToStringEquals(",", res[1009].exec("ab"), 3223);
-assertToStringEquals(",", res[1009].exec("aBd"), 3224);
-assertToStringEquals("xy,y", res[1009].exec("xy"), 3225);
-assertToStringEquals("xY,Y", res[1009].exec("xY"), 3226);
-assertToStringEquals("ze,e", res[1009].exec("zebra"), 3227);
-assertToStringEquals("Z,Z", res[1009].exec("Zambesi"), 3228);
-assertToStringEquals("*** F,F", res[1009].exec("*** Failers"), 3229);
-assertToStringEquals(",", res[1009].exec("aCD  "), 3230);
-assertToStringEquals("XY  , ", res[1009].exec("XY  "), 3231);
-assertToStringEquals("foo\n,\n", res[1009].exec("foo\nbar"), 3232);
-assertToStringEquals("*** F,F", res[1009].exec("*** Failers"), 3233);
-assertToStringEquals(",", res[1009].exec("bar"), 3234);
-assertToStringEquals(",", res[1009].exec("baz\nbar   "), 3235);
-assertToStringEquals(",", res[1009].exec("barbaz"), 3236);
-assertToStringEquals(",", res[1009].exec("barbarbaz "), 3237);
-assertToStringEquals("koo,o", res[1009].exec("koobarbaz "), 3238);
-assertToStringEquals("*** F,F", res[1009].exec("*** Failers"), 3239);
-assertToStringEquals(",", res[1009].exec("baz"), 3240);
-assertToStringEquals("foo,o", res[1009].exec("foobarbaz "), 3241);
-assertToStringEquals("abc", res[1012].exec("abc"), 3242);
-assertToStringEquals("abc", res[1012].exec("xabcy"), 3243);
-assertToStringEquals("abc", res[1012].exec("ababc"), 3244);
-assertNull(res[1012].exec("*** Failers", 3245));
-assertNull(res[1012].exec("xbc", 3246));
-assertNull(res[1012].exec("axc", 3247));
-assertNull(res[1012].exec("abx", 3248));
-assertToStringEquals("abc", res[1013].exec("abc"), 3249);
-assertToStringEquals("abc", res[1014].exec("abc"), 3250);
-assertToStringEquals("abbc", res[1014].exec("abbc"), 3251);
-assertToStringEquals("abbbbc", res[1014].exec("abbbbc"), 3252);
-assertToStringEquals("a", res[1015].exec("abbbbc"), 3253);
-assertToStringEquals("abbb", res[1016].exec("abbbbc"), 3254);
-assertToStringEquals("abbbbc", res[1017].exec("abbbbc"), 3255);
-assertToStringEquals("abbc", res[1018].exec("abbc"), 3256);
-assertNull(res[1018].exec("*** Failers", 3257));
-assertNull(res[1018].exec("abc", 3258));
-assertNull(res[1018].exec("abq", 3259));
-assertToStringEquals("abbbbc", res[1020].exec("abbbbc"), 3260);
-assertToStringEquals("abbbbc", res[1021].exec("abbbbc"), 3261);
-assertToStringEquals("abbbbc", res[1022].exec("abbbbc"), 3262);
-assertToStringEquals("abbbbc", res[1023].exec("abbbbc"), 3263);
-assertNull(res[1024].exec("*** Failers", 3264));
-assertNull(res[1024].exec("abq", 3265));
-assertNull(res[1024].exec("abbbbc", 3266));
-assertToStringEquals("abbc", res[1025].exec("abbc"), 3267);
-assertToStringEquals("abc", res[1025].exec("abc"), 3268);
-assertToStringEquals("abc", res[1026].exec("abc"), 3269);
-assertToStringEquals("abc", res[1028].exec("abc"), 3270);
-assertToStringEquals("abc", res[1029].exec("abc"), 3271);
-assertToStringEquals("abc", res[1030].exec("abc"), 3272);
-assertNull(res[1030].exec("*** Failers", 3273));
-assertNull(res[1030].exec("abbbbc", 3274));
-assertNull(res[1030].exec("abcc", 3275));
-assertToStringEquals("abc", res[1031].exec("abcc"), 3276);
-assertToStringEquals("abc", res[1033].exec("aabc"), 3277);
-assertNull(res[1033].exec("*** Failers", 3278));
-assertToStringEquals("abc", res[1033].exec("aabc"), 3279);
-assertNull(res[1033].exec("aabcd", 3280));
-assertToStringEquals("", res[1034].exec("abc"), 3281);
-assertToStringEquals("", res[1035].exec("abc"), 3282);
-assertToStringEquals("abc", res[1036].exec("abc"), 3283);
-assertToStringEquals("axc", res[1036].exec("axc"), 3284);
-assertToStringEquals("axyzc", res[1037].exec("axyzc"), 3285);
-assertToStringEquals("abd", res[1038].exec("abd"), 3286);
-assertNull(res[1038].exec("*** Failers", 3287));
-assertNull(res[1038].exec("axyzd", 3288));
-assertNull(res[1038].exec("abc", 3289));
-assertToStringEquals("ace", res[1039].exec("ace"), 3290);
-assertToStringEquals("ac", res[1040].exec("aac"), 3291);
-assertToStringEquals("a-", res[1041].exec("a-"), 3292);
-assertToStringEquals("a-", res[1042].exec("a-"), 3293);
-assertToStringEquals("a]", res[1043].exec("a]"), 3294);
-assertNull(res[1044].exec("a]b", 3295));
-assertToStringEquals("aed", res[1045].exec("aed"), 3296);
-assertNull(res[1045].exec("*** Failers", 3297));
-assertNull(res[1045].exec("abd", 3298));
-assertNull(res[1045].exec("abd", 3299));
-assertToStringEquals("adc", res[1046].exec("adc"), 3300);
-assertNull(res[1047].exec("adc", 3301));
-assertNull(res[1047].exec("*** Failers", 3302));
-assertNull(res[1047].exec("a-c", 3303));
-assertNull(res[1047].exec("a]c", 3304));
-assertToStringEquals("a", res[1048].exec("a-"), 3305);
-assertToStringEquals("a", res[1048].exec("-a"), 3306);
-assertToStringEquals("a", res[1048].exec("-a-"), 3307);
-assertNull(res[1049].exec("*** Failers", 3308));
-assertNull(res[1049].exec("xy", 3309));
-assertNull(res[1049].exec("yz", 3310));
-assertNull(res[1049].exec("xyz", 3311));
-assertToStringEquals("a", res[1050].exec("*** Failers"), 3312);
-assertNull(res[1050].exec("a-", 3313));
-assertNull(res[1050].exec("-a", 3314));
-assertNull(res[1050].exec("-a-", 3315));
-assertToStringEquals("y", res[1051].exec("xy"), 3316);
-assertToStringEquals("y", res[1052].exec("yz"), 3317);
-assertToStringEquals("y", res[1053].exec("xyz"), 3318);
-assertToStringEquals("a", res[1054].exec("a"), 3319);
-assertToStringEquals("-", res[1055].exec("-"), 3320);
-assertToStringEquals("*", res[1055].exec("*** Failers"), 3321);
-assertToStringEquals("-", res[1055].exec("-"), 3322);
-assertNull(res[1055].exec("a", 3323));
-assertToStringEquals("a b", res[1056].exec("a b"), 3324);
-assertToStringEquals("a-b", res[1057].exec("a-b"), 3325);
-assertNull(res[1057].exec("*** Failers", 3326));
-assertToStringEquals("a-b", res[1057].exec("a-b"), 3327);
-assertNull(res[1057].exec("a b", 3328));
-assertToStringEquals("1", res[1058].exec("1"), 3329);
-assertToStringEquals("-", res[1059].exec("-"), 3330);
-assertToStringEquals("*", res[1059].exec("*** Failers"), 3331);
-assertToStringEquals("-", res[1059].exec("-"), 3332);
-assertNull(res[1059].exec("1", 3333));
-assertToStringEquals("a", res[1060].exec("a"), 3334);
-assertToStringEquals("-", res[1061].exec("-"), 3335);
-assertToStringEquals("*", res[1061].exec("*** Failers"), 3336);
-assertToStringEquals("-", res[1061].exec("-"), 3337);
-assertNull(res[1061].exec("a", 3338));
-assertToStringEquals("a b", res[1062].exec("a b"), 3339);
-assertToStringEquals("a-b", res[1063].exec("a-b"), 3340);
-assertNull(res[1063].exec("*** Failers", 3341));
-assertToStringEquals("a-b", res[1063].exec("a-b"), 3342);
-assertNull(res[1063].exec("a b", 3343));
-assertToStringEquals("1", res[1064].exec("1"), 3344);
-assertToStringEquals("-", res[1065].exec("-"), 3345);
-assertToStringEquals("*", res[1065].exec("*** Failers"), 3346);
-assertToStringEquals("-", res[1065].exec("-"), 3347);
-assertNull(res[1065].exec("1", 3348));
-assertToStringEquals("ab", res[1066].exec("abc"), 3349);
-assertToStringEquals("ab", res[1066].exec("abcd"), 3350);
-assertToStringEquals("ef,", res[1067].exec("def"), 3351);
-assertToStringEquals("a(b", res[1069].exec("a(b"), 3352);
-assertNull(res[1069].exec("ab", 3353));
-assertNull(res[1069].exec("a((b", 3354));
-assertNull(res[1070].exec("a\x08", 3355));
-assertToStringEquals("a,a,a", res[1071].exec("abc"), 3356);
-assertToStringEquals("abc,a,c", res[1072].exec("abc"), 3357);
-assertToStringEquals("abc", res[1073].exec("aabbabc"), 3358);
-assertToStringEquals("abc", res[1074].exec("aabbabc"), 3359);
-assertToStringEquals("abc", res[1075].exec("abcabc"), 3360);
-assertToStringEquals("ab,b", res[1076].exec("ab"), 3361);
-assertToStringEquals("ab,b", res[1077].exec("ab"), 3362);
-assertToStringEquals("ab,b", res[1078].exec("ab"), 3363);
-assertToStringEquals("ab,b", res[1079].exec("ab"), 3364);
-assertToStringEquals("a,a", res[1080].exec("ab"), 3365);
-assertToStringEquals("a,a", res[1081].exec("ab"), 3366);
-assertToStringEquals("cde", res[1082].exec("cde"), 3367);
-assertNull(res[1083].exec("*** Failers", 3368));
-assertNull(res[1083].exec("b", 3369));
-assertToStringEquals("abbbcd,c", res[1085].exec("abbbcd"), 3370);
-assertToStringEquals("abcd,a", res[1086].exec("abcd"), 3371);
-assertToStringEquals("e", res[1087].exec("e"), 3372);
-assertToStringEquals("ef,e", res[1088].exec("ef"), 3373);
-assertToStringEquals("abcdefg", res[1089].exec("abcdefg"), 3374);
-assertToStringEquals("ab", res[1090].exec("xabyabbbz"), 3375);
-assertToStringEquals("a", res[1090].exec("xayabbbz"), 3376);
-assertToStringEquals("cde,cd", res[1091].exec("abcde"), 3377);
-assertToStringEquals("hij", res[1092].exec("hij"), 3378);
-assertToStringEquals("ef,", res[1094].exec("abcdef"), 3379);
-assertToStringEquals("bcd,b", res[1095].exec("abcd"), 3380);
-assertToStringEquals("abc,a", res[1096].exec("abc"), 3381);
-assertToStringEquals("abc,bc", res[1097].exec("abc"), 3382);
-assertToStringEquals("abcd,bc,d", res[1098].exec("abcd"), 3383);
-assertToStringEquals("abcd,bc,d", res[1099].exec("abcd"), 3384);
-assertToStringEquals("abcd,b,cd", res[1100].exec("abcd"), 3385);
-assertToStringEquals("adcdcde", res[1101].exec("adcdcde"), 3386);
-assertNull(res[1102].exec("*** Failers", 3387));
-assertNull(res[1102].exec("abcde", 3388));
-assertNull(res[1102].exec("adcdcde", 3389));
-assertToStringEquals("abc,ab", res[1103].exec("abc"), 3390);
-assertToStringEquals("abcd,abc,a,b,d", res[1104].exec("abcd"), 3391);
-assertToStringEquals("alpha", res[1105].exec("alpha"), 3392);
-assertToStringEquals("bh,", res[1106].exec("abh"), 3393);
-assertToStringEquals("effgz,effgz,", res[1107].exec("effgz"), 3394);
-assertToStringEquals("ij,ij,j", res[1107].exec("ij"), 3395);
-assertToStringEquals("effgz,effgz,", res[1107].exec("reffgz"), 3396);
-assertNull(res[1107].exec("*** Failers", 3397));
-assertNull(res[1107].exec("effg", 3398));
-assertNull(res[1107].exec("bcdd", 3399));
-assertToStringEquals("a,a,a,a,a,a,a,a,a,a,a", res[1108].exec("a"), 3400);
-assertToStringEquals("a,a,a,a,a,a,a,a,a,a", res[1109].exec("a"), 3401);
-assertNull(res[1110].exec("*** Failers", 3402));
-assertNull(res[1110].exec("aa", 3403));
-assertNull(res[1110].exec("uh-uh", 3404));
-assertToStringEquals("multiple words", res[1111].exec("multiple words, yeah"), 3405);
-assertToStringEquals("abcde,ab,de", res[1112].exec("abcde"), 3406);
-assertToStringEquals("(a, b),a,b", res[1113].exec("(a, b)"), 3407);
-assertToStringEquals("abcd", res[1115].exec("abcd"), 3408);
-assertToStringEquals("abcd,bc", res[1116].exec("abcd"), 3409);
-assertToStringEquals("ac", res[1117].exec("ac"), 3410);
-assertToStringEquals("ABC", res[1118].exec("ABC"), 3411);
-assertToStringEquals("ABC", res[1118].exec("XABCY"), 3412);
-assertToStringEquals("ABC", res[1118].exec("ABABC"), 3413);
-assertNull(res[1118].exec("*** Failers", 3414));
-assertNull(res[1118].exec("aaxabxbaxbbx", 3415));
-assertNull(res[1118].exec("XBC", 3416));
-assertNull(res[1118].exec("AXC", 3417));
-assertNull(res[1118].exec("ABX", 3418));
-assertToStringEquals("ABC", res[1119].exec("ABC"), 3419);
-assertToStringEquals("ABC", res[1120].exec("ABC"), 3420);
-assertToStringEquals("ABBC", res[1120].exec("ABBC"), 3421);
-assertToStringEquals("ABBBBC", res[1121].exec("ABBBBC"), 3422);
-assertToStringEquals("ABBBBC", res[1122].exec("ABBBBC"), 3423);
-assertToStringEquals("ABBC", res[1123].exec("ABBC"), 3424);
-assertNull(res[1124].exec("*** Failers", 3425));
-assertNull(res[1124].exec("ABC", 3426));
-assertNull(res[1124].exec("ABQ", 3427));
-assertToStringEquals("ABBBBC", res[1126].exec("ABBBBC"), 3428);
-assertToStringEquals("ABBBBC", res[1127].exec("ABBBBC"), 3429);
-assertToStringEquals("ABBBBC", res[1128].exec("ABBBBC"), 3430);
-assertToStringEquals("ABBBBC", res[1129].exec("ABBBBC"), 3431);
-assertNull(res[1130].exec("*** Failers", 3432));
-assertNull(res[1130].exec("ABQ", 3433));
-assertNull(res[1130].exec("ABBBBC", 3434));
-assertToStringEquals("ABBC", res[1131].exec("ABBC"), 3435);
-assertToStringEquals("ABC", res[1131].exec("ABC"), 3436);
-assertToStringEquals("ABC", res[1132].exec("ABC"), 3437);
-assertToStringEquals("ABC", res[1134].exec("ABC"), 3438);
-assertToStringEquals("ABC", res[1135].exec("ABC"), 3439);
-assertToStringEquals("ABC", res[1136].exec("ABC"), 3440);
-assertNull(res[1136].exec("*** Failers", 3441));
-assertNull(res[1136].exec("ABBBBC", 3442));
-assertNull(res[1136].exec("ABCC", 3443));
-assertToStringEquals("ABC", res[1137].exec("ABCC"), 3444);
-assertToStringEquals("ABC", res[1139].exec("AABC"), 3445);
-assertToStringEquals("", res[1140].exec("ABC"), 3446);
-assertToStringEquals("", res[1141].exec("ABC"), 3447);
-assertToStringEquals("ABC", res[1142].exec("ABC"), 3448);
-assertToStringEquals("AXC", res[1142].exec("AXC"), 3449);
-assertToStringEquals("AXYZC", res[1143].exec("AXYZC"), 3450);
-assertNull(res[1144].exec("*** Failers", 3451));
-assertToStringEquals("AABC", res[1144].exec("AABC"), 3452);
-assertNull(res[1144].exec("AXYZD", 3453));
-assertToStringEquals("ABD", res[1145].exec("ABD"), 3454);
-assertToStringEquals("ACE", res[1146].exec("ACE"), 3455);
-assertNull(res[1146].exec("*** Failers", 3456));
-assertNull(res[1146].exec("ABC", 3457));
-assertNull(res[1146].exec("ABD", 3458));
-assertToStringEquals("AC", res[1147].exec("AAC"), 3459);
-assertToStringEquals("A-", res[1148].exec("A-"), 3460);
-assertToStringEquals("A-", res[1149].exec("A-"), 3461);
-assertToStringEquals("A]", res[1150].exec("A]"), 3462);
-assertNull(res[1151].exec("A]B", 3463));
-assertToStringEquals("AED", res[1152].exec("AED"), 3464);
-assertToStringEquals("ADC", res[1153].exec("ADC"), 3465);
-assertNull(res[1153].exec("*** Failers", 3466));
-assertNull(res[1153].exec("ABD", 3467));
-assertNull(res[1153].exec("A-C", 3468));
-assertNull(res[1154].exec("ADC", 3469));
-assertToStringEquals("AB", res[1155].exec("ABC"), 3470);
-assertToStringEquals("AB", res[1155].exec("ABCD"), 3471);
-assertToStringEquals("EF,", res[1156].exec("DEF"), 3472);
-assertNull(res[1157].exec("*** Failers", 3473));
-assertNull(res[1157].exec("A]C", 3474));
-assertNull(res[1157].exec("B", 3475));
-assertToStringEquals("A(B", res[1158].exec("A(B"), 3476);
-assertNull(res[1158].exec("AB", 3477));
-assertNull(res[1158].exec("A((B", 3478));
-assertNull(res[1159].exec("AB", 3479));
-assertToStringEquals("A,A,A", res[1160].exec("ABC"), 3480);
-assertToStringEquals("ABC,A,C", res[1161].exec("ABC"), 3481);
-assertToStringEquals("ABC", res[1162].exec("AABBABC"), 3482);
-assertToStringEquals("ABC", res[1163].exec("AABBABC"), 3483);
-assertToStringEquals("ABC", res[1164].exec("ABCABC"), 3484);
-assertToStringEquals("ABC", res[1165].exec("ABCABC"), 3485);
-assertToStringEquals("ABC", res[1166].exec("ABCABC"), 3486);
-assertToStringEquals("AB,B", res[1167].exec("AB"), 3487);
-assertToStringEquals("AB,B", res[1168].exec("AB"), 3488);
-assertToStringEquals("AB,B", res[1169].exec("AB"), 3489);
-assertToStringEquals("AB,B", res[1170].exec("AB"), 3490);
-assertToStringEquals("A,A", res[1171].exec("AB"), 3491);
-assertToStringEquals("A,A", res[1172].exec("AB"), 3492);
-assertToStringEquals(",", res[1173].exec("AB"), 3493);
-assertToStringEquals("CDE", res[1174].exec("CDE"), 3494);
-assertToStringEquals("ABBBCD,C", res[1177].exec("ABBBCD"), 3495);
-assertToStringEquals("ABCD,A", res[1178].exec("ABCD"), 3496);
-assertToStringEquals("E", res[1179].exec("E"), 3497);
-assertToStringEquals("EF,E", res[1180].exec("EF"), 3498);
-assertToStringEquals("ABCDEFG", res[1181].exec("ABCDEFG"), 3499);
-assertToStringEquals("AB", res[1182].exec("XABYABBBZ"), 3500);
-assertToStringEquals("A", res[1182].exec("XAYABBBZ"), 3501);
-assertToStringEquals("CDE,CD", res[1183].exec("ABCDE"), 3502);
-assertToStringEquals("HIJ", res[1184].exec("HIJ"), 3503);
-assertNull(res[1185].exec("ABCDE", 3504));
-assertToStringEquals("EF,", res[1186].exec("ABCDEF"), 3505);
-assertToStringEquals("BCD,B", res[1187].exec("ABCD"), 3506);
-assertToStringEquals("ABC,A", res[1188].exec("ABC"), 3507);
-assertToStringEquals("ABC,BC", res[1189].exec("ABC"), 3508);
-assertToStringEquals("ABCD,BC,D", res[1190].exec("ABCD"), 3509);
-assertToStringEquals("ABCD,BC,D", res[1191].exec("ABCD"), 3510);
-assertToStringEquals("ABCD,B,CD", res[1192].exec("ABCD"), 3511);
-assertToStringEquals("ADCDCDE", res[1193].exec("ADCDCDE"), 3512);
-assertToStringEquals("ABC,AB", res[1195].exec("ABC"), 3513);
-assertToStringEquals("ABCD,ABC,A,B,D", res[1196].exec("ABCD"), 3514);
-assertToStringEquals("ALPHA", res[1197].exec("ALPHA"), 3515);
-assertToStringEquals("BH,", res[1198].exec("ABH"), 3516);
-assertToStringEquals("EFFGZ,EFFGZ,", res[1199].exec("EFFGZ"), 3517);
-assertToStringEquals("IJ,IJ,J", res[1199].exec("IJ"), 3518);
-assertToStringEquals("EFFGZ,EFFGZ,", res[1199].exec("REFFGZ"), 3519);
-assertNull(res[1199].exec("*** Failers", 3520));
-assertNull(res[1199].exec("ADCDCDE", 3521));
-assertNull(res[1199].exec("EFFG", 3522));
-assertNull(res[1199].exec("BCDD", 3523));
-assertToStringEquals("A,A,A,A,A,A,A,A,A,A,A", res[1200].exec("A"), 3524);
-assertToStringEquals("A,A,A,A,A,A,A,A,A,A", res[1201].exec("A"), 3525);
-assertToStringEquals("A,A", res[1202].exec("A"), 3526);
-assertToStringEquals("C,C", res[1203].exec("C"), 3527);
-assertNull(res[1204].exec("*** Failers", 3528));
-assertNull(res[1204].exec("AA", 3529));
-assertNull(res[1204].exec("UH-UH", 3530));
-assertToStringEquals("MULTIPLE WORDS", res[1205].exec("MULTIPLE WORDS, YEAH"), 3531);
-assertToStringEquals("ABCDE,AB,DE", res[1206].exec("ABCDE"), 3532);
-assertToStringEquals("(A, B),A,B", res[1207].exec("(A, B)"), 3533);
-assertToStringEquals("ABCD", res[1209].exec("ABCD"), 3534);
-assertToStringEquals("ABCD,BC", res[1210].exec("ABCD"), 3535);
-assertToStringEquals("AC", res[1211].exec("AC"), 3536);
-assertToStringEquals("ad", res[1212].exec("abad"), 3537);
-assertToStringEquals("ad", res[1213].exec("abad"), 3538);
-assertToStringEquals("ad", res[1214].exec("abad"), 3539);
-assertToStringEquals("ace,e", res[1215].exec("ace"), 3540);
-assertToStringEquals("ace,e", res[1216].exec("ace"), 3541);
-assertToStringEquals("ace,e", res[1217].exec("ace"), 3542);
-assertToStringEquals("acd,d", res[1217].exec("acdbcdbe"), 3543);
-assertToStringEquals("acdbcdbe,e", res[1218].exec("acdbcdbe"), 3544);
-assertToStringEquals("acdb,b", res[1219].exec("acdbcdbe"), 3545);
-assertToStringEquals("acdbcdb,b", res[1220].exec("acdbcdbe"), 3546);
-assertToStringEquals("acdbcd,d", res[1221].exec("acdbcdbe"), 3547);
-assertToStringEquals("foobar,bar,,bar", res[1222].exec("foobar"), 3548);
-assertToStringEquals("acdbcdbe,e", res[1223].exec("acdbcdbe"), 3549);
-assertToStringEquals("acdbcdbe,e", res[1224].exec("acdbcdbe"), 3550);
-assertToStringEquals("acdbcdbe,e", res[1225].exec("acdbcdbe"), 3551);
-assertToStringEquals("acdbcdb,b", res[1226].exec("acdbcdbe"), 3552);
-assertToStringEquals("acdbcdbe,e", res[1227].exec("acdbcdbe"), 3553);
-assertToStringEquals("acdbcdb,b", res[1228].exec("acdbcdbe"), 3554);
-assertToStringEquals("ace,c,e", res[1229].exec("ace"), 3555);
-assertToStringEquals("AB,A", res[1230].exec("AB"), 3556);
-assertToStringEquals(".,.,", res[1231].exec("."), 3557);
-assertToStringEquals("<&", res[1232].exec("<&OUT"), 3558);
-assertToStringEquals("foobar,,,,b,a,r", res[1233].exec("foobar"), 3559);
-assertToStringEquals(",,,,,,", res[1233].exec("ab"), 3560);
-assertToStringEquals(",,,,,,", res[1233].exec("*** Failers"), 3561);
-assertToStringEquals(",,,,,,", res[1233].exec("cb"), 3562);
-assertToStringEquals(",,,,,,", res[1233].exec("b"), 3563);
-assertToStringEquals(",,,,,,", res[1233].exec("ab"), 3564);
-assertToStringEquals(",,,,,,", res[1233].exec("b"), 3565);
-assertToStringEquals(",,,,,,", res[1233].exec("b"), 3566);
-assertToStringEquals("aba", res[1234].exec("aba"), 3567);
-assertToStringEquals("a", res[1235].exec("aba"), 3568);
-assertToStringEquals(",", res[1236].exec("abc"), 3569);
-assertToStringEquals("aax,a", res[1237].exec("aax"), 3570);
-assertToStringEquals("aax,a,a", res[1238].exec("aax"), 3571);
-assertToStringEquals("aax,a,a", res[1239].exec("aax"), 3572);
-assertToStringEquals("ab,", res[1240].exec("cab"), 3573);
-assertToStringEquals("ab,", res[1241].exec("cab"), 3574);
-assertToStringEquals("ab,", res[1241].exec("ab"), 3575);
-assertToStringEquals("ab,", res[1241].exec("ab"), 3576);
-assertNull(res[1241].exec("Ab", 3577));
-assertNull(res[1241].exec("Ab", 3578));
-assertNull(res[1241].exec("*** Failers", 3579));
-assertNull(res[1241].exec("cb", 3580));
-assertNull(res[1241].exec("aB", 3581));
-assertToStringEquals("ab,", res[1241].exec("ab"), 3582);
-assertToStringEquals("ab,", res[1241].exec("ab"), 3583);
-assertNull(res[1241].exec("Ab", 3584));
-assertNull(res[1241].exec("Ab", 3585));
-assertNull(res[1241].exec("*** Failers", 3586));
-assertNull(res[1241].exec("aB", 3587));
-assertNull(res[1241].exec("aB", 3588));
-assertToStringEquals("ab,", res[1241].exec("ab"), 3589);
-assertToStringEquals("ab,", res[1241].exec("ab"), 3590);
-assertNull(res[1241].exec("aB", 3591));
-assertNull(res[1241].exec("aB", 3592));
-assertNull(res[1241].exec("*** Failers", 3593));
-assertNull(res[1241].exec("aB", 3594));
-assertNull(res[1241].exec("Ab", 3595));
-assertNull(res[1241].exec("aB", 3596));
-assertNull(res[1241].exec("aB", 3597));
-assertNull(res[1241].exec("*** Failers", 3598));
-assertNull(res[1241].exec("Ab", 3599));
-assertNull(res[1241].exec("AB", 3600));
-assertToStringEquals("ab,", res[1241].exec("ab"), 3601);
-assertToStringEquals("ab,", res[1241].exec("ab"), 3602);
-assertNull(res[1241].exec("aB", 3603));
-assertNull(res[1241].exec("aB", 3604));
-assertNull(res[1241].exec("*** Failers", 3605));
-assertNull(res[1241].exec("AB", 3606));
-assertNull(res[1241].exec("Ab", 3607));
-assertNull(res[1241].exec("aB", 3608));
-assertNull(res[1241].exec("aB", 3609));
-assertNull(res[1241].exec("*** Failers", 3610));
-assertNull(res[1241].exec("Ab", 3611));
-assertNull(res[1241].exec("AB", 3612));
-assertNull(res[1241].exec("*** Failers", 3613));
-assertNull(res[1241].exec("AB", 3614));
-assertNull(res[1241].exec("a\nB", 3615));
-assertNull(res[1241].exec("a\nB", 3616));
-assertToStringEquals("cabbbb", res[1242].exec("cabbbb"), 3617);
-assertToStringEquals("caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", res[1243].exec("caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"), 3618);
-assertToStringEquals("foobar1234baz", res[1244].exec("foobar1234baz"), 3619);
-assertToStringEquals("x~~,~~", res[1245].exec("x~~"), 3620);
-assertToStringEquals("aaac", res[1246].exec("aaac"), 3621);
-assertToStringEquals("aaac", res[1247].exec("aaac"), 3622);
-assertNull(res[1247].exec("*** Failers", 3623));
-assertNull(res[1247].exec("B\nB", 3624));
-assertNull(res[1247].exec("dbcb", 3625));
-assertNull(res[1247].exec("dbaacb", 3626));
-assertNull(res[1247].exec("dbaacb", 3627));
-assertNull(res[1247].exec("cdaccb", 3628));
-assertNull(res[1248].exec("*** Failers", 3629));
-assertNull(res[1248].exec("dbcb", 3630));
-assertNull(res[1248].exec("a--", 3631));
-assertNull(res[1248].exec("a\nb\nc\n", 3632));
-assertNull(res[1248].exec("a\nb\nc\n", 3633));
-assertNull(res[1248].exec("a\nb\n", 3634));
-assertNull(res[1248].exec("a\nb\n", 3635));
-assertNull(res[1248].exec("a\nb\n", 3636));
-assertNull(res[1248].exec("a\nb\n", 3637));
-assertNull(res[1248].exec("a\nb\nc\n", 3638));
-assertNull(res[1248].exec("a\nb\nc\n", 3639));
-assertNull(res[1248].exec("a\nb\nc\n", 3640));
-assertNull(res[1248].exec("a\nb\nc\n", 3641));
-assertNull(res[1250].exec("*** Failers", 3642));
-assertNull(res[1250].exec("a\nb\nc\n", 3643));
-assertNull(res[1250].exec("a\nb\nc\n", 3644));
-assertNull(res[1250].exec("a\nb\nc\n", 3645));
-assertNull(res[1250].exec("a", 3646));
-assertNull(res[1250].exec("*** Failers", 3647));
-assertNull(res[1250].exec("a", 3648));
-assertNull(res[1250].exec("a", 3649));
-assertNull(res[1250].exec("a", 3650));
-assertToStringEquals("one:,one:", res[1251].exec("one:"), 3651);
-assertNull(res[1251].exec("a", 3652));
-assertToStringEquals("abcd,,abcd", res[1252].exec("abcd"), 3653);
-assertToStringEquals("xy:z:::abcd,xy:z:::,abcd", res[1252].exec("xy:z:::abcd"), 3654);
-assertToStringEquals("aexyc,c", res[1253].exec("aexycd"), 3655);
-assertToStringEquals("aab,aa", res[1254].exec("caab"), 3656);
-assertToStringEquals("abcd,,abcd", res[1255].exec("abcd"), 3657);
-assertToStringEquals("xy:z:::abcd,xy:z:::,abcd", res[1255].exec("xy:z:::abcd"), 3658);
-assertToStringEquals("Failers,,Failers", res[1255].exec("*** Failers"), 3659);
-assertNull(res[1255].exec("abcd:", 3660));
-assertNull(res[1255].exec("abcd:", 3661));
-assertToStringEquals("aexyc,c", res[1256].exec("aexycd"), 3662);
-assertNull(res[1257].exec("aaab", 3663));
-assertToStringEquals(":[,:[", res[1258].exec("a:[b]:"), 3664);
-assertToStringEquals("=[,=[", res[1259].exec("a=[b]="), 3665);
-assertToStringEquals(".[,.[", res[1260].exec("a.[b]."), 3666);
-assertNull(res[1260].exec("aaab", 3667));
-assertNull(res[1260].exec("aaab", 3668));
-assertNull(res[1260].exec("((abc(ade)ufh()()x", 3669));
-assertNull(res[1261].exec("*** Failers", 3670));
-assertNull(res[1261].exec("aaab", 3671));
-assertNull(res[1261].exec("a\nb\n", 3672));
-assertNull(res[1262].exec("a\nb\n", 3673));
-assertNull(res[1264].exec("a\nb", 3674));
-assertNull(res[1265].exec("a\nb", 3675));
-assertNull(res[1265].exec("*** Failers", 3676));
-assertNull(res[1265].exec("alphabetabcd", 3677));
-assertNull(res[1265].exec("endingwxyz", 3678));
-assertNull(res[1265].exec("*** Failers", 3679));
-assertNull(res[1265].exec("a rather long string that doesn't end with one of them", 3680));
-assertNull(res[1265].exec("word cat dog elephant mussel cow horse canary baboon snake shark otherword", 3681));
-assertNull(res[1265].exec("word cat dog elephant mussel cow horse canary baboon snake shark", 3682));
-assertNull(res[1265].exec("word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope", 3683));
-assertNull(res[1265].exec("999foo", 3684));
-assertNull(res[1265].exec("123999foo ", 3685));
-assertNull(res[1265].exec("*** Failers", 3686));
-assertNull(res[1265].exec("123abcfoo", 3687));
-assertNull(res[1265].exec("999foo", 3688));
-assertNull(res[1265].exec("123999foo ", 3689));
-assertNull(res[1265].exec("*** Failers", 3690));
-assertNull(res[1265].exec("123abcfoo", 3691));
-assertNull(res[1265].exec("123abcfoo", 3692));
-assertNull(res[1265].exec("123456foo ", 3693));
-assertNull(res[1265].exec("*** Failers", 3694));
-assertNull(res[1265].exec("123999foo  ", 3695));
-assertNull(res[1265].exec("123abcfoo   ", 3696));
-assertNull(res[1265].exec("123456foo ", 3697));
-assertNull(res[1265].exec("*** Failers", 3698));
-assertNull(res[1265].exec("123999foo  ", 3699));
-assertToStringEquals("ZA,A,", res[1266].exec("ZABCDEFG"), 3700);
-assertToStringEquals("ZA,A,", res[1267].exec("ZABCDEFG"), 3701);
-assertToStringEquals("ZA,A,,", res[1268].exec("ZABCDEFG"), 3702);
-assertToStringEquals("ZA,A,,", res[1268].exec("ZABCDEFG"), 3703);
-assertToStringEquals("ZA,A,,", res[1268].exec("ZABCDEFG"), 3704);
-assertToStringEquals("a", res[1269].exec("abbab"), 3705);
-assertToStringEquals("", res[1269].exec("abcde"), 3706);
-assertToStringEquals("", res[1269].exec("-things"), 3707);
-assertToStringEquals("", res[1269].exec("0digit"), 3708);
-assertToStringEquals("", res[1269].exec("*** Failers"), 3709);
-assertToStringEquals("", res[1269].exec("bcdef    "), 3710);
-assertToStringEquals("a", res[1270].exec("abcde"), 3711);
-assertToStringEquals("-", res[1270].exec("-things"), 3712);
-assertToStringEquals("0", res[1270].exec("0digit"), 3713);
-assertNull(res[1270].exec("*** Failers", 3714));
-assertNull(res[1270].exec("bcdef    ", 3715));
-assertNull(res[1271].exec("> \x09\n\x0c\x0d\x0b<", 3716));
-assertNull(res[1271].exec(" ", 3717));
-assertNull(res[1272].exec("> \x09\n\x0c\x0d\x0b<", 3718));
-assertNull(res[1272].exec(" ", 3719));
-assertToStringEquals(" \x09\n\x0c\x0d\x0b", res[1273].exec("> \x09\n\x0c\x0d\x0b<"), 3720);
-assertToStringEquals(" ", res[1273].exec(" "), 3721);
-assertToStringEquals(" \x09\n\x0c\x0d\x0b", res[1274].exec("> \x09\n\x0c\x0d\x0b<"), 3722);
-assertToStringEquals(" ", res[1274].exec(" "), 3723);
-assertNull(res[1275].exec("ab", 3724));
-assertNull(res[1278].exec("abcabcabc", 3725));
-assertNull(res[1278].exec("abc(*+|abc ", 3726));
-assertNull(res[1279].exec("abc abcabc", 3727));
-assertNull(res[1279].exec("*** Failers", 3728));
-assertNull(res[1279].exec("abcabcabc  ", 3729));
-assertNull(res[1280].exec("abc#not comment\n    literal     ", 3730));
-assertNull(res[1281].exec("abc#not comment\n    literal     ", 3731));
-assertNull(res[1282].exec("abc#not comment\n    literal     ", 3732));
-assertNull(res[1283].exec("abc#not comment\n    literal     ", 3733));
-assertNull(res[1284].exec("abc\\$xyz", 3734));
-assertNull(res[1285].exec("abc$xyz", 3735));
-assertNull(res[1286].exec("abc", 3736));
-assertNull(res[1286].exec("*** Failers", 3737));
-assertNull(res[1286].exec("xyzabc  ", 3738));
-assertNull(res[1287].exec("abc1abc2xyzabc3", 3739));
-assertToStringEquals("abc1", res[1288].exec("abc1abc2xyzabc3 "), 3740);
-assertNull(res[1288].exec("XabcdY", 3741));
-assertNull(res[1288].exec("*** Failers ", 3742));
-assertNull(res[1288].exec("Xa b c d Y ", 3743));
-assertToStringEquals("abcY", res[1288].exec("XabcY"), 3744);
-assertNull(res[1288].exec("AxyzB ", 3745));
-assertNull(res[1288].exec("XabCY", 3746));
-assertNull(res[1288].exec("*** Failers", 3747));
-assertToStringEquals("abcY", res[1288].exec("XabcY  "), 3748);
-assertNull(res[1288].exec("abCE", 3749));
-assertNull(res[1288].exec("DE", 3750));
-assertNull(res[1288].exec("*** Failers", 3751));
-assertToStringEquals("abcE", res[1288].exec("abcE"), 3752);
-assertNull(res[1288].exec("abCe  ", 3753));
-assertNull(res[1288].exec("dE", 3754));
-assertNull(res[1288].exec("De    ", 3755));
-assertNull(res[1289].exec("z", 3756));
-assertNull(res[1289].exec("a", 3757));
-assertNull(res[1289].exec("-", 3758));
-assertNull(res[1289].exec("d", 3759));
-assertNull(res[1289].exec("] ", 3760));
-assertNull(res[1289].exec("*** Failers", 3761));
-assertNull(res[1289].exec("b     ", 3762));
-assertToStringEquals("z", res[1290].exec("z"), 3763);
-assertToStringEquals("C", res[1290].exec("C "), 3764);
-assertToStringEquals("M", res[1291].exec("M "), 3765);
-assertNull(res[1292].exec("", 3766));
-assertNull(res[1292].exec("REGular", 3767));
-assertNull(res[1292].exec("regulaer", 3768));
-assertNull(res[1292].exec("Regex  ", 3769));
-assertNull(res[1292].exec("regul\ufffdr ", 3770));
-assertNull(res[1292].exec("\ufffd\ufffd\ufffd\ufffd\ufffd", 3771));
-assertNull(res[1292].exec("\ufffd\ufffd\ufffd\ufffd\ufffd", 3772));
-assertNull(res[1292].exec("\ufffd\ufffd\ufffd\ufffd\ufffd", 3773));
-assertNull(res[1292].exec("\ufffd\ufffd\ufffd\ufffd\ufffd", 3774));
-assertNull(res[1292].exec("\x84XAZXB", 3775));
-assertNull(res[1292].exec("123a", 3776));
-assertNull(res[1292].exec("ac", 3777));
-assertToStringEquals("b,", res[1292].exec("bbbbc"), 3778);
-assertToStringEquals("ab,a", res[1292].exec("abc"), 3779);
-assertNull(res[1292].exec("*** Failers", 3780));
-assertToStringEquals("b,", res[1292].exec("bca"), 3781);
-assertNull(res[1292].exec("", 3782));
-assertToStringEquals("ab,a", res[1292].exec("abc"), 3783);
-assertNull(res[1292].exec("*** Failers", 3784));
-assertToStringEquals("b,", res[1292].exec("bca"), 3785);
-assertToStringEquals("ab,a", res[1292].exec("abc"), 3786);
-assertNull(res[1292].exec("*** Failers", 3787));
-assertNull(res[1292].exec("def  ", 3788));
-assertNull(res[1292].exec("", 3789));
-assertToStringEquals("ab,a", res[1292].exec("abc"), 3790);
-assertNull(res[1292].exec("*** Failers", 3791));
-assertNull(res[1292].exec("def  ", 3792));
-assertNull(res[1292].exec("", 3793));
-assertToStringEquals("line\nbreak", res[1293].exec("this is a line\nbreak"), 3794);
-assertToStringEquals("line\nbreak", res[1293].exec("line one\nthis is a line\nbreak in the second line "), 3795);
-assertToStringEquals("line\nbreak", res[1294].exec("this is a line\nbreak"), 3796);
-assertNull(res[1294].exec("** Failers ", 3797));
-assertToStringEquals("line\nbreak", res[1294].exec("line one\nthis is a line\nbreak in the second line "), 3798);
-assertToStringEquals("line\nbreak", res[1295].exec("this is a line\nbreak"), 3799);
-assertNull(res[1295].exec("** Failers ", 3800));
-assertToStringEquals("line\nbreak", res[1295].exec("line one\nthis is a line\nbreak in the second line "), 3801);
-assertNull(res[1296].exec("123P", 3802));
-assertNull(res[1296].exec("a4PR", 3803));
-assertNull(res[1297].exec("123P", 3804));
-assertNull(res[1297].exec("4PR", 3805));
-assertToStringEquals("", res[1298].exec("a\nb\nc\n"), 3806);
-assertToStringEquals("", res[1298].exec(" "), 3807);
-assertToStringEquals("", res[1298].exec("A\nC\nC\n "), 3808);
-assertToStringEquals("", res[1298].exec("AB"), 3809);
-assertToStringEquals("", res[1298].exec("aB  "), 3810);
-assertToStringEquals("", res[1298].exec("AB"), 3811);
-assertToStringEquals("", res[1298].exec("aB  "), 3812);
-assertToStringEquals("", res[1298].exec("AB"), 3813);
-assertToStringEquals("", res[1298].exec("aB  "), 3814);
-assertToStringEquals("", res[1298].exec("AB"), 3815);
-assertToStringEquals("", res[1298].exec("aB  "), 3816);
-assertToStringEquals("Content-Type:xxxxxyyy ", res[1299].exec("Content-Type:xxxxxyyy "), 3817);
-assertToStringEquals("Content-Type:xxxxxyyyz", res[1300].exec("Content-Type:xxxxxyyyz"), 3818);
-assertToStringEquals("Content-Type:xxxyyy ", res[1301].exec("Content-Type:xxxyyy "), 3819);
-assertToStringEquals("Content-Type:xxxyyyz", res[1302].exec("Content-Type:xxxyyyz"), 3820);
-assertToStringEquals("abc", res[1303].exec("xyz\nabc"), 3821);
-assertToStringEquals("abc", res[1303].exec("xyz\nabc<lf>"), 3822);
-assertToStringEquals("abc", res[1303].exec("xyz\x0d\nabc<lf>"), 3823);
-assertToStringEquals("abc", res[1303].exec("xyz\x0dabc<cr>"), 3824);
-assertToStringEquals("abc", res[1303].exec("xyz\x0d\nabc<crlf>"), 3825);
-assertNull(res[1303].exec("** Failers ", 3826));
-assertToStringEquals("abc", res[1303].exec("xyz\nabc<cr>"), 3827);
-assertToStringEquals("abc", res[1303].exec("xyz\x0d\nabc<cr>"), 3828);
-assertToStringEquals("abc", res[1303].exec("xyz\nabc<crlf>"), 3829);
-assertToStringEquals("abc", res[1303].exec("xyz\x0dabc<crlf>"), 3830);
-assertToStringEquals("abc", res[1303].exec("xyz\x0dabc<lf>"), 3831);
-assertToStringEquals("abc", res[1304].exec("xyzabc"), 3832);
-assertToStringEquals("abc", res[1304].exec("xyzabc\n "), 3833);
-assertToStringEquals("abc", res[1304].exec("xyzabc\npqr "), 3834);
-assertToStringEquals("abc", res[1304].exec("xyzabc\x0d<cr> "), 3835);
-assertToStringEquals("abc", res[1304].exec("xyzabc\x0dpqr<cr> "), 3836);
-assertToStringEquals("abc", res[1304].exec("xyzabc\x0d\n<crlf> "), 3837);
-assertToStringEquals("abc", res[1304].exec("xyzabc\x0d\npqr<crlf> "), 3838);
-assertNull(res[1304].exec("** Failers", 3839));
-assertToStringEquals("abc", res[1304].exec("xyzabc\x0d "), 3840);
-assertToStringEquals("abc", res[1304].exec("xyzabc\x0dpqr "), 3841);
-assertToStringEquals("abc", res[1304].exec("xyzabc\x0d\n "), 3842);
-assertToStringEquals("abc", res[1304].exec("xyzabc\x0d\npqr "), 3843);
-assertToStringEquals("abc", res[1305].exec("xyz\x0dabcdef"), 3844);
-assertToStringEquals("abc", res[1305].exec("xyz\nabcdef<lf>"), 3845);
-assertNull(res[1305].exec("** Failers  ", 3846));
-assertToStringEquals("abc", res[1305].exec("xyz\nabcdef"), 3847);
-assertNull(res[1305].exec("   ", 3848));
-assertToStringEquals("abc", res[1306].exec("xyz\nabcdef"), 3849);
-assertToStringEquals("abc", res[1306].exec("xyz\x0dabcdef<cr>"), 3850);
-assertNull(res[1306].exec("** Failers  ", 3851));
-assertToStringEquals("abc", res[1306].exec("xyz\x0dabcdef"), 3852);
-assertNull(res[1306].exec("   ", 3853));
-assertToStringEquals("abc", res[1307].exec("xyz\x0d\nabcdef"), 3854);
-assertToStringEquals("abc", res[1307].exec("xyz\x0dabcdef<cr>"), 3855);
-assertNull(res[1307].exec("** Failers  ", 3856));
-assertToStringEquals("abc", res[1307].exec("xyz\x0dabcdef"), 3857);
-assertToStringEquals("abc", res[1308].exec("abc\ndef"), 3858);
-assertToStringEquals("abc", res[1308].exec("abc\x0ddef"), 3859);
-assertToStringEquals("abc", res[1308].exec("abc\x0d\ndef"), 3860);
-assertToStringEquals("<cr>abc", res[1308].exec("<cr>abc\ndef"), 3861);
-assertToStringEquals("<cr>abc", res[1308].exec("<cr>abc\x0ddef"), 3862);
-assertToStringEquals("<cr>abc", res[1308].exec("<cr>abc\x0d\ndef"), 3863);
-assertToStringEquals("<crlf>abc", res[1308].exec("<crlf>abc\ndef"), 3864);
-assertToStringEquals("<crlf>abc", res[1308].exec("<crlf>abc\x0ddef"), 3865);
-assertToStringEquals("<crlf>abc", res[1308].exec("<crlf>abc\x0d\ndef"), 3866);
-assertNull(res[1309].exec("abc\ndef", 3867));
-assertNull(res[1309].exec("abc\x0ddef", 3868));
-assertNull(res[1309].exec("abc\x0d\ndef", 3869));
-assertToStringEquals("abc=xyz\\,", res[1310].exec("abc=xyz\\\npqr"), 3870);
-assertToStringEquals("aaaa,a,", res[1311].exec("aaaa"), 3871);
-assertToStringEquals("aaaa", res[1312].exec("aaaa"), 3872);
-assertToStringEquals("aaaa,a,", res[1313].exec("aaaa"), 3873);
-assertToStringEquals("aaaa", res[1314].exec("aaaa"), 3874);
-assertNull(res[1317].exec("a\x0db", 3875));
-assertNull(res[1317].exec("a\nb<cr> ", 3876));
-assertNull(res[1317].exec("** Failers", 3877));
-assertNull(res[1317].exec("a\nb", 3878));
-assertNull(res[1317].exec("a\nb<any>", 3879));
-assertNull(res[1317].exec("a\x0db<cr>   ", 3880));
-assertNull(res[1317].exec("a\x0db<any>   ", 3881));
-assertToStringEquals("abc1", res[1318].exec("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 \x85abc7 JUNK"), 3882);
-assertToStringEquals("abc1", res[1319].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc9"), 3883);
-assertNull(res[1320].exec("a\nb", 3884));
-assertNull(res[1320].exec("a\x0db", 3885));
-assertNull(res[1320].exec("a\x0d\nb", 3886));
-assertNull(res[1320].exec("a\x0bb", 3887));
-assertNull(res[1320].exec("a\x0cb", 3888));
-assertNull(res[1320].exec("a\x85b   ", 3889));
-assertNull(res[1320].exec("** Failers", 3890));
-assertNull(res[1320].exec("a\n\x0db    ", 3891));
-assertToStringEquals("ab", res[1321].exec("ab"), 3892);
-assertNull(res[1321].exec("a\nb", 3893));
-assertNull(res[1321].exec("a\x0db", 3894));
-assertNull(res[1321].exec("a\x0d\nb", 3895));
-assertNull(res[1321].exec("a\x0bb", 3896));
-assertNull(res[1321].exec("a\x0cb", 3897));
-assertNull(res[1321].exec("a\x85b   ", 3898));
-assertNull(res[1321].exec("a\n\x0db    ", 3899));
-assertNull(res[1321].exec("a\n\x0d\x85\x0cb ", 3900));
-assertNull(res[1322].exec("a\nb", 3901));
-assertNull(res[1322].exec("a\x0db", 3902));
-assertNull(res[1322].exec("a\x0d\nb", 3903));
-assertNull(res[1322].exec("a\x0bb", 3904));
-assertNull(res[1322].exec("a\x0cb", 3905));
-assertNull(res[1322].exec("a\x85b   ", 3906));
-assertNull(res[1322].exec("a\n\x0db    ", 3907));
-assertNull(res[1322].exec("a\n\x0d\x85\x0cb ", 3908));
-assertNull(res[1322].exec("** Failers", 3909));
-assertNull(res[1322].exec("ab  ", 3910));
-assertNull(res[1323].exec("a\nb", 3911));
-assertNull(res[1323].exec("a\n\x0db", 3912));
-assertNull(res[1323].exec("a\n\x0d\x85b", 3913));
-assertNull(res[1323].exec("a\x0d\n\x0d\nb ", 3914));
-assertNull(res[1323].exec("a\x0d\n\x0d\n\x0d\nb ", 3915));
-assertNull(res[1323].exec("a\n\x0d\n\x0db", 3916));
-assertNull(res[1323].exec("a\n\n\x0d\nb ", 3917));
-assertNull(res[1323].exec("** Failers", 3918));
-assertNull(res[1323].exec("a\n\n\n\x0db", 3919));
-assertNull(res[1323].exec("a\x0d", 3920));
-assertToStringEquals("aRb", res[1324].exec("aRb"), 3921);
-assertNull(res[1324].exec("** Failers", 3922));
-assertNull(res[1324].exec("a\nb  ", 3923));
-assertToStringEquals("afoo", res[1325].exec("afoo"), 3924);
-assertNull(res[1325].exec("** Failers ", 3925));
-assertNull(res[1325].exec("\x0d\nfoo ", 3926));
-assertNull(res[1325].exec("\nfoo ", 3927));
-assertToStringEquals("afoo", res[1326].exec("afoo"), 3928);
-assertNull(res[1326].exec("\nfoo ", 3929));
-assertNull(res[1326].exec("** Failers ", 3930));
-assertNull(res[1326].exec("\x0d\nfoo ", 3931));
-assertToStringEquals("afoo", res[1327].exec("afoo"), 3932);
-assertNull(res[1327].exec("** Failers ", 3933));
-assertNull(res[1327].exec("\nfoo ", 3934));
-assertNull(res[1327].exec("\x0d\nfoo ", 3935));
-assertToStringEquals("afoo", res[1328].exec("afoo"), 3936);
-assertNull(res[1328].exec("\x0d\nfoo ", 3937));
-assertNull(res[1328].exec("\nfoo ", 3938));
-assertToStringEquals("", res[1329].exec("abc\x0d\x0dxyz"), 3939);
-assertToStringEquals("", res[1329].exec("abc\n\x0dxyz  "), 3940);
-assertNull(res[1329].exec("** Failers ", 3941));
-assertToStringEquals("", res[1329].exec("abc\x0d\nxyz"), 3942);
-assertToStringEquals("X", res[1330].exec("XABC"), 3943);
-assertNull(res[1330].exec("** Failers ", 3944));
-assertToStringEquals("X", res[1330].exec("XABCB"), 3945);
-assertNull(res[1330].exec("abc\x0d\n\x0d\n", 3946));
-assertNull(res[1330].exec("abc\x0d\n\x0d\n", 3947));
-assertNull(res[1330].exec("abc\x0d\n\x0d\n", 3948));
+assertEquals("", res[986].exec("abc"), 2982);
+assertEquals("acb", res[988].exec("acb"), 2983);
+assertEquals("a\nb", res[988].exec("a\nb"), 2984);
+assertEquals("acb", res[989].exec("acb"), 2985);
+assertEquals(null, res[989].exec("*** Failers ", 2986));
+assertEquals(null, res[989].exec("a\nb   ", 2987));
+assertEquals("acb", res[990].exec("acb"), 2988);
+assertEquals("a\nb", res[990].exec("a\nb  "), 2989);
+assertEquals("acb", res[991].exec("acb"), 2990);
+assertEquals(null, res[991].exec("a\nb  ", 2991));
+assertEquals("bac,a", res[992].exec("bac"), 2992);
+assertEquals("bbac,a", res[992].exec("bbac"), 2993);
+assertEquals("bbbac,a", res[992].exec("bbbac"), 2994);
+assertEquals("bbbbac,a", res[992].exec("bbbbac"), 2995);
+assertEquals("bbbbbac,a", res[992].exec("bbbbbac "), 2996);
+assertEquals("bac,a", res[993].exec("bac"), 2997);
+assertEquals("bbac,a", res[993].exec("bbac"), 2998);
+assertEquals("bbbac,a", res[993].exec("bbbac"), 2999);
+assertEquals("bbbbac,a", res[993].exec("bbbbac"), 3000);
+assertEquals("bbbbbac,a", res[993].exec("bbbbbac "), 3001);
+assertEquals("x", res[994].exec("x\nb\n"), 3002);
+assertEquals("x", res[994].exec("a\x08x\n  "), 3003);
+assertEquals(null, res[995].exec("\x00{ab} ", 3004));
+assertEquals("CD,", res[996].exec("CD "), 3005);
+assertEquals("CD,", res[997].exec("CD "), 3006);
+assertEquals(null, res[997].exec("foo", 3007));
+assertEquals(null, res[997].exec("catfood", 3008));
+assertEquals(null, res[997].exec("arfootle", 3009));
+assertEquals(null, res[997].exec("rfoosh", 3010));
+assertEquals(null, res[997].exec("*** Failers", 3011));
+assertEquals(null, res[997].exec("barfoo", 3012));
+assertEquals(null, res[997].exec("towbarfoo", 3013));
+assertEquals(null, res[997].exec("catfood", 3014));
+assertEquals(null, res[997].exec("*** Failers", 3015));
+assertEquals(null, res[997].exec("foo", 3016));
+assertEquals(null, res[997].exec("barfoo", 3017));
+assertEquals(null, res[997].exec("towbarfoo", 3018));
+assertEquals(null, res[997].exec("fooabar", 3019));
+assertEquals(null, res[997].exec("*** Failers", 3020));
+assertEquals(null, res[997].exec("bar", 3021));
+assertEquals(null, res[997].exec("foobbar", 3022));
+assertEquals(null, res[997].exec("  ", 3023));
+assertEquals(null, res[998].exec("abc", 3024));
+assertEquals(null, res[998].exec("*** Failers", 3025));
+assertEquals(null, res[998].exec("abc\n   ", 3026));
+assertEquals(null, res[998].exec("qqq\nabc", 3027));
+assertEquals(null, res[998].exec("abc\nzzz", 3028));
+assertEquals(null, res[998].exec("qqq\nabc\nzzz", 3029));
+assertEquals(null, res[998].exec("/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/", 3030));
+assertEquals(null, res[998].exec("/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo", 3031));
+assertEquals(null, res[998].exec("1.230003938", 3032));
+assertEquals(null, res[998].exec("1.875000282", 3033));
+assertEquals(null, res[998].exec("*** Failers ", 3034));
+assertEquals(null, res[998].exec("1.235 ", 3035));
+assertEquals(null, res[998].exec("now is the time for all good men to come to the aid of the party", 3036));
+assertEquals(null, res[998].exec("*** Failers", 3037));
+assertEquals(null, res[998].exec("this is not a line with only words and spaces!", 3038));
+assertEquals("12345a,12345,a", res[999].exec("12345a"), 3039);
+assertEquals("12345,1234,5", res[999].exec("12345+ "), 3040);
+assertEquals("12345a,12345,a", res[999].exec("12345a"), 3041);
+assertEquals(null, res[999].exec("*** Failers", 3042));
+assertEquals("12345,1234,5", res[999].exec("12345+ "), 3043);
+assertEquals(null, res[999].exec("aaab", 3044));
+assertEquals(null, res[999].exec("aaab", 3045));
+assertEquals(null, res[999].exec("aaab", 3046));
+assertEquals(null, res[999].exec("aaabbbccc", 3047));
+assertEquals(null, res[999].exec("aaabbbbccccd", 3048));
+assertEquals("aaabbbbcccc,ccc", res[1000].exec("aaabbbbccccd"), 3049);
+assertEquals("abc,b", res[1000].exec("((abc(ade)ufh()()x"), 3050);
+assertEquals(null, res[1000].exec("", 3051));
+assertEquals("abc,b", res[1000].exec("(abc)"), 3052);
+assertEquals("abc,b", res[1000].exec("(abc(def)xyz)"), 3053);
+assertEquals(null, res[1000].exec("*** Failers", 3054));
+assertEquals(null, res[1000].exec("ab", 3055));
+assertEquals(null, res[1000].exec("Ab", 3056));
+assertEquals(null, res[1000].exec("*** Failers ", 3057));
+assertEquals(null, res[1000].exec("aB", 3058));
+assertEquals(null, res[1000].exec("AB", 3059));
+assertEquals(null, res[1000].exec("    ", 3060));
+assertEquals("bc,b", res[1000].exec("a bcd e"), 3061);
+assertEquals(null, res[1000].exec("*** Failers", 3062));
+assertEquals("c,", res[1000].exec("a b cd e"), 3063);
+assertEquals("abc,b", res[1000].exec("abcd e   "), 3064);
+assertEquals("bc,b", res[1000].exec("a bcde "), 3065);
+assertEquals("bc,b", res[1000].exec("a bcde f"), 3066);
+assertEquals(null, res[1000].exec("*** Failers", 3067));
+assertEquals("abc,b", res[1000].exec("abcdef  "), 3068);
+assertEquals("abc,b", res[1000].exec("abc"), 3069);
+assertEquals("c,", res[1000].exec("aBc"), 3070);
+assertEquals(null, res[1000].exec("*** Failers", 3071));
+assertEquals(null, res[1000].exec("abC", 3072));
+assertEquals(null, res[1000].exec("aBC  ", 3073));
+assertEquals("bc,b", res[1000].exec("Abc"), 3074);
+assertEquals("c,", res[1000].exec("ABc"), 3075);
+assertEquals(null, res[1000].exec("ABC", 3076));
+assertEquals(null, res[1000].exec("AbC", 3077));
+assertEquals(null, res[1000].exec("", 3078));
+assertEquals("abc,b", res[1000].exec("abc"), 3079);
+assertEquals("c,", res[1000].exec("aBc"), 3080);
+assertEquals(null, res[1000].exec("*** Failers ", 3081));
+assertEquals(null, res[1000].exec("ABC", 3082));
+assertEquals(null, res[1000].exec("abC", 3083));
+assertEquals(null, res[1000].exec("aBC", 3084));
+assertEquals(null, res[1000].exec("", 3085));
+assertEquals("c,", res[1000].exec("aBc"), 3086);
+assertEquals("c,", res[1000].exec("aBBc"), 3087);
+assertEquals(null, res[1000].exec("*** Failers ", 3088));
+assertEquals(null, res[1000].exec("aBC", 3089));
+assertEquals(null, res[1000].exec("aBBC", 3090));
+assertEquals(null, res[1000].exec("", 3091));
+assertEquals("abc,b", res[1000].exec("abcd"), 3092);
+assertEquals(null, res[1000].exec("abCd", 3093));
+assertEquals(null, res[1000].exec("*** Failers", 3094));
+assertEquals(null, res[1000].exec("aBCd", 3095));
+assertEquals("abc,b", res[1000].exec("abcD     "), 3096);
+assertEquals(null, res[1000].exec("", 3097));
+assertEquals(null, res[1000].exec("more than million", 3098));
+assertEquals(null, res[1000].exec("more than MILLION", 3099));
+assertEquals(null, res[1000].exec("more \n than Million ", 3100));
+assertEquals(null, res[1000].exec("*** Failers", 3101));
+assertEquals(null, res[1000].exec("MORE THAN MILLION    ", 3102));
+assertEquals(null, res[1000].exec("more \n than \n million ", 3103));
+assertEquals(null, res[1000].exec("more than million", 3104));
+assertEquals(null, res[1000].exec("more than MILLION", 3105));
+assertEquals(null, res[1000].exec("more \n than Million ", 3106));
+assertEquals(null, res[1000].exec("*** Failers", 3107));
+assertEquals(null, res[1000].exec("MORE THAN MILLION    ", 3108));
+assertEquals(null, res[1000].exec("more \n than \n million ", 3109));
+assertEquals(null, res[1000].exec("", 3110));
+assertEquals("abc,b", res[1000].exec("abc"), 3111);
+assertEquals("bc,b", res[1000].exec("aBbc"), 3112);
+assertEquals("c,", res[1000].exec("aBBc "), 3113);
+assertEquals(null, res[1000].exec("*** Failers", 3114));
+assertEquals("bc,b", res[1000].exec("Abc"), 3115);
+assertEquals(null, res[1000].exec("abAb    ", 3116));
+assertEquals(null, res[1000].exec("abbC ", 3117));
+assertEquals(null, res[1000].exec("", 3118));
+assertEquals("abc,b", res[1000].exec("abc"), 3119);
+assertEquals("c,", res[1000].exec("aBc"), 3120);
+assertEquals(null, res[1000].exec("*** Failers", 3121));
+assertEquals(null, res[1000].exec("Ab ", 3122));
+assertEquals(null, res[1000].exec("abC", 3123));
+assertEquals(null, res[1000].exec("aBC     ", 3124));
+assertEquals(null, res[1000].exec("", 3125));
+assertEquals("c,", res[1000].exec("abxxc"), 3126);
+assertEquals("c,", res[1000].exec("aBxxc"), 3127);
+assertEquals(null, res[1000].exec("*** Failers", 3128));
+assertEquals("c,", res[1000].exec("Abxxc"), 3129);
+assertEquals("c,", res[1000].exec("ABxxc"), 3130);
+assertEquals(null, res[1000].exec("abxxC      ", 3131));
+assertEquals("abc,b", res[1000].exec("abc:"), 3132);
+assertEquals(null, res[1000].exec("12", 3133));
+assertEquals(null, res[1000].exec("*** Failers", 3134));
+assertEquals(null, res[1000].exec("123", 3135));
+assertEquals(null, res[1000].exec("xyz    ", 3136));
+assertEquals("abc,b", res[1000].exec("abc:"), 3137);
+assertEquals(null, res[1000].exec("12", 3138));
+assertEquals(null, res[1000].exec("*** Failers", 3139));
+assertEquals(null, res[1000].exec("123", 3140));
+assertEquals(null, res[1000].exec("xyz    ", 3141));
+assertEquals(null, res[1000].exec("", 3142));
+assertEquals(null, res[1000].exec("foobar", 3143));
+assertEquals("c,", res[1000].exec("cat"), 3144);
+assertEquals("c,", res[1000].exec("fcat"), 3145);
+assertEquals("c,", res[1000].exec("focat   "), 3146);
+assertEquals(null, res[1000].exec("*** Failers", 3147));
+assertEquals("c,", res[1000].exec("foocat  "), 3148);
+assertEquals(null, res[1000].exec("foobar", 3149));
+assertEquals("c,", res[1000].exec("cat"), 3150);
+assertEquals("c,", res[1000].exec("fcat"), 3151);
+assertEquals("c,", res[1000].exec("focat   "), 3152);
+assertEquals(null, res[1000].exec("*** Failers", 3153));
+assertEquals("c,", res[1000].exec("foocat  "), 3154);
+assertEquals(null, res[1000].exec("a", 3155));
+assertEquals(null, res[1000].exec("aa", 3156));
+assertEquals(null, res[1000].exec("aaaa", 3157));
+assertEquals(null, res[1000].exec("", 3158));
+assertEquals("abc,abc", res[1001].exec("abc"), 3159);
+assertEquals("abcabc,abc", res[1001].exec("abcabc"), 3160);
+assertEquals("abcabcabc,abc", res[1001].exec("abcabcabc"), 3161);
+assertEquals(",", res[1001].exec("xyz      "), 3162);
+assertEquals("a,a", res[1002].exec("a"), 3163);
+assertEquals("aaaaa,aaaaa", res[1002].exec("aaaaa "), 3164);
+assertEquals("a,a", res[1003].exec("a"), 3165);
+assertEquals("b,b", res[1003].exec("b"), 3166);
+assertEquals("ababab,ababab", res[1003].exec("ababab"), 3167);
+assertEquals("aaaab,aaaab", res[1003].exec("aaaabcde"), 3168);
+assertEquals("bbbb,bbbb", res[1003].exec("bbbb    "), 3169);
+assertEquals("b,b", res[1004].exec("b"), 3170);
+assertEquals("bbbb,bbbb", res[1004].exec("bbbb"), 3171);
+assertEquals(",", res[1004].exec("aaa   "), 3172);
+assertEquals("cccc,cccc", res[1005].exec("cccc"), 3173);
+assertEquals(",", res[1005].exec("abab  "), 3174);
+assertEquals("a,a", res[1006].exec("a"), 3175);
+assertEquals("aaaa,a", res[1006].exec("aaaa "), 3176);
+assertEquals("a,a", res[1007].exec("a"), 3177);
+assertEquals("b,b", res[1007].exec("b"), 3178);
+assertEquals("abab,b", res[1007].exec("abab"), 3179);
+assertEquals("baba,a", res[1007].exec("baba   "), 3180);
+assertEquals("b,b", res[1008].exec("b"), 3181);
+assertEquals("bbbb,b", res[1008].exec("bbbb"), 3182);
+assertEquals(",", res[1008].exec("aaa   "), 3183);
+assertEquals("c,c", res[1009].exec("c"), 3184);
+assertEquals("cccc,c", res[1009].exec("cccc"), 3185);
+assertEquals(",", res[1009].exec("baba   "), 3186);
+assertEquals(",", res[1009].exec("a"), 3187);
+assertEquals(",", res[1009].exec("aaabcde "), 3188);
+assertEquals(",", res[1009].exec("aaaaa"), 3189);
+assertEquals(",", res[1009].exec("aabbaa "), 3190);
+assertEquals(",", res[1009].exec("aaaaa"), 3191);
+assertEquals(",", res[1009].exec("aabbaa "), 3192);
+assertEquals("12-sep-98,8", res[1009].exec("12-sep-98"), 3193);
+assertEquals("12-09-98,8", res[1009].exec("12-09-98"), 3194);
+assertEquals("*** F,F", res[1009].exec("*** Failers"), 3195);
+assertEquals("sep-12-98,8", res[1009].exec("sep-12-98"), 3196);
+assertEquals("    , ", res[1009].exec("    "), 3197);
+assertEquals("s,s", res[1009].exec("saturday"), 3198);
+assertEquals("sund,d", res[1009].exec("sunday"), 3199);
+assertEquals("S,S", res[1009].exec("Saturday"), 3200);
+assertEquals("Sund,d", res[1009].exec("Sunday"), 3201);
+assertEquals("SATURDAY,Y", res[1009].exec("SATURDAY"), 3202);
+assertEquals("SUNDAY,Y", res[1009].exec("SUNDAY"), 3203);
+assertEquals("SunD,D", res[1009].exec("SunDay"), 3204);
+assertEquals(",", res[1009].exec("abcx"), 3205);
+assertEquals(",", res[1009].exec("aBCx"), 3206);
+assertEquals(",", res[1009].exec("bbx"), 3207);
+assertEquals("BBx,x", res[1009].exec("BBx"), 3208);
+assertEquals("*** F,F", res[1009].exec("*** Failers"), 3209);
+assertEquals(",", res[1009].exec("abcX"), 3210);
+assertEquals(",", res[1009].exec("aBCX"), 3211);
+assertEquals(",", res[1009].exec("bbX"), 3212);
+assertEquals("BBX               , ", res[1009].exec("BBX               "), 3213);
+assertEquals(",", res[1009].exec("ac"), 3214);
+assertEquals(",", res[1009].exec("aC"), 3215);
+assertEquals(",", res[1009].exec("bD"), 3216);
+assertEquals("eleph,h", res[1009].exec("elephant"), 3217);
+assertEquals("Europe , ", res[1009].exec("Europe "), 3218);
+assertEquals("frog,g", res[1009].exec("frog"), 3219);
+assertEquals("Fr,r", res[1009].exec("France"), 3220);
+assertEquals("*** F,F", res[1009].exec("*** Failers"), 3221);
+assertEquals("Afric,c", res[1009].exec("Africa     "), 3222);
+assertEquals(",", res[1009].exec("ab"), 3223);
+assertEquals(",", res[1009].exec("aBd"), 3224);
+assertEquals("xy,y", res[1009].exec("xy"), 3225);
+assertEquals("xY,Y", res[1009].exec("xY"), 3226);
+assertEquals("ze,e", res[1009].exec("zebra"), 3227);
+assertEquals("Z,Z", res[1009].exec("Zambesi"), 3228);
+assertEquals("*** F,F", res[1009].exec("*** Failers"), 3229);
+assertEquals(",", res[1009].exec("aCD  "), 3230);
+assertEquals("XY  , ", res[1009].exec("XY  "), 3231);
+assertEquals("foo\n,\n", res[1009].exec("foo\nbar"), 3232);
+assertEquals("*** F,F", res[1009].exec("*** Failers"), 3233);
+assertEquals(",", res[1009].exec("bar"), 3234);
+assertEquals(",", res[1009].exec("baz\nbar   "), 3235);
+assertEquals(",", res[1009].exec("barbaz"), 3236);
+assertEquals(",", res[1009].exec("barbarbaz "), 3237);
+assertEquals("koo,o", res[1009].exec("koobarbaz "), 3238);
+assertEquals("*** F,F", res[1009].exec("*** Failers"), 3239);
+assertEquals(",", res[1009].exec("baz"), 3240);
+assertEquals("foo,o", res[1009].exec("foobarbaz "), 3241);
+assertEquals("abc", res[1012].exec("abc"), 3242);
+assertEquals("abc", res[1012].exec("xabcy"), 3243);
+assertEquals("abc", res[1012].exec("ababc"), 3244);
+assertEquals(null, res[1012].exec("*** Failers", 3245));
+assertEquals(null, res[1012].exec("xbc", 3246));
+assertEquals(null, res[1012].exec("axc", 3247));
+assertEquals(null, res[1012].exec("abx", 3248));
+assertEquals("abc", res[1013].exec("abc"), 3249);
+assertEquals("abc", res[1014].exec("abc"), 3250);
+assertEquals("abbc", res[1014].exec("abbc"), 3251);
+assertEquals("abbbbc", res[1014].exec("abbbbc"), 3252);
+assertEquals("a", res[1015].exec("abbbbc"), 3253);
+assertEquals("abbb", res[1016].exec("abbbbc"), 3254);
+assertEquals("abbbbc", res[1017].exec("abbbbc"), 3255);
+assertEquals("abbc", res[1018].exec("abbc"), 3256);
+assertEquals(null, res[1018].exec("*** Failers", 3257));
+assertEquals(null, res[1018].exec("abc", 3258));
+assertEquals(null, res[1018].exec("abq", 3259));
+assertEquals("abbbbc", res[1020].exec("abbbbc"), 3260);
+assertEquals("abbbbc", res[1021].exec("abbbbc"), 3261);
+assertEquals("abbbbc", res[1022].exec("abbbbc"), 3262);
+assertEquals("abbbbc", res[1023].exec("abbbbc"), 3263);
+assertEquals(null, res[1024].exec("*** Failers", 3264));
+assertEquals(null, res[1024].exec("abq", 3265));
+assertEquals(null, res[1024].exec("abbbbc", 3266));
+assertEquals("abbc", res[1025].exec("abbc"), 3267);
+assertEquals("abc", res[1025].exec("abc"), 3268);
+assertEquals("abc", res[1026].exec("abc"), 3269);
+assertEquals("abc", res[1028].exec("abc"), 3270);
+assertEquals("abc", res[1029].exec("abc"), 3271);
+assertEquals("abc", res[1030].exec("abc"), 3272);
+assertEquals(null, res[1030].exec("*** Failers", 3273));
+assertEquals(null, res[1030].exec("abbbbc", 3274));
+assertEquals(null, res[1030].exec("abcc", 3275));
+assertEquals("abc", res[1031].exec("abcc"), 3276);
+assertEquals("abc", res[1033].exec("aabc"), 3277);
+assertEquals(null, res[1033].exec("*** Failers", 3278));
+assertEquals("abc", res[1033].exec("aabc"), 3279);
+assertEquals(null, res[1033].exec("aabcd", 3280));
+assertEquals("", res[1034].exec("abc"), 3281);
+assertEquals("", res[1035].exec("abc"), 3282);
+assertEquals("abc", res[1036].exec("abc"), 3283);
+assertEquals("axc", res[1036].exec("axc"), 3284);
+assertEquals("axyzc", res[1037].exec("axyzc"), 3285);
+assertEquals("abd", res[1038].exec("abd"), 3286);
+assertEquals(null, res[1038].exec("*** Failers", 3287));
+assertEquals(null, res[1038].exec("axyzd", 3288));
+assertEquals(null, res[1038].exec("abc", 3289));
+assertEquals("ace", res[1039].exec("ace"), 3290);
+assertEquals("ac", res[1040].exec("aac"), 3291);
+assertEquals("a-", res[1041].exec("a-"), 3292);
+assertEquals("a-", res[1042].exec("a-"), 3293);
+assertEquals("a]", res[1043].exec("a]"), 3294);
+assertEquals(null, res[1044].exec("a]b", 3295));
+assertEquals("aed", res[1045].exec("aed"), 3296);
+assertEquals(null, res[1045].exec("*** Failers", 3297));
+assertEquals(null, res[1045].exec("abd", 3298));
+assertEquals(null, res[1045].exec("abd", 3299));
+assertEquals("adc", res[1046].exec("adc"), 3300);
+assertEquals(null, res[1047].exec("adc", 3301));
+assertEquals(null, res[1047].exec("*** Failers", 3302));
+assertEquals(null, res[1047].exec("a-c", 3303));
+assertEquals(null, res[1047].exec("a]c", 3304));
+assertEquals("a", res[1048].exec("a-"), 3305);
+assertEquals("a", res[1048].exec("-a"), 3306);
+assertEquals("a", res[1048].exec("-a-"), 3307);
+assertEquals(null, res[1049].exec("*** Failers", 3308));
+assertEquals(null, res[1049].exec("xy", 3309));
+assertEquals(null, res[1049].exec("yz", 3310));
+assertEquals(null, res[1049].exec("xyz", 3311));
+assertEquals("a", res[1050].exec("*** Failers"), 3312);
+assertEquals(null, res[1050].exec("a-", 3313));
+assertEquals(null, res[1050].exec("-a", 3314));
+assertEquals(null, res[1050].exec("-a-", 3315));
+assertEquals("y", res[1051].exec("xy"), 3316);
+assertEquals("y", res[1052].exec("yz"), 3317);
+assertEquals("y", res[1053].exec("xyz"), 3318);
+assertEquals("a", res[1054].exec("a"), 3319);
+assertEquals("-", res[1055].exec("-"), 3320);
+assertEquals("*", res[1055].exec("*** Failers"), 3321);
+assertEquals("-", res[1055].exec("-"), 3322);
+assertEquals(null, res[1055].exec("a", 3323));
+assertEquals("a b", res[1056].exec("a b"), 3324);
+assertEquals("a-b", res[1057].exec("a-b"), 3325);
+assertEquals(null, res[1057].exec("*** Failers", 3326));
+assertEquals("a-b", res[1057].exec("a-b"), 3327);
+assertEquals(null, res[1057].exec("a b", 3328));
+assertEquals("1", res[1058].exec("1"), 3329);
+assertEquals("-", res[1059].exec("-"), 3330);
+assertEquals("*", res[1059].exec("*** Failers"), 3331);
+assertEquals("-", res[1059].exec("-"), 3332);
+assertEquals(null, res[1059].exec("1", 3333));
+assertEquals("a", res[1060].exec("a"), 3334);
+assertEquals("-", res[1061].exec("-"), 3335);
+assertEquals("*", res[1061].exec("*** Failers"), 3336);
+assertEquals("-", res[1061].exec("-"), 3337);
+assertEquals(null, res[1061].exec("a", 3338));
+assertEquals("a b", res[1062].exec("a b"), 3339);
+assertEquals("a-b", res[1063].exec("a-b"), 3340);
+assertEquals(null, res[1063].exec("*** Failers", 3341));
+assertEquals("a-b", res[1063].exec("a-b"), 3342);
+assertEquals(null, res[1063].exec("a b", 3343));
+assertEquals("1", res[1064].exec("1"), 3344);
+assertEquals("-", res[1065].exec("-"), 3345);
+assertEquals("*", res[1065].exec("*** Failers"), 3346);
+assertEquals("-", res[1065].exec("-"), 3347);
+assertEquals(null, res[1065].exec("1", 3348));
+assertEquals("ab", res[1066].exec("abc"), 3349);
+assertEquals("ab", res[1066].exec("abcd"), 3350);
+assertEquals("ef,", res[1067].exec("def"), 3351);
+assertEquals("a(b", res[1069].exec("a(b"), 3352);
+assertEquals(null, res[1069].exec("ab", 3353));
+assertEquals(null, res[1069].exec("a((b", 3354));
+assertEquals(null, res[1070].exec("a\x08", 3355));
+assertEquals("a,a,a", res[1071].exec("abc"), 3356);
+assertEquals("abc,a,c", res[1072].exec("abc"), 3357);
+assertEquals("abc", res[1073].exec("aabbabc"), 3358);
+assertEquals("abc", res[1074].exec("aabbabc"), 3359);
+assertEquals("abc", res[1075].exec("abcabc"), 3360);
+assertEquals("ab,b", res[1076].exec("ab"), 3361);
+assertEquals("ab,b", res[1077].exec("ab"), 3362);
+assertEquals("ab,b", res[1078].exec("ab"), 3363);
+assertEquals("ab,b", res[1079].exec("ab"), 3364);
+assertEquals("a,a", res[1080].exec("ab"), 3365);
+assertEquals("a,a", res[1081].exec("ab"), 3366);
+assertEquals("cde", res[1082].exec("cde"), 3367);
+assertEquals(null, res[1083].exec("*** Failers", 3368));
+assertEquals(null, res[1083].exec("b", 3369));
+assertEquals("abbbcd,c", res[1085].exec("abbbcd"), 3370);
+assertEquals("abcd,a", res[1086].exec("abcd"), 3371);
+assertEquals("e", res[1087].exec("e"), 3372);
+assertEquals("ef,e", res[1088].exec("ef"), 3373);
+assertEquals("abcdefg", res[1089].exec("abcdefg"), 3374);
+assertEquals("ab", res[1090].exec("xabyabbbz"), 3375);
+assertEquals("a", res[1090].exec("xayabbbz"), 3376);
+assertEquals("cde,cd", res[1091].exec("abcde"), 3377);
+assertEquals("hij", res[1092].exec("hij"), 3378);
+assertEquals("ef,", res[1094].exec("abcdef"), 3379);
+assertEquals("bcd,b", res[1095].exec("abcd"), 3380);
+assertEquals("abc,a", res[1096].exec("abc"), 3381);
+assertEquals("abc,bc", res[1097].exec("abc"), 3382);
+assertEquals("abcd,bc,d", res[1098].exec("abcd"), 3383);
+assertEquals("abcd,bc,d", res[1099].exec("abcd"), 3384);
+assertEquals("abcd,b,cd", res[1100].exec("abcd"), 3385);
+assertEquals("adcdcde", res[1101].exec("adcdcde"), 3386);
+assertEquals(null, res[1102].exec("*** Failers", 3387));
+assertEquals(null, res[1102].exec("abcde", 3388));
+assertEquals(null, res[1102].exec("adcdcde", 3389));
+assertEquals("abc,ab", res[1103].exec("abc"), 3390);
+assertEquals("abcd,abc,a,b,d", res[1104].exec("abcd"), 3391);
+assertEquals("alpha", res[1105].exec("alpha"), 3392);
+assertEquals("bh,", res[1106].exec("abh"), 3393);
+assertEquals("effgz,effgz,", res[1107].exec("effgz"), 3394);
+assertEquals("ij,ij,j", res[1107].exec("ij"), 3395);
+assertEquals("effgz,effgz,", res[1107].exec("reffgz"), 3396);
+assertEquals(null, res[1107].exec("*** Failers", 3397));
+assertEquals(null, res[1107].exec("effg", 3398));
+assertEquals(null, res[1107].exec("bcdd", 3399));
+assertEquals("a,a,a,a,a,a,a,a,a,a,a", res[1108].exec("a"), 3400);
+assertEquals("a,a,a,a,a,a,a,a,a,a", res[1109].exec("a"), 3401);
+assertEquals(null, res[1110].exec("*** Failers", 3402));
+assertEquals(null, res[1110].exec("aa", 3403));
+assertEquals(null, res[1110].exec("uh-uh", 3404));
+assertEquals("multiple words", res[1111].exec("multiple words, yeah"), 3405);
+assertEquals("abcde,ab,de", res[1112].exec("abcde"), 3406);
+assertEquals("(a, b),a,b", res[1113].exec("(a, b)"), 3407);
+assertEquals("abcd", res[1115].exec("abcd"), 3408);
+assertEquals("abcd,bc", res[1116].exec("abcd"), 3409);
+assertEquals("ac", res[1117].exec("ac"), 3410);
+assertEquals("ABC", res[1118].exec("ABC"), 3411);
+assertEquals("ABC", res[1118].exec("XABCY"), 3412);
+assertEquals("ABC", res[1118].exec("ABABC"), 3413);
+assertEquals(null, res[1118].exec("*** Failers", 3414));
+assertEquals(null, res[1118].exec("aaxabxbaxbbx", 3415));
+assertEquals(null, res[1118].exec("XBC", 3416));
+assertEquals(null, res[1118].exec("AXC", 3417));
+assertEquals(null, res[1118].exec("ABX", 3418));
+assertEquals("ABC", res[1119].exec("ABC"), 3419);
+assertEquals("ABC", res[1120].exec("ABC"), 3420);
+assertEquals("ABBC", res[1120].exec("ABBC"), 3421);
+assertEquals("ABBBBC", res[1121].exec("ABBBBC"), 3422);
+assertEquals("ABBBBC", res[1122].exec("ABBBBC"), 3423);
+assertEquals("ABBC", res[1123].exec("ABBC"), 3424);
+assertEquals(null, res[1124].exec("*** Failers", 3425));
+assertEquals(null, res[1124].exec("ABC", 3426));
+assertEquals(null, res[1124].exec("ABQ", 3427));
+assertEquals("ABBBBC", res[1126].exec("ABBBBC"), 3428);
+assertEquals("ABBBBC", res[1127].exec("ABBBBC"), 3429);
+assertEquals("ABBBBC", res[1128].exec("ABBBBC"), 3430);
+assertEquals("ABBBBC", res[1129].exec("ABBBBC"), 3431);
+assertEquals(null, res[1130].exec("*** Failers", 3432));
+assertEquals(null, res[1130].exec("ABQ", 3433));
+assertEquals(null, res[1130].exec("ABBBBC", 3434));
+assertEquals("ABBC", res[1131].exec("ABBC"), 3435);
+assertEquals("ABC", res[1131].exec("ABC"), 3436);
+assertEquals("ABC", res[1132].exec("ABC"), 3437);
+assertEquals("ABC", res[1134].exec("ABC"), 3438);
+assertEquals("ABC", res[1135].exec("ABC"), 3439);
+assertEquals("ABC", res[1136].exec("ABC"), 3440);
+assertEquals(null, res[1136].exec("*** Failers", 3441));
+assertEquals(null, res[1136].exec("ABBBBC", 3442));
+assertEquals(null, res[1136].exec("ABCC", 3443));
+assertEquals("ABC", res[1137].exec("ABCC"), 3444);
+assertEquals("ABC", res[1139].exec("AABC"), 3445);
+assertEquals("", res[1140].exec("ABC"), 3446);
+assertEquals("", res[1141].exec("ABC"), 3447);
+assertEquals("ABC", res[1142].exec("ABC"), 3448);
+assertEquals("AXC", res[1142].exec("AXC"), 3449);
+assertEquals("AXYZC", res[1143].exec("AXYZC"), 3450);
+assertEquals(null, res[1144].exec("*** Failers", 3451));
+assertEquals("AABC", res[1144].exec("AABC"), 3452);
+assertEquals(null, res[1144].exec("AXYZD", 3453));
+assertEquals("ABD", res[1145].exec("ABD"), 3454);
+assertEquals("ACE", res[1146].exec("ACE"), 3455);
+assertEquals(null, res[1146].exec("*** Failers", 3456));
+assertEquals(null, res[1146].exec("ABC", 3457));
+assertEquals(null, res[1146].exec("ABD", 3458));
+assertEquals("AC", res[1147].exec("AAC"), 3459);
+assertEquals("A-", res[1148].exec("A-"), 3460);
+assertEquals("A-", res[1149].exec("A-"), 3461);
+assertEquals("A]", res[1150].exec("A]"), 3462);
+assertEquals(null, res[1151].exec("A]B", 3463));
+assertEquals("AED", res[1152].exec("AED"), 3464);
+assertEquals("ADC", res[1153].exec("ADC"), 3465);
+assertEquals(null, res[1153].exec("*** Failers", 3466));
+assertEquals(null, res[1153].exec("ABD", 3467));
+assertEquals(null, res[1153].exec("A-C", 3468));
+assertEquals(null, res[1154].exec("ADC", 3469));
+assertEquals("AB", res[1155].exec("ABC"), 3470);
+assertEquals("AB", res[1155].exec("ABCD"), 3471);
+assertEquals("EF,", res[1156].exec("DEF"), 3472);
+assertEquals(null, res[1157].exec("*** Failers", 3473));
+assertEquals(null, res[1157].exec("A]C", 3474));
+assertEquals(null, res[1157].exec("B", 3475));
+assertEquals("A(B", res[1158].exec("A(B"), 3476);
+assertEquals(null, res[1158].exec("AB", 3477));
+assertEquals(null, res[1158].exec("A((B", 3478));
+assertEquals(null, res[1159].exec("AB", 3479));
+assertEquals("A,A,A", res[1160].exec("ABC"), 3480);
+assertEquals("ABC,A,C", res[1161].exec("ABC"), 3481);
+assertEquals("ABC", res[1162].exec("AABBABC"), 3482);
+assertEquals("ABC", res[1163].exec("AABBABC"), 3483);
+assertEquals("ABC", res[1164].exec("ABCABC"), 3484);
+assertEquals("ABC", res[1165].exec("ABCABC"), 3485);
+assertEquals("ABC", res[1166].exec("ABCABC"), 3486);
+assertEquals("AB,B", res[1167].exec("AB"), 3487);
+assertEquals("AB,B", res[1168].exec("AB"), 3488);
+assertEquals("AB,B", res[1169].exec("AB"), 3489);
+assertEquals("AB,B", res[1170].exec("AB"), 3490);
+assertEquals("A,A", res[1171].exec("AB"), 3491);
+assertEquals("A,A", res[1172].exec("AB"), 3492);
+assertEquals(",", res[1173].exec("AB"), 3493);
+assertEquals("CDE", res[1174].exec("CDE"), 3494);
+assertEquals("ABBBCD,C", res[1177].exec("ABBBCD"), 3495);
+assertEquals("ABCD,A", res[1178].exec("ABCD"), 3496);
+assertEquals("E", res[1179].exec("E"), 3497);
+assertEquals("EF,E", res[1180].exec("EF"), 3498);
+assertEquals("ABCDEFG", res[1181].exec("ABCDEFG"), 3499);
+assertEquals("AB", res[1182].exec("XABYABBBZ"), 3500);
+assertEquals("A", res[1182].exec("XAYABBBZ"), 3501);
+assertEquals("CDE,CD", res[1183].exec("ABCDE"), 3502);
+assertEquals("HIJ", res[1184].exec("HIJ"), 3503);
+assertEquals(null, res[1185].exec("ABCDE", 3504));
+assertEquals("EF,", res[1186].exec("ABCDEF"), 3505);
+assertEquals("BCD,B", res[1187].exec("ABCD"), 3506);
+assertEquals("ABC,A", res[1188].exec("ABC"), 3507);
+assertEquals("ABC,BC", res[1189].exec("ABC"), 3508);
+assertEquals("ABCD,BC,D", res[1190].exec("ABCD"), 3509);
+assertEquals("ABCD,BC,D", res[1191].exec("ABCD"), 3510);
+assertEquals("ABCD,B,CD", res[1192].exec("ABCD"), 3511);
+assertEquals("ADCDCDE", res[1193].exec("ADCDCDE"), 3512);
+assertEquals("ABC,AB", res[1195].exec("ABC"), 3513);
+assertEquals("ABCD,ABC,A,B,D", res[1196].exec("ABCD"), 3514);
+assertEquals("ALPHA", res[1197].exec("ALPHA"), 3515);
+assertEquals("BH,", res[1198].exec("ABH"), 3516);
+assertEquals("EFFGZ,EFFGZ,", res[1199].exec("EFFGZ"), 3517);
+assertEquals("IJ,IJ,J", res[1199].exec("IJ"), 3518);
+assertEquals("EFFGZ,EFFGZ,", res[1199].exec("REFFGZ"), 3519);
+assertEquals(null, res[1199].exec("*** Failers", 3520));
+assertEquals(null, res[1199].exec("ADCDCDE", 3521));
+assertEquals(null, res[1199].exec("EFFG", 3522));
+assertEquals(null, res[1199].exec("BCDD", 3523));
+assertEquals("A,A,A,A,A,A,A,A,A,A,A", res[1200].exec("A"), 3524);
+assertEquals("A,A,A,A,A,A,A,A,A,A", res[1201].exec("A"), 3525);
+assertEquals("A,A", res[1202].exec("A"), 3526);
+assertEquals("C,C", res[1203].exec("C"), 3527);
+assertEquals(null, res[1204].exec("*** Failers", 3528));
+assertEquals(null, res[1204].exec("AA", 3529));
+assertEquals(null, res[1204].exec("UH-UH", 3530));
+assertEquals("MULTIPLE WORDS", res[1205].exec("MULTIPLE WORDS, YEAH"), 3531);
+assertEquals("ABCDE,AB,DE", res[1206].exec("ABCDE"), 3532);
+assertEquals("(A, B),A,B", res[1207].exec("(A, B)"), 3533);
+assertEquals("ABCD", res[1209].exec("ABCD"), 3534);
+assertEquals("ABCD,BC", res[1210].exec("ABCD"), 3535);
+assertEquals("AC", res[1211].exec("AC"), 3536);
+assertEquals("ad", res[1212].exec("abad"), 3537);
+assertEquals("ad", res[1213].exec("abad"), 3538);
+assertEquals("ad", res[1214].exec("abad"), 3539);
+assertEquals("ace,e", res[1215].exec("ace"), 3540);
+assertEquals("ace,e", res[1216].exec("ace"), 3541);
+assertEquals("ace,e", res[1217].exec("ace"), 3542);
+assertEquals("acd,d", res[1217].exec("acdbcdbe"), 3543);
+assertEquals("acdbcdbe,e", res[1218].exec("acdbcdbe"), 3544);
+assertEquals("acdb,b", res[1219].exec("acdbcdbe"), 3545);
+assertEquals("acdbcdb,b", res[1220].exec("acdbcdbe"), 3546);
+assertEquals("acdbcd,d", res[1221].exec("acdbcdbe"), 3547);
+assertEquals("foobar,bar,,bar", res[1222].exec("foobar"), 3548);
+assertEquals("acdbcdbe,e", res[1223].exec("acdbcdbe"), 3549);
+assertEquals("acdbcdbe,e", res[1224].exec("acdbcdbe"), 3550);
+assertEquals("acdbcdbe,e", res[1225].exec("acdbcdbe"), 3551);
+assertEquals("acdbcdb,b", res[1226].exec("acdbcdbe"), 3552);
+assertEquals("acdbcdbe,e", res[1227].exec("acdbcdbe"), 3553);
+assertEquals("acdbcdb,b", res[1228].exec("acdbcdbe"), 3554);
+assertEquals("ace,c,e", res[1229].exec("ace"), 3555);
+assertEquals("AB,A", res[1230].exec("AB"), 3556);
+assertEquals(".,.,", res[1231].exec("."), 3557);
+assertEquals("<&", res[1232].exec("<&OUT"), 3558);
+assertEquals("foobar,,,,b,a,r", res[1233].exec("foobar"), 3559);
+assertEquals(",,,,,,", res[1233].exec("ab"), 3560);
+assertEquals(",,,,,,", res[1233].exec("*** Failers"), 3561);
+assertEquals(",,,,,,", res[1233].exec("cb"), 3562);
+assertEquals(",,,,,,", res[1233].exec("b"), 3563);
+assertEquals(",,,,,,", res[1233].exec("ab"), 3564);
+assertEquals(",,,,,,", res[1233].exec("b"), 3565);
+assertEquals(",,,,,,", res[1233].exec("b"), 3566);
+assertEquals("aba", res[1234].exec("aba"), 3567);
+assertEquals("a", res[1235].exec("aba"), 3568);
+assertEquals(",", res[1236].exec("abc"), 3569);
+assertEquals("aax,a", res[1237].exec("aax"), 3570);
+assertEquals("aax,a,a", res[1238].exec("aax"), 3571);
+assertEquals("aax,a,a", res[1239].exec("aax"), 3572);
+assertEquals("ab,", res[1240].exec("cab"), 3573);
+assertEquals("ab,", res[1241].exec("cab"), 3574);
+assertEquals("ab,", res[1241].exec("ab"), 3575);
+assertEquals("ab,", res[1241].exec("ab"), 3576);
+assertEquals(null, res[1241].exec("Ab", 3577));
+assertEquals(null, res[1241].exec("Ab", 3578));
+assertEquals(null, res[1241].exec("*** Failers", 3579));
+assertEquals(null, res[1241].exec("cb", 3580));
+assertEquals(null, res[1241].exec("aB", 3581));
+assertEquals("ab,", res[1241].exec("ab"), 3582);
+assertEquals("ab,", res[1241].exec("ab"), 3583);
+assertEquals(null, res[1241].exec("Ab", 3584));
+assertEquals(null, res[1241].exec("Ab", 3585));
+assertEquals(null, res[1241].exec("*** Failers", 3586));
+assertEquals(null, res[1241].exec("aB", 3587));
+assertEquals(null, res[1241].exec("aB", 3588));
+assertEquals("ab,", res[1241].exec("ab"), 3589);
+assertEquals("ab,", res[1241].exec("ab"), 3590);
+assertEquals(null, res[1241].exec("aB", 3591));
+assertEquals(null, res[1241].exec("aB", 3592));
+assertEquals(null, res[1241].exec("*** Failers", 3593));
+assertEquals(null, res[1241].exec("aB", 3594));
+assertEquals(null, res[1241].exec("Ab", 3595));
+assertEquals(null, res[1241].exec("aB", 3596));
+assertEquals(null, res[1241].exec("aB", 3597));
+assertEquals(null, res[1241].exec("*** Failers", 3598));
+assertEquals(null, res[1241].exec("Ab", 3599));
+assertEquals(null, res[1241].exec("AB", 3600));
+assertEquals("ab,", res[1241].exec("ab"), 3601);
+assertEquals("ab,", res[1241].exec("ab"), 3602);
+assertEquals(null, res[1241].exec("aB", 3603));
+assertEquals(null, res[1241].exec("aB", 3604));
+assertEquals(null, res[1241].exec("*** Failers", 3605));
+assertEquals(null, res[1241].exec("AB", 3606));
+assertEquals(null, res[1241].exec("Ab", 3607));
+assertEquals(null, res[1241].exec("aB", 3608));
+assertEquals(null, res[1241].exec("aB", 3609));
+assertEquals(null, res[1241].exec("*** Failers", 3610));
+assertEquals(null, res[1241].exec("Ab", 3611));
+assertEquals(null, res[1241].exec("AB", 3612));
+assertEquals(null, res[1241].exec("*** Failers", 3613));
+assertEquals(null, res[1241].exec("AB", 3614));
+assertEquals(null, res[1241].exec("a\nB", 3615));
+assertEquals(null, res[1241].exec("a\nB", 3616));
+assertEquals("cabbbb", res[1242].exec("cabbbb"), 3617);
+assertEquals("caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", res[1243].exec("caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"), 3618);
+assertEquals("foobar1234baz", res[1244].exec("foobar1234baz"), 3619);
+assertEquals("x~~,~~", res[1245].exec("x~~"), 3620);
+assertEquals("aaac", res[1246].exec("aaac"), 3621);
+assertEquals("aaac", res[1247].exec("aaac"), 3622);
+assertEquals(null, res[1247].exec("*** Failers", 3623));
+assertEquals(null, res[1247].exec("B\nB", 3624));
+assertEquals(null, res[1247].exec("dbcb", 3625));
+assertEquals(null, res[1247].exec("dbaacb", 3626));
+assertEquals(null, res[1247].exec("dbaacb", 3627));
+assertEquals(null, res[1247].exec("cdaccb", 3628));
+assertEquals(null, res[1248].exec("*** Failers", 3629));
+assertEquals(null, res[1248].exec("dbcb", 3630));
+assertEquals(null, res[1248].exec("a--", 3631));
+assertEquals(null, res[1248].exec("a\nb\nc\n", 3632));
+assertEquals(null, res[1248].exec("a\nb\nc\n", 3633));
+assertEquals(null, res[1248].exec("a\nb\n", 3634));
+assertEquals(null, res[1248].exec("a\nb\n", 3635));
+assertEquals(null, res[1248].exec("a\nb\n", 3636));
+assertEquals(null, res[1248].exec("a\nb\n", 3637));
+assertEquals(null, res[1248].exec("a\nb\nc\n", 3638));
+assertEquals(null, res[1248].exec("a\nb\nc\n", 3639));
+assertEquals(null, res[1248].exec("a\nb\nc\n", 3640));
+assertEquals(null, res[1248].exec("a\nb\nc\n", 3641));
+assertEquals(null, res[1250].exec("*** Failers", 3642));
+assertEquals(null, res[1250].exec("a\nb\nc\n", 3643));
+assertEquals(null, res[1250].exec("a\nb\nc\n", 3644));
+assertEquals(null, res[1250].exec("a\nb\nc\n", 3645));
+assertEquals(null, res[1250].exec("a", 3646));
+assertEquals(null, res[1250].exec("*** Failers", 3647));
+assertEquals(null, res[1250].exec("a", 3648));
+assertEquals(null, res[1250].exec("a", 3649));
+assertEquals(null, res[1250].exec("a", 3650));
+assertEquals("one:,one:", res[1251].exec("one:"), 3651);
+assertEquals(null, res[1251].exec("a", 3652));
+assertEquals("abcd,,abcd", res[1252].exec("abcd"), 3653);
+assertEquals("xy:z:::abcd,xy:z:::,abcd", res[1252].exec("xy:z:::abcd"), 3654);
+assertEquals("aexyc,c", res[1253].exec("aexycd"), 3655);
+assertEquals("aab,aa", res[1254].exec("caab"), 3656);
+assertEquals("abcd,,abcd", res[1255].exec("abcd"), 3657);
+assertEquals("xy:z:::abcd,xy:z:::,abcd", res[1255].exec("xy:z:::abcd"), 3658);
+assertEquals("Failers,,Failers", res[1255].exec("*** Failers"), 3659);
+assertEquals(null, res[1255].exec("abcd:", 3660));
+assertEquals(null, res[1255].exec("abcd:", 3661));
+assertEquals("aexyc,c", res[1256].exec("aexycd"), 3662);
+assertEquals(null, res[1257].exec("aaab", 3663));
+assertEquals(":[,:[", res[1258].exec("a:[b]:"), 3664);
+assertEquals("=[,=[", res[1259].exec("a=[b]="), 3665);
+assertEquals(".[,.[", res[1260].exec("a.[b]."), 3666);
+assertEquals(null, res[1260].exec("aaab", 3667));
+assertEquals(null, res[1260].exec("aaab", 3668));
+assertEquals(null, res[1260].exec("((abc(ade)ufh()()x", 3669));
+assertEquals(null, res[1261].exec("*** Failers", 3670));
+assertEquals(null, res[1261].exec("aaab", 3671));
+assertEquals(null, res[1261].exec("a\nb\n", 3672));
+assertEquals(null, res[1262].exec("a\nb\n", 3673));
+assertEquals(null, res[1264].exec("a\nb", 3674));
+assertEquals(null, res[1265].exec("a\nb", 3675));
+assertEquals(null, res[1265].exec("*** Failers", 3676));
+assertEquals(null, res[1265].exec("alphabetabcd", 3677));
+assertEquals(null, res[1265].exec("endingwxyz", 3678));
+assertEquals(null, res[1265].exec("*** Failers", 3679));
+assertEquals(null, res[1265].exec("a rather long string that doesn't end with one of them", 3680));
+assertEquals(null, res[1265].exec("word cat dog elephant mussel cow horse canary baboon snake shark otherword", 3681));
+assertEquals(null, res[1265].exec("word cat dog elephant mussel cow horse canary baboon snake shark", 3682));
+assertEquals(null, res[1265].exec("word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope", 3683));
+assertEquals(null, res[1265].exec("999foo", 3684));
+assertEquals(null, res[1265].exec("123999foo ", 3685));
+assertEquals(null, res[1265].exec("*** Failers", 3686));
+assertEquals(null, res[1265].exec("123abcfoo", 3687));
+assertEquals(null, res[1265].exec("999foo", 3688));
+assertEquals(null, res[1265].exec("123999foo ", 3689));
+assertEquals(null, res[1265].exec("*** Failers", 3690));
+assertEquals(null, res[1265].exec("123abcfoo", 3691));
+assertEquals(null, res[1265].exec("123abcfoo", 3692));
+assertEquals(null, res[1265].exec("123456foo ", 3693));
+assertEquals(null, res[1265].exec("*** Failers", 3694));
+assertEquals(null, res[1265].exec("123999foo  ", 3695));
+assertEquals(null, res[1265].exec("123abcfoo   ", 3696));
+assertEquals(null, res[1265].exec("123456foo ", 3697));
+assertEquals(null, res[1265].exec("*** Failers", 3698));
+assertEquals(null, res[1265].exec("123999foo  ", 3699));
+assertEquals("ZA,A,", res[1266].exec("ZABCDEFG"), 3700);
+assertEquals("ZA,A,", res[1267].exec("ZABCDEFG"), 3701);
+assertEquals("ZA,A,,", res[1268].exec("ZABCDEFG"), 3702);
+assertEquals("ZA,A,,", res[1268].exec("ZABCDEFG"), 3703);
+assertEquals("ZA,A,,", res[1268].exec("ZABCDEFG"), 3704);
+assertEquals("a", res[1269].exec("abbab"), 3705);
+assertEquals("", res[1269].exec("abcde"), 3706);
+assertEquals("", res[1269].exec("-things"), 3707);
+assertEquals("", res[1269].exec("0digit"), 3708);
+assertEquals("", res[1269].exec("*** Failers"), 3709);
+assertEquals("", res[1269].exec("bcdef    "), 3710);
+assertEquals("a", res[1270].exec("abcde"), 3711);
+assertEquals("-", res[1270].exec("-things"), 3712);
+assertEquals("0", res[1270].exec("0digit"), 3713);
+assertEquals(null, res[1270].exec("*** Failers", 3714));
+assertEquals(null, res[1270].exec("bcdef    ", 3715));
+assertEquals(null, res[1271].exec("> \x09\n\x0c\x0d\x0b<", 3716));
+assertEquals(null, res[1271].exec(" ", 3717));
+assertEquals(null, res[1272].exec("> \x09\n\x0c\x0d\x0b<", 3718));
+assertEquals(null, res[1272].exec(" ", 3719));
+assertEquals(" \x09\n\x0c\x0d\x0b", res[1273].exec("> \x09\n\x0c\x0d\x0b<"), 3720);
+assertEquals(" ", res[1273].exec(" "), 3721);
+assertEquals(" \x09\n\x0c\x0d\x0b", res[1274].exec("> \x09\n\x0c\x0d\x0b<"), 3722);
+assertEquals(" ", res[1274].exec(" "), 3723);
+assertEquals(null, res[1275].exec("ab", 3724));
+assertEquals(null, res[1278].exec("abcabcabc", 3725));
+assertEquals(null, res[1278].exec("abc(*+|abc ", 3726));
+assertEquals(null, res[1279].exec("abc abcabc", 3727));
+assertEquals(null, res[1279].exec("*** Failers", 3728));
+assertEquals(null, res[1279].exec("abcabcabc  ", 3729));
+assertEquals(null, res[1280].exec("abc#not comment\n    literal     ", 3730));
+assertEquals(null, res[1281].exec("abc#not comment\n    literal     ", 3731));
+assertEquals(null, res[1282].exec("abc#not comment\n    literal     ", 3732));
+assertEquals(null, res[1283].exec("abc#not comment\n    literal     ", 3733));
+assertEquals(null, res[1284].exec("abc\\$xyz", 3734));
+assertEquals(null, res[1285].exec("abc$xyz", 3735));
+assertEquals(null, res[1286].exec("abc", 3736));
+assertEquals(null, res[1286].exec("*** Failers", 3737));
+assertEquals(null, res[1286].exec("xyzabc  ", 3738));
+assertEquals(null, res[1287].exec("abc1abc2xyzabc3", 3739));
+assertEquals("abc1", res[1288].exec("abc1abc2xyzabc3 "), 3740);
+assertEquals(null, res[1288].exec("XabcdY", 3741));
+assertEquals(null, res[1288].exec("*** Failers ", 3742));
+assertEquals(null, res[1288].exec("Xa b c d Y ", 3743));
+assertEquals("abcY", res[1288].exec("XabcY"), 3744);
+assertEquals(null, res[1288].exec("AxyzB ", 3745));
+assertEquals(null, res[1288].exec("XabCY", 3746));
+assertEquals(null, res[1288].exec("*** Failers", 3747));
+assertEquals("abcY", res[1288].exec("XabcY  "), 3748);
+assertEquals(null, res[1288].exec("abCE", 3749));
+assertEquals(null, res[1288].exec("DE", 3750));
+assertEquals(null, res[1288].exec("*** Failers", 3751));
+assertEquals("abcE", res[1288].exec("abcE"), 3752);
+assertEquals(null, res[1288].exec("abCe  ", 3753));
+assertEquals(null, res[1288].exec("dE", 3754));
+assertEquals(null, res[1288].exec("De    ", 3755));
+assertEquals(null, res[1289].exec("z", 3756));
+assertEquals(null, res[1289].exec("a", 3757));
+assertEquals(null, res[1289].exec("-", 3758));
+assertEquals(null, res[1289].exec("d", 3759));
+assertEquals(null, res[1289].exec("] ", 3760));
+assertEquals(null, res[1289].exec("*** Failers", 3761));
+assertEquals(null, res[1289].exec("b     ", 3762));
+assertEquals("z", res[1290].exec("z"), 3763);
+assertEquals("C", res[1290].exec("C "), 3764);
+assertEquals("M", res[1291].exec("M "), 3765);
+assertEquals(null, res[1292].exec("", 3766));
+assertEquals(null, res[1292].exec("REGular", 3767));
+assertEquals(null, res[1292].exec("regulaer", 3768));
+assertEquals(null, res[1292].exec("Regex  ", 3769));
+assertEquals(null, res[1292].exec("regul\ufffdr ", 3770));
+assertEquals(null, res[1292].exec("\ufffd\ufffd\ufffd\ufffd\ufffd", 3771));
+assertEquals(null, res[1292].exec("\ufffd\ufffd\ufffd\ufffd\ufffd", 3772));
+assertEquals(null, res[1292].exec("\ufffd\ufffd\ufffd\ufffd\ufffd", 3773));
+assertEquals(null, res[1292].exec("\ufffd\ufffd\ufffd\ufffd\ufffd", 3774));
+assertEquals(null, res[1292].exec("\x84XAZXB", 3775));
+assertEquals(null, res[1292].exec("123a", 3776));
+assertEquals(null, res[1292].exec("ac", 3777));
+assertEquals("b,", res[1292].exec("bbbbc"), 3778);
+assertEquals("ab,a", res[1292].exec("abc"), 3779);
+assertEquals(null, res[1292].exec("*** Failers", 3780));
+assertEquals("b,", res[1292].exec("bca"), 3781);
+assertEquals(null, res[1292].exec("", 3782));
+assertEquals("ab,a", res[1292].exec("abc"), 3783);
+assertEquals(null, res[1292].exec("*** Failers", 3784));
+assertEquals("b,", res[1292].exec("bca"), 3785);
+assertEquals("ab,a", res[1292].exec("abc"), 3786);
+assertEquals(null, res[1292].exec("*** Failers", 3787));
+assertEquals(null, res[1292].exec("def  ", 3788));
+assertEquals(null, res[1292].exec("", 3789));
+assertEquals("ab,a", res[1292].exec("abc"), 3790);
+assertEquals(null, res[1292].exec("*** Failers", 3791));
+assertEquals(null, res[1292].exec("def  ", 3792));
+assertEquals(null, res[1292].exec("", 3793));
+assertEquals("line\nbreak", res[1293].exec("this is a line\nbreak"), 3794);
+assertEquals("line\nbreak", res[1293].exec("line one\nthis is a line\nbreak in the second line "), 3795);
+assertEquals("line\nbreak", res[1294].exec("this is a line\nbreak"), 3796);
+assertEquals(null, res[1294].exec("** Failers ", 3797));
+assertEquals("line\nbreak", res[1294].exec("line one\nthis is a line\nbreak in the second line "), 3798);
+assertEquals("line\nbreak", res[1295].exec("this is a line\nbreak"), 3799);
+assertEquals(null, res[1295].exec("** Failers ", 3800));
+assertEquals("line\nbreak", res[1295].exec("line one\nthis is a line\nbreak in the second line "), 3801);
+assertEquals(null, res[1296].exec("123P", 3802));
+assertEquals(null, res[1296].exec("a4PR", 3803));
+assertEquals(null, res[1297].exec("123P", 3804));
+assertEquals(null, res[1297].exec("4PR", 3805));
+assertEquals("", res[1298].exec("a\nb\nc\n"), 3806);
+assertEquals("", res[1298].exec(" "), 3807);
+assertEquals("", res[1298].exec("A\nC\nC\n "), 3808);
+assertEquals("", res[1298].exec("AB"), 3809);
+assertEquals("", res[1298].exec("aB  "), 3810);
+assertEquals("", res[1298].exec("AB"), 3811);
+assertEquals("", res[1298].exec("aB  "), 3812);
+assertEquals("", res[1298].exec("AB"), 3813);
+assertEquals("", res[1298].exec("aB  "), 3814);
+assertEquals("", res[1298].exec("AB"), 3815);
+assertEquals("", res[1298].exec("aB  "), 3816);
+assertEquals("Content-Type:xxxxxyyy ", res[1299].exec("Content-Type:xxxxxyyy "), 3817);
+assertEquals("Content-Type:xxxxxyyyz", res[1300].exec("Content-Type:xxxxxyyyz"), 3818);
+assertEquals("Content-Type:xxxyyy ", res[1301].exec("Content-Type:xxxyyy "), 3819);
+assertEquals("Content-Type:xxxyyyz", res[1302].exec("Content-Type:xxxyyyz"), 3820);
+assertEquals("abc", res[1303].exec("xyz\nabc"), 3821);
+assertEquals("abc", res[1303].exec("xyz\nabc<lf>"), 3822);
+assertEquals("abc", res[1303].exec("xyz\x0d\nabc<lf>"), 3823);
+assertEquals("abc", res[1303].exec("xyz\x0dabc<cr>"), 3824);
+assertEquals("abc", res[1303].exec("xyz\x0d\nabc<crlf>"), 3825);
+assertEquals(null, res[1303].exec("** Failers ", 3826));
+assertEquals("abc", res[1303].exec("xyz\nabc<cr>"), 3827);
+assertEquals("abc", res[1303].exec("xyz\x0d\nabc<cr>"), 3828);
+assertEquals("abc", res[1303].exec("xyz\nabc<crlf>"), 3829);
+assertEquals("abc", res[1303].exec("xyz\x0dabc<crlf>"), 3830);
+assertEquals("abc", res[1303].exec("xyz\x0dabc<lf>"), 3831);
+assertEquals("abc", res[1304].exec("xyzabc"), 3832);
+assertEquals("abc", res[1304].exec("xyzabc\n "), 3833);
+assertEquals("abc", res[1304].exec("xyzabc\npqr "), 3834);
+assertEquals("abc", res[1304].exec("xyzabc\x0d<cr> "), 3835);
+assertEquals("abc", res[1304].exec("xyzabc\x0dpqr<cr> "), 3836);
+assertEquals("abc", res[1304].exec("xyzabc\x0d\n<crlf> "), 3837);
+assertEquals("abc", res[1304].exec("xyzabc\x0d\npqr<crlf> "), 3838);
+assertEquals(null, res[1304].exec("** Failers", 3839));
+assertEquals("abc", res[1304].exec("xyzabc\x0d "), 3840);
+assertEquals("abc", res[1304].exec("xyzabc\x0dpqr "), 3841);
+assertEquals("abc", res[1304].exec("xyzabc\x0d\n "), 3842);
+assertEquals("abc", res[1304].exec("xyzabc\x0d\npqr "), 3843);
+assertEquals("abc", res[1305].exec("xyz\x0dabcdef"), 3844);
+assertEquals("abc", res[1305].exec("xyz\nabcdef<lf>"), 3845);
+assertEquals(null, res[1305].exec("** Failers  ", 3846));
+assertEquals("abc", res[1305].exec("xyz\nabcdef"), 3847);
+assertEquals(null, res[1305].exec("   ", 3848));
+assertEquals("abc", res[1306].exec("xyz\nabcdef"), 3849);
+assertEquals("abc", res[1306].exec("xyz\x0dabcdef<cr>"), 3850);
+assertEquals(null, res[1306].exec("** Failers  ", 3851));
+assertEquals("abc", res[1306].exec("xyz\x0dabcdef"), 3852);
+assertEquals(null, res[1306].exec("   ", 3853));
+assertEquals("abc", res[1307].exec("xyz\x0d\nabcdef"), 3854);
+assertEquals("abc", res[1307].exec("xyz\x0dabcdef<cr>"), 3855);
+assertEquals(null, res[1307].exec("** Failers  ", 3856));
+assertEquals("abc", res[1307].exec("xyz\x0dabcdef"), 3857);
+assertEquals("abc", res[1308].exec("abc\ndef"), 3858);
+assertEquals("abc", res[1308].exec("abc\x0ddef"), 3859);
+assertEquals("abc", res[1308].exec("abc\x0d\ndef"), 3860);
+assertEquals("<cr>abc", res[1308].exec("<cr>abc\ndef"), 3861);
+assertEquals("<cr>abc", res[1308].exec("<cr>abc\x0ddef"), 3862);
+assertEquals("<cr>abc", res[1308].exec("<cr>abc\x0d\ndef"), 3863);
+assertEquals("<crlf>abc", res[1308].exec("<crlf>abc\ndef"), 3864);
+assertEquals("<crlf>abc", res[1308].exec("<crlf>abc\x0ddef"), 3865);
+assertEquals("<crlf>abc", res[1308].exec("<crlf>abc\x0d\ndef"), 3866);
+assertEquals(null, res[1309].exec("abc\ndef", 3867));
+assertEquals(null, res[1309].exec("abc\x0ddef", 3868));
+assertEquals(null, res[1309].exec("abc\x0d\ndef", 3869));
+assertEquals("abc=xyz\\,", res[1310].exec("abc=xyz\\\npqr"), 3870);
+assertEquals("aaaa,a,", res[1311].exec("aaaa"), 3871);
+assertEquals("aaaa", res[1312].exec("aaaa"), 3872);
+assertEquals("aaaa,a,", res[1313].exec("aaaa"), 3873);
+assertEquals("aaaa", res[1314].exec("aaaa"), 3874);
+assertEquals(null, res[1317].exec("a\x0db", 3875));
+assertEquals(null, res[1317].exec("a\nb<cr> ", 3876));
+assertEquals(null, res[1317].exec("** Failers", 3877));
+assertEquals(null, res[1317].exec("a\nb", 3878));
+assertEquals(null, res[1317].exec("a\nb<any>", 3879));
+assertEquals(null, res[1317].exec("a\x0db<cr>   ", 3880));
+assertEquals(null, res[1317].exec("a\x0db<any>   ", 3881));
+assertEquals("abc1", res[1318].exec("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 \x85abc7 JUNK"), 3882);
+assertEquals("abc1", res[1319].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc9"), 3883);
+assertEquals(null, res[1320].exec("a\nb", 3884));
+assertEquals(null, res[1320].exec("a\x0db", 3885));
+assertEquals(null, res[1320].exec("a\x0d\nb", 3886));
+assertEquals(null, res[1320].exec("a\x0bb", 3887));
+assertEquals(null, res[1320].exec("a\x0cb", 3888));
+assertEquals(null, res[1320].exec("a\x85b   ", 3889));
+assertEquals(null, res[1320].exec("** Failers", 3890));
+assertEquals(null, res[1320].exec("a\n\x0db    ", 3891));
+assertEquals("ab", res[1321].exec("ab"), 3892);
+assertEquals(null, res[1321].exec("a\nb", 3893));
+assertEquals(null, res[1321].exec("a\x0db", 3894));
+assertEquals(null, res[1321].exec("a\x0d\nb", 3895));
+assertEquals(null, res[1321].exec("a\x0bb", 3896));
+assertEquals(null, res[1321].exec("a\x0cb", 3897));
+assertEquals(null, res[1321].exec("a\x85b   ", 3898));
+assertEquals(null, res[1321].exec("a\n\x0db    ", 3899));
+assertEquals(null, res[1321].exec("a\n\x0d\x85\x0cb ", 3900));
+assertEquals(null, res[1322].exec("a\nb", 3901));
+assertEquals(null, res[1322].exec("a\x0db", 3902));
+assertEquals(null, res[1322].exec("a\x0d\nb", 3903));
+assertEquals(null, res[1322].exec("a\x0bb", 3904));
+assertEquals(null, res[1322].exec("a\x0cb", 3905));
+assertEquals(null, res[1322].exec("a\x85b   ", 3906));
+assertEquals(null, res[1322].exec("a\n\x0db    ", 3907));
+assertEquals(null, res[1322].exec("a\n\x0d\x85\x0cb ", 3908));
+assertEquals(null, res[1322].exec("** Failers", 3909));
+assertEquals(null, res[1322].exec("ab  ", 3910));
+assertEquals(null, res[1323].exec("a\nb", 3911));
+assertEquals(null, res[1323].exec("a\n\x0db", 3912));
+assertEquals(null, res[1323].exec("a\n\x0d\x85b", 3913));
+assertEquals(null, res[1323].exec("a\x0d\n\x0d\nb ", 3914));
+assertEquals(null, res[1323].exec("a\x0d\n\x0d\n\x0d\nb ", 3915));
+assertEquals(null, res[1323].exec("a\n\x0d\n\x0db", 3916));
+assertEquals(null, res[1323].exec("a\n\n\x0d\nb ", 3917));
+assertEquals(null, res[1323].exec("** Failers", 3918));
+assertEquals(null, res[1323].exec("a\n\n\n\x0db", 3919));
+assertEquals(null, res[1323].exec("a\x0d", 3920));
+assertEquals("aRb", res[1324].exec("aRb"), 3921);
+assertEquals(null, res[1324].exec("** Failers", 3922));
+assertEquals(null, res[1324].exec("a\nb  ", 3923));
+assertEquals("afoo", res[1325].exec("afoo"), 3924);
+assertEquals(null, res[1325].exec("** Failers ", 3925));
+assertEquals(null, res[1325].exec("\x0d\nfoo ", 3926));
+assertEquals(null, res[1325].exec("\nfoo ", 3927));
+assertEquals("afoo", res[1326].exec("afoo"), 3928);
+assertEquals(null, res[1326].exec("\nfoo ", 3929));
+assertEquals(null, res[1326].exec("** Failers ", 3930));
+assertEquals(null, res[1326].exec("\x0d\nfoo ", 3931));
+assertEquals("afoo", res[1327].exec("afoo"), 3932);
+assertEquals(null, res[1327].exec("** Failers ", 3933));
+assertEquals(null, res[1327].exec("\nfoo ", 3934));
+assertEquals(null, res[1327].exec("\x0d\nfoo ", 3935));
+assertEquals("afoo", res[1328].exec("afoo"), 3936);
+assertEquals(null, res[1328].exec("\x0d\nfoo ", 3937));
+assertEquals(null, res[1328].exec("\nfoo ", 3938));
+assertEquals("", res[1329].exec("abc\x0d\x0dxyz"), 3939);
+assertEquals("", res[1329].exec("abc\n\x0dxyz  "), 3940);
+assertEquals(null, res[1329].exec("** Failers ", 3941));
+assertEquals("", res[1329].exec("abc\x0d\nxyz"), 3942);
+assertEquals("X", res[1330].exec("XABC"), 3943);
+assertEquals(null, res[1330].exec("** Failers ", 3944));
+assertEquals("X", res[1330].exec("XABCB"), 3945);
+assertEquals(null, res[1330].exec("abc\x0d\n\x0d\n", 3946));
+assertEquals(null, res[1330].exec("abc\x0d\n\x0d\n", 3947));
+assertEquals(null, res[1330].exec("abc\x0d\n\x0d\n", 3948));
 assertThrows("var re = /(?|(abc)|(xyz))/;", 3949);
 assertThrows("var re = /(x)(?|(abc)|(xyz))(x)/;", 3950);
-assertNull(res[1330].exec("xabcx", 3951));
-assertNull(res[1330].exec("xxyzx ", 3952));
+assertEquals(null, res[1330].exec("xabcx", 3951));
+assertEquals(null, res[1330].exec("xxyzx ", 3952));
 assertThrows("var re = /(x)(?|(abc)(pqr)|(xyz))(x)/;", 3953);
-assertNull(res[1330].exec("xabcpqrx", 3954));
-assertNull(res[1330].exec("xxyzx ", 3955));
-assertNull(res[1330].exec("abcabc", 3956));
-assertNull(res[1330].exec("xyzabc ", 3957));
-assertNull(res[1330].exec("** Failers ", 3958));
-assertNull(res[1330].exec("xyzxyz ", 3959));
-assertNull(res[1331].exec("X X\n", 3960));
-assertNull(res[1331].exec("X\x09X\x0b", 3961));
-assertNull(res[1331].exec("** Failers", 3962));
-assertNull(res[1331].exec("\xa0 X\n   ", 3963));
-assertNull(res[1332].exec("\x09 \xa0X\n\x0b\x0c\x0d\n", 3964));
-assertNull(res[1332].exec("\x09 \xa0\n\x0b\x0c\x0d\n", 3965));
-assertNull(res[1332].exec("\x09 \xa0\n\x0b\x0c", 3966));
-assertNull(res[1332].exec("** Failers ", 3967));
-assertNull(res[1332].exec("\x09 \xa0\n\x0b", 3968));
-assertNull(res[1332].exec(" ", 3969));
-assertNull(res[1333].exec("XY  ABCDE", 3970));
-assertNull(res[1333].exec("XY  PQR ST ", 3971));
-assertNull(res[1334].exec("XY  AB    PQRS", 3972));
-assertNull(res[1335].exec(">XNNNYZ", 3973));
-assertNull(res[1335].exec(">  X NYQZ", 3974));
-assertNull(res[1335].exec("** Failers", 3975));
-assertNull(res[1335].exec(">XYZ   ", 3976));
-assertNull(res[1335].exec(">  X NY Z", 3977));
-assertNull(res[1336].exec(">XY\nZ\nA\x0bNN\x0c", 3978));
-assertNull(res[1336].exec(">\n\x0dX\nY\n\x0bZZZ\nAAA\x0bNNN\x0c", 3979));
-assertNull(res[1337].exec("\x0d\nA", 3980));
-assertToStringEquals("\nA", res[1338].exec("\x0d\nA "), 3981);
-assertToStringEquals("\nA", res[1339].exec("\x0d\nA "), 3982);
-assertToStringEquals("\nA,\n", res[1340].exec("\x0d\nA "), 3983);
-assertNull(res[1341].exec("a\x0db", 3984));
-assertNull(res[1341].exec("a\nb", 3985));
-assertNull(res[1341].exec("a\x0d\nb", 3986));
-assertNull(res[1341].exec("** Failers", 3987));
-assertNull(res[1341].exec("a\x85b", 3988));
-assertNull(res[1341].exec("a\x0bb     ", 3989));
-assertNull(res[1342].exec("a\x0db", 3990));
-assertNull(res[1342].exec("a\nb", 3991));
-assertNull(res[1342].exec("a\x0d\nb", 3992));
-assertNull(res[1342].exec("a\x85b", 3993));
-assertNull(res[1342].exec("a\x0bb     ", 3994));
-assertNull(res[1342].exec("** Failers ", 3995));
-assertNull(res[1342].exec("a\x85b<bsr_anycrlf>", 3996));
-assertNull(res[1342].exec("a\x0bb<bsr_anycrlf>", 3997));
-assertNull(res[1343].exec("a\x0db", 3998));
-assertNull(res[1343].exec("a\nb", 3999));
-assertNull(res[1343].exec("a\x0d\nb", 4000));
-assertNull(res[1343].exec("** Failers", 4001));
-assertNull(res[1343].exec("a\x85b", 4002));
-assertNull(res[1343].exec("a\x0bb     ", 4003));
-assertNull(res[1344].exec("a\x0db", 4004));
-assertNull(res[1344].exec("a\nb", 4005));
-assertNull(res[1344].exec("a\x0d\nb", 4006));
-assertNull(res[1344].exec("a\x85b", 4007));
-assertNull(res[1344].exec("a\x0bb     ", 4008));
-assertNull(res[1344].exec("** Failers ", 4009));
-assertNull(res[1344].exec("a\x85b<bsr_anycrlf>", 4010));
-assertNull(res[1344].exec("a\x0bb<bsr_anycrlf>", 4011));
-assertNull(res[1345].exec("a\x0d\n\nb", 4012));
-assertNull(res[1345].exec("a\n\x0d\x0db", 4013));
-assertNull(res[1345].exec("a\x0d\n\x0d\n\x0d\n\x0d\nb", 4014));
-assertNull(res[1345].exec("** Failers", 4015));
-assertNull(res[1345].exec("a\x8585b", 4016));
-assertNull(res[1345].exec("a\x0b\x00bb     ", 4017));
-assertNull(res[1346].exec("a\x0d\x0db", 4018));
-assertNull(res[1346].exec("a\n\n\nb", 4019));
-assertNull(res[1346].exec("a\x0d\n\n\x0d\x0db", 4020));
-assertNull(res[1346].exec("a\x8585b", 4021));
-assertNull(res[1346].exec("a\x0b\x00bb     ", 4022));
-assertNull(res[1346].exec("** Failers ", 4023));
-assertNull(res[1346].exec("a\x0d\x0d\x0d\x0d\x0db ", 4024));
-assertNull(res[1346].exec("a\x8585b<bsr_anycrlf>", 4025));
-assertNull(res[1346].exec("a\x0b\x00bb<bsr_anycrlf>", 4026));
-assertToStringEquals("abc", res[1347].exec("abc "), 4027);
-assertNull(res[1348].exec("** Failers", 4028));
-assertNull(res[1348].exec("ab", 4029));
-assertNull(res[1349].exec("** Failers", 4030));
-assertNull(res[1349].exec("ab ", 4031));
-assertNull(res[1349].exec("** Failers", 4032));
-assertNull(res[1349].exec("ab ", 4033));
-assertToStringEquals("aXb", res[1350].exec("aXb"), 4034);
-assertToStringEquals("a\nb", res[1350].exec("a\nb "), 4035);
-assertNull(res[1350].exec("** Failers", 4036));
-assertNull(res[1350].exec("ab  ", 4037));
-assertToStringEquals("aXb", res[1351].exec("aXb"), 4038);
-assertToStringEquals("a\nX\nXb", res[1351].exec("a\nX\nXb "), 4039);
-assertNull(res[1351].exec("** Failers", 4040));
-assertNull(res[1351].exec("ab  ", 4041));
-assertNull(res[1352].exec("ab", 4042));
-assertNull(res[1352].exec("ax{100}b  ", 4043));
-assertNull(res[1352].exec("ax{100}x{100}b  ", 4044));
-assertNull(res[1352].exec("ax{100}b  ", 4045));
-assertNull(res[1352].exec("ax{100}x{100}b  ", 4046));
-assertNull(res[1352].exec("*** Failers ", 4047));
-assertNull(res[1352].exec("ab", 4048));
-assertNull(res[1352].exec(" ", 4049));
-assertToStringEquals("X", res[1353].exec("Xoanon"), 4050);
-assertToStringEquals("X", res[1353].exec("+Xoanon"), 4051);
-assertToStringEquals("X", res[1353].exec("x{300}Xoanon "), 4052);
-assertNull(res[1353].exec("*** Failers ", 4053));
-assertNull(res[1353].exec("YXoanon  ", 4054));
-assertToStringEquals("X", res[1354].exec("YXoanon"), 4055);
-assertNull(res[1354].exec("*** Failers", 4056));
-assertNull(res[1354].exec("Xoanon", 4057));
-assertNull(res[1354].exec("+Xoanon    ", 4058));
-assertNull(res[1354].exec("x{300}Xoanon ", 4059));
-assertToStringEquals("X", res[1355].exec("X+oanon"), 4060);
-assertNull(res[1355].exec("ZXx{300}oanon ", 4061));
-assertToStringEquals("X", res[1355].exec("FAX "), 4062);
-assertNull(res[1355].exec("*** Failers ", 4063));
-assertNull(res[1355].exec("Xoanon  ", 4064));
-assertToStringEquals("X", res[1356].exec("Xoanon  "), 4065);
-assertNull(res[1356].exec("*** Failers", 4066));
-assertNull(res[1356].exec("X+oanon", 4067));
-assertToStringEquals("X", res[1356].exec("ZXx{300}oanon "), 4068);
-assertNull(res[1356].exec("FAX ", 4069));
-assertToStringEquals("b", res[1357].exec("abcd"), 4070);
-assertToStringEquals("x", res[1357].exec("ax{100}   "), 4071);
-assertToStringEquals("b", res[1357].exec("ab99"), 4072);
-assertToStringEquals("x", res[1357].exec("x{123}x{123}45"), 4073);
-assertToStringEquals("x", res[1357].exec("x{400}x{401}x{402}6  "), 4074);
-assertToStringEquals("*", res[1357].exec("*** Failers"), 4075);
-assertToStringEquals("d", res[1357].exec("d99"), 4076);
-assertToStringEquals("x", res[1357].exec("x{123}x{122}4   "), 4077);
-assertToStringEquals("x", res[1357].exec("x{400}x{403}6  "), 4078);
-assertToStringEquals("x", res[1357].exec("x{400}x{401}x{402}x{402}6  "), 4079);
-assertNull(res[1358].exec("\ufffd]", 4080));
-assertNull(res[1358].exec("\ufffd", 4081));
-assertNull(res[1358].exec("\ufffd\ufffd\ufffd", 4082));
-assertNull(res[1358].exec("\ufffd\ufffd\ufffd?", 4083));
-assertToStringEquals("acb", res[1359].exec("acb"), 4084);
-assertToStringEquals("ab", res[1359].exec("ab"), 4085);
-assertNull(res[1359].exec("ax{100}b ", 4086));
-assertNull(res[1359].exec("*** Failers", 4087));
-assertNull(res[1359].exec("a\nb  ", 4088));
-assertNull(res[1360].exec("ax{4000}xyb ", 4089));
-assertNull(res[1360].exec("ax{4000}yb ", 4090));
-assertNull(res[1360].exec("ax{4000}x{100}yb ", 4091));
-assertNull(res[1360].exec("*** Failers", 4092));
-assertNull(res[1360].exec("ax{4000}b ", 4093));
-assertNull(res[1360].exec("ac\ncb ", 4094));
-assertToStringEquals("a\xc0,,\xc0", res[1361].exec("a\xc0\x88b"), 4095);
-assertToStringEquals("ax,,x", res[1362].exec("ax{100}b"), 4096);
-assertToStringEquals("a\xc0\x88b,\xc0\x88,b", res[1363].exec("a\xc0\x88b"), 4097);
-assertToStringEquals("ax{100}b,x{100},b", res[1364].exec("ax{100}b"), 4098);
-assertToStringEquals("a\xc0\x92,\xc0,\x92", res[1365].exec("a\xc0\x92bcd"), 4099);
-assertToStringEquals("ax{,x,{", res[1366].exec("ax{240}bcd"), 4100);
-assertToStringEquals("a\xc0\x92,\xc0,\x92", res[1367].exec("a\xc0\x92bcd"), 4101);
-assertToStringEquals("ax{,x,{", res[1368].exec("ax{240}bcd"), 4102);
-assertToStringEquals("a\xc0,,\xc0", res[1369].exec("a\xc0\x92bcd"), 4103);
-assertToStringEquals("ax,,x", res[1370].exec("ax{240}bcd"), 4104);
-assertNull(res[1371].exec("ax{1234}xyb ", 4105));
-assertNull(res[1371].exec("ax{1234}x{4321}yb ", 4106));
-assertNull(res[1371].exec("ax{1234}x{4321}x{3412}b ", 4107));
-assertNull(res[1371].exec("*** Failers", 4108));
-assertNull(res[1371].exec("ax{1234}b ", 4109));
-assertNull(res[1371].exec("ac\ncb ", 4110));
-assertToStringEquals("ax{1234}xyb,x{1234}xy", res[1372].exec("ax{1234}xyb "), 4111);
-assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[1372].exec("ax{1234}x{4321}yb "), 4112);
-assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[1372].exec("ax{1234}x{4321}x{3412}b "), 4113);
-assertToStringEquals("axxxxbcdefghijb,xxxxbcdefghij", res[1372].exec("axxxxbcdefghijb "), 4114);
-assertToStringEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[1372].exec("ax{1234}x{4321}x{3412}x{3421}b "), 4115);
-assertNull(res[1372].exec("*** Failers", 4116));
-assertToStringEquals("ax{1234}b,x{1234}", res[1372].exec("ax{1234}b "), 4117);
-assertToStringEquals("ax{1234}xyb,x{1234}xy", res[1373].exec("ax{1234}xyb "), 4118);
-assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[1373].exec("ax{1234}x{4321}yb "), 4119);
-assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[1373].exec("ax{1234}x{4321}x{3412}b "), 4120);
-assertToStringEquals("axxxxb,xxxx", res[1373].exec("axxxxbcdefghijb "), 4121);
-assertToStringEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[1373].exec("ax{1234}x{4321}x{3412}x{3421}b "), 4122);
-assertNull(res[1373].exec("*** Failers", 4123));
-assertToStringEquals("ax{1234}b,x{1234}", res[1373].exec("ax{1234}b "), 4124);
-assertNull(res[1374].exec("ax{1234}xyb ", 4125));
-assertNull(res[1374].exec("ax{1234}x{4321}yb ", 4126));
-assertNull(res[1374].exec("ax{1234}x{4321}x{3412}b ", 4127));
-assertToStringEquals("axxxxb,xxxx", res[1374].exec("axxxxbcdefghijb "), 4128);
-assertNull(res[1374].exec("ax{1234}x{4321}x{3412}x{3421}b ", 4129));
-assertToStringEquals("axbxxb,xbxx", res[1374].exec("axbxxbcdefghijb "), 4130);
-assertToStringEquals("axxxxxb,xxxxx", res[1374].exec("axxxxxbcdefghijb "), 4131);
-assertNull(res[1374].exec("*** Failers", 4132));
-assertNull(res[1374].exec("ax{1234}b ", 4133));
-assertNull(res[1374].exec("axxxxxxbcdefghijb ", 4134));
-assertNull(res[1375].exec("ax{1234}xyb ", 4135));
-assertNull(res[1375].exec("ax{1234}x{4321}yb ", 4136));
-assertNull(res[1375].exec("ax{1234}x{4321}x{3412}b ", 4137));
-assertToStringEquals("axxxxb,xxxx", res[1375].exec("axxxxbcdefghijb "), 4138);
-assertNull(res[1375].exec("ax{1234}x{4321}x{3412}x{3421}b ", 4139));
-assertToStringEquals("axbxxb,xbxx", res[1375].exec("axbxxbcdefghijb "), 4140);
-assertToStringEquals("axxxxxb,xxxxx", res[1375].exec("axxxxxbcdefghijb "), 4141);
-assertNull(res[1375].exec("*** Failers", 4142));
-assertNull(res[1375].exec("ax{1234}b ", 4143));
-assertNull(res[1375].exec("axxxxxxbcdefghijb ", 4144));
-assertNull(res[1375].exec("*** Failers", 4145));
-assertNull(res[1375].exec("x{100}", 4146));
-assertNull(res[1375].exec("aXbcd", 4147));
-assertNull(res[1375].exec("ax{100}bcd", 4148));
-assertNull(res[1375].exec("ax{100000}bcd", 4149));
-assertNull(res[1375].exec("x{100}x{100}x{100}b", 4150));
-assertNull(res[1375].exec("*** Failers ", 4151));
-assertNull(res[1375].exec("x{100}x{100}b", 4152));
-assertNull(res[1375].exec("x{ab} ", 4153));
-assertNull(res[1375].exec("\xc2\xab", 4154));
-assertNull(res[1375].exec("*** Failers ", 4155));
-assertNull(res[1375].exec("\x00{ab}", 4156));
-assertNull(res[1375].exec("WXYZ", 4157));
-assertNull(res[1375].exec("x{256}XYZ ", 4158));
-assertNull(res[1375].exec("*** Failers", 4159));
-assertNull(res[1375].exec("XYZ ", 4160));
-assertToStringEquals("bcd", res[1376].exec("bcd"), 4161);
-assertToStringEquals("00}", res[1376].exec("x{100}aYx{256}Z "), 4162);
-assertToStringEquals("x{", res[1377].exec("x{100}bc"), 4163);
-assertToStringEquals("x{100}bcA", res[1378].exec("x{100}bcAa"), 4164);
-assertToStringEquals("x{", res[1379].exec("x{100}bca"), 4165);
-assertToStringEquals("bcd", res[1380].exec("bcd"), 4166);
-assertToStringEquals("00}", res[1380].exec("x{100}aYx{256}Z "), 4167);
-assertToStringEquals("x{", res[1381].exec("x{100}bc"), 4168);
-assertToStringEquals("x{100}bc", res[1382].exec("x{100}bcAa"), 4169);
-assertToStringEquals("x{", res[1383].exec("x{100}bca"), 4170);
-assertNull(res[1383].exec("abcd", 4171));
-assertNull(res[1383].exec("abcd", 4172));
-assertToStringEquals("x{", res[1383].exec("x{100}x{100} "), 4173);
-assertToStringEquals("x{", res[1383].exec("x{100}x{100} "), 4174);
-assertToStringEquals("x{", res[1383].exec("x{100}x{100}x{100}x{100} "), 4175);
-assertNull(res[1383].exec("abce", 4176));
-assertToStringEquals("x{", res[1383].exec("x{100}x{100}x{100}x{100} "), 4177);
-assertNull(res[1383].exec("abcdx{100}x{100}x{100}x{100} ", 4178));
-assertNull(res[1383].exec("abcdx{100}x{100}x{100}x{100} ", 4179));
-assertNull(res[1383].exec("abcdx{100}x{100}x{100}x{100} ", 4180));
-assertNull(res[1383].exec("abcdx{100}x{100}x{100}XX", 4181));
-assertNull(res[1383].exec("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX", 4182));
-assertNull(res[1383].exec("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX", 4183));
-assertToStringEquals("Xy", res[1383].exec("Xyyyax{100}x{100}bXzzz"), 4184);
-assertToStringEquals("X", res[1386].exec("1X2"), 4185);
-assertToStringEquals("x", res[1386].exec("1x{100}2 "), 4186);
-assertToStringEquals(">X", res[1387].exec("> >X Y"), 4187);
-assertToStringEquals(">x", res[1387].exec("> >x{100} Y"), 4188);
-assertToStringEquals("1", res[1388].exec("x{100}3"), 4189);
-assertToStringEquals(" ", res[1389].exec("x{100} X"), 4190);
-assertToStringEquals("abcd", res[1390].exec("12abcd34"), 4191);
-assertToStringEquals("*** Failers", res[1390].exec("*** Failers"), 4192);
-assertToStringEquals("  ", res[1390].exec("1234  "), 4193);
-assertToStringEquals("abc", res[1391].exec("12abcd34"), 4194);
-assertToStringEquals("ab", res[1391].exec("12ab34"), 4195);
-assertToStringEquals("***", res[1391].exec("*** Failers  "), 4196);
-assertNull(res[1391].exec("1234", 4197));
-assertToStringEquals("  ", res[1391].exec("12a34  "), 4198);
-assertToStringEquals("ab", res[1392].exec("12abcd34"), 4199);
-assertToStringEquals("ab", res[1392].exec("12ab34"), 4200);
-assertToStringEquals("**", res[1392].exec("*** Failers  "), 4201);
-assertNull(res[1392].exec("1234", 4202));
-assertToStringEquals("  ", res[1392].exec("12a34  "), 4203);
-assertToStringEquals("12", res[1393].exec("12abcd34"), 4204);
-assertNull(res[1393].exec("*** Failers", 4205));
-assertToStringEquals("12", res[1394].exec("12abcd34"), 4206);
-assertToStringEquals("123", res[1394].exec("1234abcd"), 4207);
-assertNull(res[1394].exec("*** Failers  ", 4208));
-assertNull(res[1394].exec("1.4 ", 4209));
-assertToStringEquals("12", res[1395].exec("12abcd34"), 4210);
-assertToStringEquals("12", res[1395].exec("1234abcd"), 4211);
-assertNull(res[1395].exec("*** Failers  ", 4212));
-assertNull(res[1395].exec("1.4 ", 4213));
-assertToStringEquals("12abcd34", res[1396].exec("12abcd34"), 4214);
-assertToStringEquals("***", res[1396].exec("*** Failers"), 4215);
-assertNull(res[1396].exec("     ", 4216));
-assertToStringEquals("12a", res[1397].exec("12abcd34"), 4217);
-assertToStringEquals("123", res[1397].exec("1234abcd"), 4218);
-assertToStringEquals("***", res[1397].exec("*** Failers"), 4219);
-assertNull(res[1397].exec("       ", 4220));
-assertToStringEquals("12", res[1398].exec("12abcd34"), 4221);
-assertToStringEquals("12", res[1398].exec("1234abcd"), 4222);
-assertToStringEquals("**", res[1398].exec("*** Failers"), 4223);
-assertNull(res[1398].exec("       ", 4224));
-assertToStringEquals(">      <", res[1399].exec("12>      <34"), 4225);
-assertNull(res[1399].exec("*** Failers", 4226));
-assertToStringEquals(">  <", res[1400].exec("ab>  <cd"), 4227);
-assertToStringEquals(">   <", res[1400].exec("ab>   <ce"), 4228);
-assertNull(res[1400].exec("*** Failers", 4229));
-assertNull(res[1400].exec("ab>    <cd ", 4230));
-assertToStringEquals(">  <", res[1401].exec("ab>  <cd"), 4231);
-assertToStringEquals(">   <", res[1401].exec("ab>   <ce"), 4232);
-assertNull(res[1401].exec("*** Failers", 4233));
-assertNull(res[1401].exec("ab>    <cd ", 4234));
-assertToStringEquals("12", res[1402].exec("12      34"), 4235);
-assertToStringEquals("Failers", res[1402].exec("*** Failers"), 4236);
-assertNull(res[1402].exec("+++=*! ", 4237));
-assertToStringEquals("ab", res[1403].exec("ab  cd"), 4238);
-assertToStringEquals("abc", res[1403].exec("abcd ce"), 4239);
-assertToStringEquals("Fai", res[1403].exec("*** Failers"), 4240);
-assertNull(res[1403].exec("a.b.c", 4241));
-assertToStringEquals("ab", res[1404].exec("ab  cd"), 4242);
-assertToStringEquals("ab", res[1404].exec("abcd ce"), 4243);
-assertToStringEquals("Fa", res[1404].exec("*** Failers"), 4244);
-assertNull(res[1404].exec("a.b.c", 4245));
-assertToStringEquals("====", res[1405].exec("12====34"), 4246);
-assertToStringEquals("*** ", res[1405].exec("*** Failers"), 4247);
-assertToStringEquals(" ", res[1405].exec("abcd "), 4248);
-assertToStringEquals("===", res[1406].exec("ab====cd"), 4249);
-assertToStringEquals("==", res[1406].exec("ab==cd"), 4250);
-assertToStringEquals("***", res[1406].exec("*** Failers"), 4251);
-assertNull(res[1406].exec("a.b.c", 4252));
-assertToStringEquals("==", res[1407].exec("ab====cd"), 4253);
-assertToStringEquals("==", res[1407].exec("ab==cd"), 4254);
-assertToStringEquals("**", res[1407].exec("*** Failers"), 4255);
-assertNull(res[1407].exec("a.b.c", 4256));
-assertNull(res[1407].exec("x{100}", 4257));
-assertNull(res[1407].exec("Zx{100}", 4258));
-assertNull(res[1407].exec("x{100}Z", 4259));
-assertToStringEquals("**", res[1407].exec("*** Failers "), 4260);
-assertNull(res[1407].exec("Zx{100}", 4261));
-assertNull(res[1407].exec("x{100}", 4262));
-assertNull(res[1407].exec("x{100}Z", 4263));
-assertToStringEquals("**", res[1407].exec("*** Failers "), 4264);
-assertNull(res[1407].exec("abcx{200}X", 4265));
-assertNull(res[1407].exec("abcx{100}X ", 4266));
-assertToStringEquals("**", res[1407].exec("*** Failers"), 4267);
-assertToStringEquals("  ", res[1407].exec("X  "), 4268);
-assertNull(res[1407].exec("abcx{200}X", 4269));
-assertNull(res[1407].exec("abcx{100}X ", 4270));
-assertNull(res[1407].exec("abQX ", 4271));
-assertToStringEquals("**", res[1407].exec("*** Failers"), 4272);
-assertToStringEquals("  ", res[1407].exec("X  "), 4273);
-assertNull(res[1407].exec("abcx{100}x{200}x{100}X", 4274));
-assertToStringEquals("**", res[1407].exec("*** Failers"), 4275);
-assertNull(res[1407].exec("abcx{200}X", 4276));
-assertToStringEquals("  ", res[1407].exec("X  "), 4277);
-assertNull(res[1407].exec("AX", 4278));
-assertNull(res[1407].exec("x{150}X", 4279));
-assertNull(res[1407].exec("x{500}X ", 4280));
-assertToStringEquals("**", res[1407].exec("*** Failers"), 4281);
-assertNull(res[1407].exec("x{100}X", 4282));
-assertToStringEquals("  ", res[1407].exec("x{200}X   "), 4283);
-assertNull(res[1407].exec("AX", 4284));
-assertNull(res[1407].exec("x{150}X", 4285));
-assertNull(res[1407].exec("x{500}X ", 4286));
-assertToStringEquals("**", res[1407].exec("*** Failers"), 4287);
-assertNull(res[1407].exec("x{100}X", 4288));
-assertToStringEquals("  ", res[1407].exec("x{200}X   "), 4289);
-assertNull(res[1407].exec("QX ", 4290));
-assertNull(res[1407].exec("AX", 4291));
-assertNull(res[1407].exec("x{500}X ", 4292));
-assertToStringEquals("**", res[1407].exec("*** Failers"), 4293);
-assertNull(res[1407].exec("x{100}X", 4294));
-assertNull(res[1407].exec("x{150}X", 4295));
-assertToStringEquals("  ", res[1407].exec("x{200}X   "), 4296);
-assertNull(res[1407].exec("z", 4297));
-assertNull(res[1407].exec("Z ", 4298));
-assertNull(res[1407].exec("x{100}", 4299));
-assertToStringEquals("**", res[1407].exec("*** Failers"), 4300);
-assertNull(res[1407].exec("x{102}", 4301));
-assertToStringEquals("  ", res[1407].exec("y    "), 4302);
-assertToStringEquals("\xff", res[1408].exec(">\xff<"), 4303);
-assertNull(res[1409].exec(">x{ff}<", 4304));
-assertToStringEquals("X", res[1410].exec("XYZ"), 4305);
-assertToStringEquals("X", res[1411].exec("XYZ"), 4306);
-assertToStringEquals("x", res[1411].exec("x{123} "), 4307);
-assertToStringEquals(",", res[1416].exec("catac"), 4308);
-assertToStringEquals(",", res[1416].exec("ax{256}a "), 4309);
-assertToStringEquals(",", res[1416].exec("x{85}"), 4310);
-assertToStringEquals("abc1", res[1417].exec("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 x{0085}abc7 x{2028}abc8 x{2029}abc9 JUNK"), 4311);
-assertToStringEquals("abc1", res[1418].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6x{0085} abc7x{2028} abc8x{2029} abc9"), 4312);
-assertNull(res[1419].exec("a\nb", 4313));
-assertNull(res[1419].exec("a\x0db", 4314));
-assertNull(res[1419].exec("a\x0d\nb", 4315));
-assertNull(res[1419].exec("a\x0bb", 4316));
-assertNull(res[1419].exec("a\x0cb", 4317));
-assertNull(res[1419].exec("ax{85}b   ", 4318));
-assertNull(res[1419].exec("ax{2028}b ", 4319));
-assertNull(res[1419].exec("ax{2029}b ", 4320));
-assertNull(res[1419].exec("** Failers", 4321));
-assertNull(res[1419].exec("a\n\x0db    ", 4322));
-assertToStringEquals("ab", res[1420].exec("ab"), 4323);
-assertNull(res[1420].exec("a\nb", 4324));
-assertNull(res[1420].exec("a\x0db", 4325));
-assertNull(res[1420].exec("a\x0d\nb", 4326));
-assertNull(res[1420].exec("a\x0bb", 4327));
-assertNull(res[1420].exec("a\x0cx{2028}x{2029}b", 4328));
-assertNull(res[1420].exec("ax{85}b   ", 4329));
-assertNull(res[1420].exec("a\n\x0db    ", 4330));
-assertNull(res[1420].exec("a\n\x0dx{85}\x0cb ", 4331));
-assertNull(res[1421].exec("a\nb", 4332));
-assertNull(res[1421].exec("a\x0db", 4333));
-assertNull(res[1421].exec("a\x0d\nb", 4334));
-assertNull(res[1421].exec("a\x0bb", 4335));
-assertNull(res[1421].exec("a\x0cx{2028}x{2029}b", 4336));
-assertNull(res[1421].exec("ax{85}b   ", 4337));
-assertNull(res[1421].exec("a\n\x0db    ", 4338));
-assertNull(res[1421].exec("a\n\x0dx{85}\x0cb ", 4339));
-assertNull(res[1421].exec("** Failers", 4340));
-assertNull(res[1421].exec("ab  ", 4341));
-assertNull(res[1422].exec("a\nb", 4342));
-assertNull(res[1422].exec("a\n\x0db", 4343));
-assertNull(res[1422].exec("a\n\x0dx{85}b", 4344));
-assertNull(res[1422].exec("a\x0d\n\x0d\nb ", 4345));
-assertNull(res[1422].exec("a\x0d\n\x0d\n\x0d\nb ", 4346));
-assertNull(res[1422].exec("a\n\x0d\n\x0db", 4347));
-assertNull(res[1422].exec("a\n\n\x0d\nb ", 4348));
-assertNull(res[1422].exec("** Failers", 4349));
-assertNull(res[1422].exec("a\n\n\n\x0db", 4350));
-assertNull(res[1422].exec("a\x0d", 4351));
-assertNull(res[1423].exec("\x09 x{a0}X\n\x0b\x0c\x0d\n", 4352));
-assertNull(res[1424].exec(" x{a0}X\n\x0b\x0c\x0d\n", 4353));
-assertNull(res[1425].exec(">\x09 x{a0}X\n\n\n<", 4354));
-assertNull(res[1426].exec(">\x09 x{a0}X\n\n\n<", 4355));
-assertNull(res[1427].exec("X X\n", 4356));
-assertNull(res[1427].exec("X\x09X\x0b", 4357));
-assertNull(res[1427].exec("** Failers", 4358));
-assertNull(res[1427].exec("x{a0} X\n   ", 4359));
-assertNull(res[1428].exec("\x09 x{a0}X\n\x0b\x0c\x0d\n", 4360));
-assertNull(res[1428].exec("\x09 x{a0}\n\x0b\x0c\x0d\n", 4361));
-assertNull(res[1428].exec("\x09 x{a0}\n\x0b\x0c", 4362));
-assertNull(res[1428].exec("** Failers ", 4363));
-assertNull(res[1428].exec("\x09 x{a0}\n\x0b", 4364));
-assertNull(res[1428].exec(" ", 4365));
-assertNull(res[1429].exec("x{3001}x{3000}x{2030}x{2028}", 4366));
-assertNull(res[1429].exec("Xx{180e}Xx{85}", 4367));
-assertNull(res[1429].exec("** Failers", 4368));
-assertNull(res[1429].exec("x{2009} X\n   ", 4369));
-assertNull(res[1430].exec("x{1680}x{180e}x{2007}Xx{2028}x{2029}\x0c\x0d\n", 4370));
-assertNull(res[1430].exec("\x09x{205f}x{a0}\nx{2029}\x0cx{2028}\n", 4371));
-assertNull(res[1430].exec("\x09 x{202f}\n\x0b\x0c", 4372));
-assertNull(res[1430].exec("** Failers ", 4373));
-assertNull(res[1430].exec("\x09x{200a}x{a0}x{2028}\x0b", 4374));
-assertNull(res[1430].exec(" ", 4375));
-assertNull(res[1431].exec("a\x0db", 4376));
-assertNull(res[1431].exec("a\nb", 4377));
-assertNull(res[1431].exec("a\x0d\nb", 4378));
-assertNull(res[1431].exec("** Failers", 4379));
-assertNull(res[1431].exec("ax{85}b", 4380));
-assertNull(res[1431].exec("a\x0bb     ", 4381));
-assertNull(res[1432].exec("a\x0db", 4382));
-assertNull(res[1432].exec("a\nb", 4383));
-assertNull(res[1432].exec("a\x0d\nb", 4384));
-assertNull(res[1432].exec("ax{85}b", 4385));
-assertNull(res[1432].exec("a\x0bb     ", 4386));
-assertNull(res[1432].exec("** Failers ", 4387));
-assertNull(res[1432].exec("ax{85}b<bsr_anycrlf>", 4388));
-assertNull(res[1432].exec("a\x0bb<bsr_anycrlf>", 4389));
-assertNull(res[1433].exec("a\x0db", 4390));
-assertNull(res[1433].exec("a\nb", 4391));
-assertNull(res[1433].exec("a\x0d\nb", 4392));
-assertNull(res[1433].exec("** Failers", 4393));
-assertNull(res[1433].exec("ax{85}b", 4394));
-assertNull(res[1433].exec("a\x0bb     ", 4395));
-assertNull(res[1434].exec("a\x0db", 4396));
-assertNull(res[1434].exec("a\nb", 4397));
-assertNull(res[1434].exec("a\x0d\nb", 4398));
-assertNull(res[1434].exec("ax{85}b", 4399));
-assertNull(res[1434].exec("a\x0bb     ", 4400));
-assertNull(res[1434].exec("** Failers ", 4401));
-assertNull(res[1434].exec("ax{85}b<bsr_anycrlf>", 4402));
-assertNull(res[1434].exec("a\x0bb<bsr_anycrlf>", 4403));
-assertToStringEquals("X", res[1435].exec("Ax{1ec5}ABCXYZ"), 4404);
-assertNull(res[1437].exec("AB", 4405));
-assertNull(res[1437].exec("*** Failers", 4406));
-assertNull(res[1437].exec("A0", 4407));
-assertNull(res[1437].exec("00   ", 4408));
-assertNull(res[1438].exec("AB", 4409));
-assertNull(res[1438].exec("Ax{300}BC ", 4410));
-assertNull(res[1438].exec("Ax{300}x{301}x{302}BC ", 4411));
-assertNull(res[1438].exec("*** Failers", 4412));
-assertNull(res[1438].exec("x{300}  ", 4413));
-assertNull(res[1439].exec("ABC", 4414));
-assertNull(res[1439].exec("Ax{300}Bx{300}x{301}C ", 4415));
-assertNull(res[1439].exec("Ax{300}x{301}x{302}BC ", 4416));
-assertNull(res[1439].exec("*** Failers", 4417));
-assertNull(res[1439].exec("x{300}  ", 4418));
-assertNull(res[1440].exec("abcd", 4419));
-assertNull(res[1440].exec("a ", 4420));
-assertNull(res[1440].exec("*** Failers ", 4421));
-assertNull(res[1441].exec("1234", 4422));
-assertNull(res[1441].exec("= ", 4423));
-assertNull(res[1441].exec("*** Failers ", 4424));
-assertNull(res[1441].exec("abcd ", 4425));
-assertNull(res[1442].exec("abcdAx{300}x{301}x{302}", 4426));
-assertNull(res[1442].exec("Ax{300}x{301}x{302}", 4427));
-assertNull(res[1442].exec("Ax{300}x{301}x{302}Ax{300}x{301}x{302}", 4428));
-assertNull(res[1442].exec("a ", 4429));
-assertNull(res[1442].exec("*** Failers ", 4430));
-assertNull(res[1442].exec("x{300}x{301}x{302}", 4431));
-assertToStringEquals("abc", res[1443].exec("abc"), 4432);
-assertToStringEquals("abc", res[1443].exec("Ax{300}abc"), 4433);
-assertToStringEquals("abc", res[1443].exec("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz"), 4434);
-assertToStringEquals("abc", res[1443].exec("x{300}abc  "), 4435);
-assertNull(res[1443].exec("*** Failers", 4436));
-assertToStringEquals("abc", res[1444].exec("abc"), 4437);
-assertNull(res[1444].exec("Ax{300}abc", 4438));
-assertNull(res[1444].exec("*** Failers", 4439));
-assertNull(res[1444].exec("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz", 4440));
-assertNull(res[1444].exec("x{300}abc  ", 4441));
-assertToStringEquals("abc", res[1445].exec("abc"), 4442);
-assertToStringEquals("abc", res[1445].exec("Ax{300}abc"), 4443);
-assertToStringEquals("abc", res[1445].exec("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz"), 4444);
-assertToStringEquals("abc", res[1445].exec("x{300}abc  "), 4445);
-assertNull(res[1445].exec("*** Failers", 4446));
-assertToStringEquals("abc", res[1446].exec("abc"), 4447);
-assertNull(res[1446].exec("Ax{300}abc", 4448));
-assertNull(res[1446].exec("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz", 4449));
-assertNull(res[1446].exec("*** Failers", 4450));
-assertNull(res[1446].exec("x{300}abc  ", 4451));
-assertNull(res[1447].exec("A=b", 4452));
-assertNull(res[1447].exec("=c ", 4453));
-assertNull(res[1447].exec("*** Failers", 4454));
-assertNull(res[1447].exec("1=2 ", 4455));
-assertNull(res[1447].exec("AAAA=b  ", 4456));
-assertNull(res[1448].exec("AAAA=b", 4457));
-assertNull(res[1448].exec("=c ", 4458));
-assertNull(res[1448].exec("*** Failers", 4459));
-assertNull(res[1448].exec("1=2  ", 4460));
-assertNull(res[1449].exec("Ax{300}x{301}x{302}Ax{300}x{301}x{302}X", 4461));
-assertNull(res[1449].exec("Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}X ", 4462));
-assertNull(res[1449].exec("*** Failers", 4463));
-assertNull(res[1449].exec("X", 4464));
-assertNull(res[1449].exec("Ax{300}x{301}x{302}X", 4465));
-assertNull(res[1449].exec("Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}X", 4466));
-assertNull(res[1450].exec("x{c0}x{30f}x{660}x{66c}x{f01}x{1680}<", 4467));
-assertNull(res[1450].exec("\npx{300}9!$ < ", 4468));
-assertNull(res[1450].exec("** Failers ", 4469));
-assertNull(res[1450].exec("apx{300}9!$ < ", 4470));
-assertNull(res[1451].exec("X", 4471));
-assertNull(res[1451].exec("** Failers ", 4472));
-assertNull(res[1451].exec("", 4473));
-assertNull(res[1452].exec("9", 4474));
-assertNull(res[1452].exec("** Failers ", 4475));
-assertNull(res[1452].exec("x{c0}", 4476));
-assertNull(res[1453].exec("X", 4477));
-assertNull(res[1453].exec("** Failers ", 4478));
-assertNull(res[1453].exec("x{30f}", 4479));
-assertNull(res[1454].exec("X", 4480));
-assertNull(res[1454].exec("** Failers ", 4481));
-assertNull(res[1454].exec("x{660}", 4482));
-assertNull(res[1455].exec("X", 4483));
-assertNull(res[1455].exec("** Failers ", 4484));
-assertNull(res[1455].exec("x{66c}", 4485));
-assertNull(res[1456].exec("X", 4486));
-assertNull(res[1456].exec("** Failers ", 4487));
-assertNull(res[1456].exec("x{f01}", 4488));
-assertNull(res[1457].exec("X", 4489));
-assertNull(res[1457].exec("** Failers ", 4490));
-assertNull(res[1457].exec("x{1680}", 4491));
-assertNull(res[1458].exec("x{017}", 4492));
-assertNull(res[1458].exec("x{09f} ", 4493));
-assertNull(res[1458].exec("** Failers", 4494));
-assertNull(res[1458].exec("x{0600} ", 4495));
-assertNull(res[1459].exec("x{601}", 4496));
-assertNull(res[1459].exec("** Failers", 4497));
-assertNull(res[1459].exec("x{09f} ", 4498));
-assertNull(res[1460].exec("** Failers", 4499));
-assertNull(res[1460].exec("x{09f} ", 4500));
-assertNull(res[1461].exec("x{f8ff}", 4501));
-assertNull(res[1461].exec("** Failers", 4502));
-assertNull(res[1461].exec("x{09f} ", 4503));
-assertNull(res[1462].exec("?x{dfff}", 4504));
-assertNull(res[1462].exec("** Failers", 4505));
-assertNull(res[1462].exec("x{09f} ", 4506));
-assertNull(res[1463].exec("a", 4507));
-assertNull(res[1463].exec("** Failers ", 4508));
-assertNull(res[1463].exec("Z", 4509));
-assertNull(res[1463].exec("x{e000}  ", 4510));
-assertNull(res[1464].exec("x{2b0}", 4511));
-assertNull(res[1464].exec("** Failers", 4512));
-assertNull(res[1464].exec("a ", 4513));
-assertNull(res[1465].exec("x{1bb}", 4514));
-assertNull(res[1465].exec("** Failers", 4515));
-assertNull(res[1465].exec("a ", 4516));
-assertNull(res[1465].exec("x{2b0}", 4517));
-assertNull(res[1466].exec("x{1c5}", 4518));
-assertNull(res[1466].exec("** Failers", 4519));
-assertNull(res[1466].exec("a ", 4520));
-assertNull(res[1466].exec("x{2b0}", 4521));
-assertNull(res[1467].exec("A", 4522));
-assertNull(res[1467].exec("** Failers", 4523));
-assertNull(res[1467].exec("x{2b0}", 4524));
-assertNull(res[1468].exec("x{903}", 4525));
-assertNull(res[1468].exec("** Failers", 4526));
-assertNull(res[1468].exec("X", 4527));
-assertNull(res[1468].exec("x{300}", 4528));
-assertNull(res[1468].exec("   ", 4529));
-assertNull(res[1469].exec("x{488}", 4530));
-assertNull(res[1469].exec("** Failers", 4531));
-assertNull(res[1469].exec("X", 4532));
-assertNull(res[1469].exec("x{903}", 4533));
-assertNull(res[1469].exec("x{300}", 4534));
-assertNull(res[1470].exec("x{300}", 4535));
-assertNull(res[1470].exec("** Failers", 4536));
-assertNull(res[1470].exec("X", 4537));
-assertNull(res[1470].exec("x{903}", 4538));
-assertNull(res[1470].exec("0123456789x{660}x{661}x{662}x{663}x{664}x{665}x{666}x{667}x{668}x{669}x{66a}", 4539));
-assertNull(res[1470].exec("x{6f0}x{6f1}x{6f2}x{6f3}x{6f4}x{6f5}x{6f6}x{6f7}x{6f8}x{6f9}x{6fa}", 4540));
-assertNull(res[1470].exec("x{966}x{967}x{968}x{969}x{96a}x{96b}x{96c}x{96d}x{96e}x{96f}x{970}", 4541));
-assertNull(res[1470].exec("** Failers", 4542));
-assertNull(res[1470].exec("X", 4543));
-assertNull(res[1471].exec("x{16ee}", 4544));
-assertNull(res[1471].exec("** Failers", 4545));
-assertNull(res[1471].exec("X", 4546));
-assertNull(res[1471].exec("x{966}", 4547));
-assertNull(res[1472].exec("x{b2}", 4548));
-assertNull(res[1472].exec("x{b3}", 4549));
-assertNull(res[1472].exec("** Failers", 4550));
-assertNull(res[1472].exec("X", 4551));
-assertNull(res[1472].exec("x{16ee}", 4552));
-assertNull(res[1473].exec("_", 4553));
-assertNull(res[1473].exec("x{203f}", 4554));
-assertNull(res[1473].exec("** Failers", 4555));
-assertNull(res[1473].exec("X", 4556));
-assertNull(res[1473].exec("-", 4557));
-assertNull(res[1473].exec("x{58a}", 4558));
-assertNull(res[1474].exec("-", 4559));
-assertNull(res[1474].exec("x{58a}", 4560));
-assertNull(res[1474].exec("** Failers", 4561));
-assertNull(res[1474].exec("X", 4562));
-assertNull(res[1474].exec("x{203f}", 4563));
-assertNull(res[1475].exec(")", 4564));
-assertNull(res[1475].exec("]", 4565));
-assertNull(res[1475].exec("}", 4566));
-assertNull(res[1475].exec("x{f3b}", 4567));
-assertNull(res[1475].exec("** Failers", 4568));
-assertNull(res[1475].exec("X", 4569));
-assertNull(res[1475].exec("x{203f}", 4570));
-assertNull(res[1475].exec("(", 4571));
-assertNull(res[1475].exec("[", 4572));
-assertNull(res[1475].exec("{", 4573));
-assertNull(res[1475].exec("x{f3c}", 4574));
-assertNull(res[1476].exec("x{bb}", 4575));
-assertNull(res[1476].exec("x{2019}", 4576));
-assertNull(res[1476].exec("** Failers", 4577));
-assertNull(res[1476].exec("X", 4578));
-assertNull(res[1476].exec("x{203f}", 4579));
-assertNull(res[1477].exec("x{ab}", 4580));
-assertNull(res[1477].exec("x{2018}", 4581));
-assertNull(res[1477].exec("** Failers", 4582));
-assertNull(res[1477].exec("X", 4583));
-assertNull(res[1477].exec("x{203f}", 4584));
-assertNull(res[1478].exec("!", 4585));
-assertNull(res[1478].exec("x{37e}", 4586));
-assertNull(res[1478].exec("** Failers", 4587));
-assertNull(res[1478].exec("X", 4588));
-assertNull(res[1478].exec("x{203f}", 4589));
-assertNull(res[1479].exec("(", 4590));
-assertNull(res[1479].exec("[", 4591));
-assertNull(res[1479].exec("{", 4592));
-assertNull(res[1479].exec("x{f3c}", 4593));
-assertNull(res[1479].exec("** Failers", 4594));
-assertNull(res[1479].exec("X", 4595));
-assertNull(res[1479].exec(")", 4596));
-assertNull(res[1479].exec("]", 4597));
-assertNull(res[1479].exec("}", 4598));
-assertNull(res[1479].exec("x{f3b}", 4599));
-assertNull(res[1479].exec("$x{a2}x{a3}x{a4}x{a5}x{a6}", 4600));
-assertNull(res[1479].exec("x{9f2}", 4601));
-assertNull(res[1479].exec("** Failers", 4602));
-assertNull(res[1479].exec("X", 4603));
-assertNull(res[1479].exec("x{2c2}", 4604));
-assertNull(res[1480].exec("x{2c2}", 4605));
-assertNull(res[1480].exec("** Failers", 4606));
-assertNull(res[1480].exec("X", 4607));
-assertNull(res[1480].exec("x{9f2}", 4608));
-assertNull(res[1480].exec("+<|~x{ac}x{2044}", 4609));
-assertNull(res[1480].exec("** Failers", 4610));
-assertNull(res[1480].exec("X", 4611));
-assertNull(res[1480].exec("x{9f2}", 4612));
-assertNull(res[1481].exec("x{a6}", 4613));
-assertNull(res[1481].exec("x{482} ", 4614));
-assertNull(res[1481].exec("** Failers", 4615));
-assertNull(res[1481].exec("X", 4616));
-assertNull(res[1481].exec("x{9f2}", 4617));
-assertNull(res[1482].exec("x{2028}", 4618));
-assertNull(res[1482].exec("** Failers", 4619));
-assertNull(res[1482].exec("X", 4620));
-assertNull(res[1482].exec("x{2029}", 4621));
-assertNull(res[1483].exec("x{2029}", 4622));
-assertNull(res[1483].exec("** Failers", 4623));
-assertNull(res[1483].exec("X", 4624));
-assertNull(res[1483].exec("x{2028}", 4625));
-assertNull(res[1484].exec("\\ \\", 4626));
-assertNull(res[1484].exec("x{a0}", 4627));
-assertNull(res[1484].exec("x{1680}", 4628));
-assertNull(res[1484].exec("x{180e}", 4629));
-assertNull(res[1484].exec("x{2000}", 4630));
-assertNull(res[1484].exec("x{2001}     ", 4631));
-assertNull(res[1484].exec("** Failers", 4632));
-assertNull(res[1484].exec("x{2028}", 4633));
-assertNull(res[1484].exec("x{200d} ", 4634));
-assertNull(res[1484].exec("  x{660}x{661}x{662}ABC", 4635));
-assertNull(res[1484].exec("  x{660}x{661}x{662}ABC", 4636));
-assertNull(res[1485].exec("  x{660}x{661}x{662}ABC", 4637));
-assertNull(res[1486].exec("  x{660}x{661}x{662}ABC", 4638));
-assertNull(res[1487].exec("  x{660}x{661}x{662}ABC", 4639));
-assertNull(res[1488].exec("  x{660}x{661}x{662}ABC", 4640));
-assertNull(res[1489].exec("  x{660}x{661}x{662}ABC", 4641));
-assertNull(res[1490].exec("  x{660}x{661}x{662}ABC", 4642));
-assertNull(res[1491].exec("  x{660}x{661}x{662}ABC", 4643));
-assertNull(res[1492].exec("  x{660}x{661}x{662}ABC", 4644));
-assertNull(res[1493].exec("  x{660}x{661}x{662}ABC", 4645));
-assertNull(res[1493].exec("  x{660}x{661}x{662}ABC", 4646));
-assertNull(res[1493].exec("  x{660}x{661}x{662}ABC", 4647));
-assertNull(res[1493].exec("  ** Failers", 4648));
-assertNull(res[1493].exec("  x{660}x{661}x{662}ABC", 4649));
-assertNull(res[1494].exec("A", 4650));
-assertNull(res[1494].exec("ax{10a0}B ", 4651));
-assertNull(res[1494].exec("** Failers ", 4652));
-assertNull(res[1494].exec("a", 4653));
-assertNull(res[1494].exec("x{1d00}  ", 4654));
-assertNull(res[1495].exec("1234", 4655));
-assertNull(res[1495].exec("** Failers", 4656));
-assertNull(res[1495].exec("ABC ", 4657));
-assertNull(res[1496].exec("1234", 4658));
-assertNull(res[1496].exec("** Failers", 4659));
-assertNull(res[1496].exec("ABC ", 4660));
-assertNull(res[1496].exec("A2XYZ", 4661));
-assertNull(res[1496].exec("123A5XYZPQR", 4662));
-assertNull(res[1496].exec("ABAx{660}XYZpqr", 4663));
-assertNull(res[1496].exec("** Failers", 4664));
-assertNull(res[1496].exec("AXYZ", 4665));
-assertNull(res[1496].exec("XYZ     ", 4666));
-assertNull(res[1496].exec("1XYZ", 4667));
-assertNull(res[1496].exec("AB=XYZ.. ", 4668));
-assertNull(res[1496].exec("XYZ ", 4669));
-assertNull(res[1496].exec("** Failers", 4670));
-assertNull(res[1496].exec("WXYZ ", 4671));
-assertNull(res[1497].exec("1234", 4672));
-assertNull(res[1497].exec("1234", 4673));
-assertNull(res[1497].exec("12-34", 4674));
-assertToStringEquals("{", res[1497].exec("12+x{661}-34  "), 4675);
-assertNull(res[1497].exec("** Failers", 4676));
-assertToStringEquals("d", res[1497].exec("abcd  "), 4677);
-assertToStringEquals("d", res[1498].exec("abcd"), 4678);
-assertNull(res[1498].exec("** Failers", 4679));
-assertNull(res[1498].exec("1234", 4680));
-assertNull(res[1499].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4681));
-assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1499].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4682);
-assertToStringEquals(" ", res[1499].exec(" "), 4683);
-assertNull(res[1499].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4684));
-assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1499].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4685);
-assertNull(res[1500].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4686));
-assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1500].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4687);
-assertNull(res[1501].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4688));
-assertNull(res[1501].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 4689));
-assertNull(res[1502].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4690));
-assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1502].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4691);
-assertNull(res[1503].exec("a", 4692));
-assertNull(res[1503].exec("A ", 4693));
-assertNull(res[1504].exec("a", 4694));
-assertNull(res[1504].exec("A ", 4695));
-assertNull(res[1505].exec("A", 4696));
-assertNull(res[1505].exec("aZ", 4697));
-assertNull(res[1505].exec("** Failers", 4698));
-assertNull(res[1505].exec("abc   ", 4699));
-assertNull(res[1506].exec("A", 4700));
-assertNull(res[1506].exec("aZ", 4701));
-assertNull(res[1506].exec("** Failers", 4702));
-assertNull(res[1506].exec("abc   ", 4703));
-assertNull(res[1507].exec("a", 4704));
-assertNull(res[1507].exec("Az", 4705));
-assertNull(res[1507].exec("** Failers", 4706));
-assertNull(res[1507].exec("ABC   ", 4707));
-assertNull(res[1508].exec("a", 4708));
-assertNull(res[1508].exec("Az", 4709));
-assertNull(res[1508].exec("** Failers", 4710));
-assertNull(res[1508].exec("ABC   ", 4711));
-assertNull(res[1508].exec("x{c0}", 4712));
-assertNull(res[1508].exec("x{e0} ", 4713));
-assertNull(res[1508].exec("x{c0}", 4714));
-assertNull(res[1508].exec("x{e0} ", 4715));
-assertNull(res[1508].exec("Ax{391}x{10427}x{ff3a}x{1fb0}", 4716));
-assertNull(res[1508].exec("** Failers", 4717));
-assertNull(res[1508].exec("ax{391}x{10427}x{ff3a}x{1fb0}   ", 4718));
-assertNull(res[1508].exec("Ax{3b1}x{10427}x{ff3a}x{1fb0}", 4719));
-assertNull(res[1508].exec("Ax{391}x{1044F}x{ff3a}x{1fb0}", 4720));
-assertNull(res[1508].exec("Ax{391}x{10427}x{ff5a}x{1fb0}", 4721));
-assertNull(res[1508].exec("Ax{391}x{10427}x{ff3a}x{1fb8}", 4722));
-assertNull(res[1508].exec("Ax{391}x{10427}x{ff3a}x{1fb0}", 4723));
-assertNull(res[1508].exec("ax{391}x{10427}x{ff3a}x{1fb0}   ", 4724));
-assertNull(res[1508].exec("Ax{3b1}x{10427}x{ff3a}x{1fb0}", 4725));
-assertNull(res[1508].exec("Ax{391}x{1044F}x{ff3a}x{1fb0}", 4726));
-assertNull(res[1508].exec("Ax{391}x{10427}x{ff5a}x{1fb0}", 4727));
-assertNull(res[1508].exec("Ax{391}x{10427}x{ff3a}x{1fb8}", 4728));
-assertNull(res[1508].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}", 4729));
-assertNull(res[1508].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}X", 4730));
-assertNull(res[1508].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}X", 4731));
-assertNull(res[1508].exec("x{391}", 4732));
-assertNull(res[1508].exec("x{ff3a}", 4733));
-assertNull(res[1508].exec("x{3b1}", 4734));
-assertNull(res[1508].exec("x{ff5a}   ", 4735));
-assertNull(res[1508].exec("x{c0}", 4736));
-assertNull(res[1508].exec("x{e0} ", 4737));
-assertNull(res[1508].exec("x{104}", 4738));
-assertNull(res[1508].exec("x{105}", 4739));
-assertNull(res[1508].exec("x{109}  ", 4740));
-assertNull(res[1508].exec("** Failers", 4741));
-assertNull(res[1508].exec("x{100}", 4742));
-assertNull(res[1508].exec("x{10a} ", 4743));
-assertNull(res[1508].exec("Z", 4744));
-assertNull(res[1508].exec("z", 4745));
-assertNull(res[1508].exec("x{39c}", 4746));
-assertNull(res[1508].exec("x{178}", 4747));
-assertNull(res[1508].exec("|", 4748));
-assertNull(res[1508].exec("x{80}", 4749));
-assertNull(res[1508].exec("x{ff}", 4750));
-assertNull(res[1508].exec("x{100}", 4751));
-assertNull(res[1508].exec("x{101} ", 4752));
-assertNull(res[1508].exec("** Failers", 4753));
-assertNull(res[1508].exec("x{102}", 4754));
-assertNull(res[1508].exec("Y", 4755));
-assertNull(res[1508].exec("y           ", 4756));
-assertNull(res[1509].exec("A", 4757));
-assertNull(res[1509].exec("Ax{300}BC ", 4758));
-assertNull(res[1509].exec("Ax{300}x{301}x{302}BC ", 4759));
-assertNull(res[1509].exec("*** Failers", 4760));
-assertNull(res[1509].exec("x{300}  ", 4761));
-assertToStringEquals("X", res[1510].exec("X123"), 4762);
-assertNull(res[1510].exec("*** Failers", 4763));
-assertNull(res[1510].exec("AXYZ", 4764));
-assertNull(res[1511].exec("Ax{300}x{301}x{302}BCAx{300}x{301} ", 4765));
-assertNull(res[1511].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C ", 4766));
-assertNull(res[1512].exec("Ax{300}x{301}x{302}BCAx{300}x{301} ", 4767));
-assertNull(res[1512].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C ", 4768));
-assertToStringEquals("A,,A", res[1513].exec("Ax{300}x{301}x{302}BCAx{300}x{301} "), 4769);
-assertToStringEquals("A,,A", res[1513].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 4770);
-assertToStringEquals("A,,A", res[1514].exec("Ax{300}x{301}x{302}BCAx{300}x{301} "), 4771);
-assertToStringEquals("A,,A", res[1514].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 4772);
-assertNull(res[1515].exec("*** Failers", 4773));
-assertNull(res[1515].exec("Ax{300}x{301}x{302}", 4774));
-assertNull(res[1516].exec("Ax{300}x{301}Bx{300}X", 4775));
-assertNull(res[1516].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}", 4776));
-assertNull(res[1516].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}X", 4777));
-assertNull(res[1516].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X", 4778));
-assertNull(res[1517].exec("Ax{300}x{301}Bx{300}X", 4779));
-assertNull(res[1517].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}", 4780));
-assertNull(res[1517].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}X", 4781));
-assertNull(res[1517].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X", 4782));
-assertNull(res[1518].exec("12X", 4783));
-assertNull(res[1518].exec("123X", 4784));
-assertNull(res[1518].exec("*** Failers", 4785));
-assertNull(res[1518].exec("X", 4786));
-assertNull(res[1518].exec("1X", 4787));
-assertNull(res[1518].exec("1234X     ", 4788));
-assertNull(res[1518].exec("x{100}   ", 4789));
-assertNull(res[1518].exec("x{101} ", 4790));
-assertNull(res[1518].exec("x{2e81}x{3007}x{2f804}x{31a0}", 4791));
-assertNull(res[1518].exec("** Failers", 4792));
-assertNull(res[1518].exec("x{2e7f}  ", 4793));
-assertNull(res[1518].exec("x{3105}", 4794));
-assertNull(res[1518].exec("** Failers", 4795));
-assertNull(res[1518].exec("x{30ff}  ", 4796));
-assertNull(res[1519].exec("x{06e9}", 4797));
-assertNull(res[1519].exec("x{060b}", 4798));
-assertNull(res[1519].exec("** Failers", 4799));
-assertNull(res[1519].exec("Xx{06e9}   ", 4800));
-assertNull(res[1520].exec("x{2f800}", 4801));
-assertNull(res[1520].exec("** Failers", 4802));
-assertNull(res[1520].exec("x{a014}", 4803));
-assertNull(res[1520].exec("x{a4c6}   ", 4804));
-assertNull(res[1521].exec("AXYZ", 4805));
-assertNull(res[1521].exec("x{1234}XYZ ", 4806));
-assertNull(res[1521].exec("** Failers", 4807));
-assertNull(res[1521].exec("X  ", 4808));
-assertNull(res[1522].exec("** Failers", 4809));
-assertNull(res[1522].exec("AX", 4810));
-assertNull(res[1523].exec("XYZ", 4811));
-assertNull(res[1523].exec("AXYZ", 4812));
-assertNull(res[1523].exec("x{1234}XYZ ", 4813));
-assertNull(res[1523].exec("** Failers", 4814));
-assertNull(res[1523].exec("ABXYZ   ", 4815));
-assertNull(res[1524].exec("XYZ", 4816));
-assertNull(res[1524].exec("** Failers", 4817));
-assertNull(res[1524].exec("AXYZ", 4818));
-assertNull(res[1524].exec("x{1234}XYZ ", 4819));
-assertNull(res[1524].exec("ABXYZ   ", 4820));
-assertNull(res[1524].exec("AXYZ", 4821));
-assertNull(res[1524].exec("x{1234}XYZ", 4822));
-assertNull(res[1524].exec("Ax{1234}XYZ", 4823));
-assertNull(res[1524].exec("** Failers", 4824));
-assertNull(res[1524].exec("XYZ", 4825));
-assertNull(res[1524].exec("** Failers", 4826));
-assertNull(res[1524].exec("AXYZ", 4827));
-assertNull(res[1524].exec("x{1234}XYZ", 4828));
-assertNull(res[1524].exec("Ax{1234}XYZ", 4829));
-assertNull(res[1524].exec("XYZ", 4830));
-assertNull(res[1525].exec("XYZ", 4831));
-assertNull(res[1525].exec("AXYZ", 4832));
-assertNull(res[1525].exec("x{1234}XYZ", 4833));
-assertNull(res[1525].exec("Ax{1234}XYZ", 4834));
-assertNull(res[1525].exec("** Failers", 4835));
-assertNull(res[1526].exec("XYZ", 4836));
-assertNull(res[1526].exec("** Failers", 4837));
-assertNull(res[1526].exec("AXYZ", 4838));
-assertNull(res[1526].exec("x{1234}XYZ", 4839));
-assertNull(res[1526].exec("Ax{1234}XYZ", 4840));
-assertToStringEquals("AX", res[1527].exec("AXYZ"), 4841);
-assertNull(res[1527].exec("x{1234}XYZ ", 4842));
-assertNull(res[1527].exec("** Failers", 4843));
-assertNull(res[1527].exec("X  ", 4844));
-assertNull(res[1528].exec("** Failers", 4845));
-assertToStringEquals("AX", res[1528].exec("AX"), 4846);
-assertToStringEquals("X", res[1529].exec("XYZ"), 4847);
-assertToStringEquals("AX", res[1529].exec("AXYZ"), 4848);
-assertNull(res[1529].exec("x{1234}XYZ ", 4849));
-assertNull(res[1529].exec("** Failers", 4850));
-assertNull(res[1529].exec("ABXYZ   ", 4851));
-assertToStringEquals("X", res[1530].exec("XYZ"), 4852);
-assertNull(res[1530].exec("** Failers", 4853));
-assertToStringEquals("AX", res[1530].exec("AXYZ"), 4854);
-assertNull(res[1530].exec("x{1234}XYZ ", 4855));
-assertNull(res[1530].exec("ABXYZ   ", 4856));
-assertToStringEquals("AX", res[1531].exec("AXYZ"), 4857);
-assertNull(res[1531].exec("x{1234}XYZ", 4858));
-assertNull(res[1531].exec("Ax{1234}XYZ", 4859));
-assertNull(res[1531].exec("** Failers", 4860));
-assertNull(res[1531].exec("XYZ", 4861));
-assertNull(res[1532].exec("** Failers", 4862));
-assertToStringEquals("AX", res[1532].exec("AXYZ"), 4863);
-assertNull(res[1532].exec("x{1234}XYZ", 4864));
-assertNull(res[1532].exec("Ax{1234}XYZ", 4865));
-assertNull(res[1532].exec("XYZ", 4866));
-assertToStringEquals("X", res[1533].exec("XYZ"), 4867);
-assertToStringEquals("AX", res[1533].exec("AXYZ"), 4868);
-assertNull(res[1533].exec("x{1234}XYZ", 4869));
-assertNull(res[1533].exec("Ax{1234}XYZ", 4870));
-assertNull(res[1533].exec("** Failers", 4871));
-assertToStringEquals("X", res[1534].exec("XYZ"), 4872);
-assertNull(res[1534].exec("** Failers", 4873));
-assertToStringEquals("AX", res[1534].exec("AXYZ"), 4874);
-assertNull(res[1534].exec("x{1234}XYZ", 4875));
-assertNull(res[1534].exec("Ax{1234}XYZ", 4876));
-assertNull(res[1535].exec("abcdefgh", 4877));
-assertNull(res[1535].exec("x{1234}\n\x0dx{3456}xyz ", 4878));
-assertNull(res[1536].exec("abcdefgh", 4879));
-assertNull(res[1536].exec("x{1234}\n\x0dx{3456}xyz ", 4880));
-assertNull(res[1537].exec("** Failers", 4881));
-assertNull(res[1537].exec("abcdefgh", 4882));
-assertNull(res[1537].exec("x{1234}\n\x0dx{3456}xyz ", 4883));
-assertNull(res[1538].exec(" AXY", 4884));
-assertNull(res[1538].exec(" aXY", 4885));
-assertNull(res[1538].exec(" x{1c5}XY", 4886));
-assertNull(res[1538].exec(" ** Failers", 4887));
-assertNull(res[1538].exec(" x{1bb}XY", 4888));
-assertNull(res[1538].exec(" x{2b0}XY", 4889));
-assertNull(res[1538].exec(" !XY      ", 4890));
-assertNull(res[1539].exec(" AXY", 4891));
-assertNull(res[1539].exec(" aXY", 4892));
-assertNull(res[1539].exec(" x{1c5}XY", 4893));
-assertNull(res[1539].exec(" ** Failers", 4894));
-assertNull(res[1539].exec(" x{1bb}XY", 4895));
-assertNull(res[1539].exec(" x{2b0}XY", 4896));
-assertNull(res[1539].exec(" !XY      ", 4897));
-assertNull(res[1539].exec(" AXY", 4898));
-assertNull(res[1539].exec(" aXY", 4899));
-assertNull(res[1539].exec(" AbcdeXyz ", 4900));
-assertNull(res[1539].exec(" x{1c5}AbXY", 4901));
-assertNull(res[1539].exec(" abcDEXypqreXlmn ", 4902));
-assertNull(res[1539].exec(" ** Failers", 4903));
-assertNull(res[1539].exec(" x{1bb}XY", 4904));
-assertNull(res[1539].exec(" x{2b0}XY", 4905));
-assertNull(res[1539].exec(" !XY      ", 4906));
-assertNull(res[1540].exec(" AXY", 4907));
-assertNull(res[1540].exec(" aXY", 4908));
-assertNull(res[1540].exec(" AbcdeXyz ", 4909));
-assertNull(res[1540].exec(" x{1c5}AbXY", 4910));
-assertNull(res[1540].exec(" abcDEXypqreXlmn ", 4911));
-assertNull(res[1540].exec(" ** Failers", 4912));
-assertNull(res[1540].exec(" x{1bb}XY", 4913));
-assertNull(res[1540].exec(" x{2b0}XY", 4914));
-assertNull(res[1540].exec(" !XY      ", 4915));
-assertNull(res[1540].exec(" AXY", 4916));
-assertNull(res[1540].exec(" aXY", 4917));
-assertNull(res[1540].exec(" AbcdeXyz ", 4918));
-assertNull(res[1540].exec(" x{1c5}AbXY", 4919));
-assertNull(res[1540].exec(" abcDEXypqreXlmn ", 4920));
-assertNull(res[1540].exec(" ** Failers", 4921));
-assertNull(res[1540].exec(" x{1bb}XY", 4922));
-assertNull(res[1540].exec(" x{2b0}XY", 4923));
-assertNull(res[1540].exec(" !XY      ", 4924));
-assertNull(res[1541].exec(" AXY", 4925));
-assertNull(res[1541].exec(" aXY", 4926));
-assertNull(res[1541].exec(" AbcdeXyz ", 4927));
-assertNull(res[1541].exec(" x{1c5}AbXY", 4928));
-assertNull(res[1541].exec(" abcDEXypqreXlmn ", 4929));
-assertNull(res[1541].exec(" ** Failers", 4930));
-assertNull(res[1541].exec(" x{1bb}XY", 4931));
-assertNull(res[1541].exec(" x{2b0}XY", 4932));
-assertNull(res[1541].exec(" !XY      ", 4933));
-assertNull(res[1542].exec(" !XY", 4934));
-assertNull(res[1542].exec(" x{1bb}XY", 4935));
-assertNull(res[1542].exec(" x{2b0}XY", 4936));
-assertNull(res[1542].exec(" ** Failers", 4937));
-assertNull(res[1542].exec(" x{1c5}XY", 4938));
-assertNull(res[1542].exec(" AXY      ", 4939));
-assertNull(res[1543].exec(" !XY", 4940));
-assertNull(res[1543].exec(" x{1bb}XY", 4941));
-assertNull(res[1543].exec(" x{2b0}XY", 4942));
-assertNull(res[1543].exec(" ** Failers", 4943));
-assertNull(res[1543].exec(" x{1c5}XY", 4944));
-assertNull(res[1543].exec(" AXY      ", 4945));
-assertNull(res[1543].exec("x{c0}x{e0}x{116}x{117}", 4946));
-assertNull(res[1543].exec("x{c0}x{e0}x{116}x{117}", 4947));
-assertNull(res[1545].exec("123abcdefg", 4948));
-assertNull(res[1545].exec("123abc\xc4\xc5zz", 4949));
-assertNull(res[1546].exec("x{102A4}x{AA52}x{A91D}x{1C46}x{10283}x{1092E}x{1C6B}x{A93B}x{A8BF}x{1BA0}x{A50A}====", 4950));
-assertNull(res[1546].exec("x{a77d}x{1d79}", 4951));
-assertNull(res[1546].exec("x{1d79}x{a77d} ", 4952));
-assertNull(res[1546].exec("x{a77d}x{1d79}", 4953));
-assertNull(res[1546].exec("** Failers ", 4954));
-assertNull(res[1546].exec("x{1d79}x{a77d} ", 4955));
+assertEquals(null, res[1330].exec("xabcpqrx", 3954));
+assertEquals(null, res[1330].exec("xxyzx ", 3955));
+assertEquals(null, res[1330].exec("abcabc", 3956));
+assertEquals(null, res[1330].exec("xyzabc ", 3957));
+assertEquals(null, res[1330].exec("** Failers ", 3958));
+assertEquals(null, res[1330].exec("xyzxyz ", 3959));
+assertEquals(null, res[1331].exec("X X\n", 3960));
+assertEquals(null, res[1331].exec("X\x09X\x0b", 3961));
+assertEquals(null, res[1331].exec("** Failers", 3962));
+assertEquals(null, res[1331].exec("\xa0 X\n   ", 3963));
+assertEquals(null, res[1332].exec("\x09 \xa0X\n\x0b\x0c\x0d\n", 3964));
+assertEquals(null, res[1332].exec("\x09 \xa0\n\x0b\x0c\x0d\n", 3965));
+assertEquals(null, res[1332].exec("\x09 \xa0\n\x0b\x0c", 3966));
+assertEquals(null, res[1332].exec("** Failers ", 3967));
+assertEquals(null, res[1332].exec("\x09 \xa0\n\x0b", 3968));
+assertEquals(null, res[1332].exec(" ", 3969));
+assertEquals(null, res[1333].exec("XY  ABCDE", 3970));
+assertEquals(null, res[1333].exec("XY  PQR ST ", 3971));
+assertEquals(null, res[1334].exec("XY  AB    PQRS", 3972));
+assertEquals(null, res[1335].exec(">XNNNYZ", 3973));
+assertEquals(null, res[1335].exec(">  X NYQZ", 3974));
+assertEquals(null, res[1335].exec("** Failers", 3975));
+assertEquals(null, res[1335].exec(">XYZ   ", 3976));
+assertEquals(null, res[1335].exec(">  X NY Z", 3977));
+assertEquals(null, res[1336].exec(">XY\nZ\nA\x0bNN\x0c", 3978));
+assertEquals(null, res[1336].exec(">\n\x0dX\nY\n\x0bZZZ\nAAA\x0bNNN\x0c", 3979));
+assertEquals(null, res[1337].exec("\x0d\nA", 3980));
+assertEquals("\nA", res[1338].exec("\x0d\nA "), 3981);
+assertEquals("\nA", res[1339].exec("\x0d\nA "), 3982);
+assertEquals("\nA,\n", res[1340].exec("\x0d\nA "), 3983);
+assertEquals(null, res[1341].exec("a\x0db", 3984));
+assertEquals(null, res[1341].exec("a\nb", 3985));
+assertEquals(null, res[1341].exec("a\x0d\nb", 3986));
+assertEquals(null, res[1341].exec("** Failers", 3987));
+assertEquals(null, res[1341].exec("a\x85b", 3988));
+assertEquals(null, res[1341].exec("a\x0bb     ", 3989));
+assertEquals(null, res[1342].exec("a\x0db", 3990));
+assertEquals(null, res[1342].exec("a\nb", 3991));
+assertEquals(null, res[1342].exec("a\x0d\nb", 3992));
+assertEquals(null, res[1342].exec("a\x85b", 3993));
+assertEquals(null, res[1342].exec("a\x0bb     ", 3994));
+assertEquals(null, res[1342].exec("** Failers ", 3995));
+assertEquals(null, res[1342].exec("a\x85b<bsr_anycrlf>", 3996));
+assertEquals(null, res[1342].exec("a\x0bb<bsr_anycrlf>", 3997));
+assertEquals(null, res[1343].exec("a\x0db", 3998));
+assertEquals(null, res[1343].exec("a\nb", 3999));
+assertEquals(null, res[1343].exec("a\x0d\nb", 4000));
+assertEquals(null, res[1343].exec("** Failers", 4001));
+assertEquals(null, res[1343].exec("a\x85b", 4002));
+assertEquals(null, res[1343].exec("a\x0bb     ", 4003));
+assertEquals(null, res[1344].exec("a\x0db", 4004));
+assertEquals(null, res[1344].exec("a\nb", 4005));
+assertEquals(null, res[1344].exec("a\x0d\nb", 4006));
+assertEquals(null, res[1344].exec("a\x85b", 4007));
+assertEquals(null, res[1344].exec("a\x0bb     ", 4008));
+assertEquals(null, res[1344].exec("** Failers ", 4009));
+assertEquals(null, res[1344].exec("a\x85b<bsr_anycrlf>", 4010));
+assertEquals(null, res[1344].exec("a\x0bb<bsr_anycrlf>", 4011));
+assertEquals(null, res[1345].exec("a\x0d\n\nb", 4012));
+assertEquals(null, res[1345].exec("a\n\x0d\x0db", 4013));
+assertEquals(null, res[1345].exec("a\x0d\n\x0d\n\x0d\n\x0d\nb", 4014));
+assertEquals(null, res[1345].exec("** Failers", 4015));
+assertEquals(null, res[1345].exec("a\x8585b", 4016));
+assertEquals(null, res[1345].exec("a\x0b\x00bb     ", 4017));
+assertEquals(null, res[1346].exec("a\x0d\x0db", 4018));
+assertEquals(null, res[1346].exec("a\n\n\nb", 4019));
+assertEquals(null, res[1346].exec("a\x0d\n\n\x0d\x0db", 4020));
+assertEquals(null, res[1346].exec("a\x8585b", 4021));
+assertEquals(null, res[1346].exec("a\x0b\x00bb     ", 4022));
+assertEquals(null, res[1346].exec("** Failers ", 4023));
+assertEquals(null, res[1346].exec("a\x0d\x0d\x0d\x0d\x0db ", 4024));
+assertEquals(null, res[1346].exec("a\x8585b<bsr_anycrlf>", 4025));
+assertEquals(null, res[1346].exec("a\x0b\x00bb<bsr_anycrlf>", 4026));
+assertEquals("abc", res[1347].exec("abc "), 4027);
+assertEquals(null, res[1348].exec("** Failers", 4028));
+assertEquals(null, res[1348].exec("ab", 4029));
+assertEquals(null, res[1349].exec("** Failers", 4030));
+assertEquals(null, res[1349].exec("ab ", 4031));
+assertEquals(null, res[1349].exec("** Failers", 4032));
+assertEquals(null, res[1349].exec("ab ", 4033));
+assertEquals("aXb", res[1350].exec("aXb"), 4034);
+assertEquals("a\nb", res[1350].exec("a\nb "), 4035);
+assertEquals(null, res[1350].exec("** Failers", 4036));
+assertEquals(null, res[1350].exec("ab  ", 4037));
+assertEquals("aXb", res[1351].exec("aXb"), 4038);
+assertEquals("a\nX\nXb", res[1351].exec("a\nX\nXb "), 4039);
+assertEquals(null, res[1351].exec("** Failers", 4040));
+assertEquals(null, res[1351].exec("ab  ", 4041));
+assertEquals(null, res[1352].exec("ab", 4042));
+assertEquals(null, res[1352].exec("ax{100}b  ", 4043));
+assertEquals(null, res[1352].exec("ax{100}x{100}b  ", 4044));
+assertEquals(null, res[1352].exec("ax{100}b  ", 4045));
+assertEquals(null, res[1352].exec("ax{100}x{100}b  ", 4046));
+assertEquals(null, res[1352].exec("*** Failers ", 4047));
+assertEquals(null, res[1352].exec("ab", 4048));
+assertEquals(null, res[1352].exec(" ", 4049));
+assertEquals("X", res[1353].exec("Xoanon"), 4050);
+assertEquals("X", res[1353].exec("+Xoanon"), 4051);
+assertEquals("X", res[1353].exec("x{300}Xoanon "), 4052);
+assertEquals(null, res[1353].exec("*** Failers ", 4053));
+assertEquals(null, res[1353].exec("YXoanon  ", 4054));
+assertEquals("X", res[1354].exec("YXoanon"), 4055);
+assertEquals(null, res[1354].exec("*** Failers", 4056));
+assertEquals(null, res[1354].exec("Xoanon", 4057));
+assertEquals(null, res[1354].exec("+Xoanon    ", 4058));
+assertEquals(null, res[1354].exec("x{300}Xoanon ", 4059));
+assertEquals("X", res[1355].exec("X+oanon"), 4060);
+assertEquals(null, res[1355].exec("ZXx{300}oanon ", 4061));
+assertEquals("X", res[1355].exec("FAX "), 4062);
+assertEquals(null, res[1355].exec("*** Failers ", 4063));
+assertEquals(null, res[1355].exec("Xoanon  ", 4064));
+assertEquals("X", res[1356].exec("Xoanon  "), 4065);
+assertEquals(null, res[1356].exec("*** Failers", 4066));
+assertEquals(null, res[1356].exec("X+oanon", 4067));
+assertEquals("X", res[1356].exec("ZXx{300}oanon "), 4068);
+assertEquals(null, res[1356].exec("FAX ", 4069));
+assertEquals("b", res[1357].exec("abcd"), 4070);
+assertEquals("x", res[1357].exec("ax{100}   "), 4071);
+assertEquals("b", res[1357].exec("ab99"), 4072);
+assertEquals("x", res[1357].exec("x{123}x{123}45"), 4073);
+assertEquals("x", res[1357].exec("x{400}x{401}x{402}6  "), 4074);
+assertEquals("*", res[1357].exec("*** Failers"), 4075);
+assertEquals("d", res[1357].exec("d99"), 4076);
+assertEquals("x", res[1357].exec("x{123}x{122}4   "), 4077);
+assertEquals("x", res[1357].exec("x{400}x{403}6  "), 4078);
+assertEquals("x", res[1357].exec("x{400}x{401}x{402}x{402}6  "), 4079);
+assertEquals(null, res[1358].exec("\ufffd]", 4080));
+assertEquals(null, res[1358].exec("\ufffd", 4081));
+assertEquals(null, res[1358].exec("\ufffd\ufffd\ufffd", 4082));
+assertEquals(null, res[1358].exec("\ufffd\ufffd\ufffd?", 4083));
+assertEquals("acb", res[1359].exec("acb"), 4084);
+assertEquals("ab", res[1359].exec("ab"), 4085);
+assertEquals(null, res[1359].exec("ax{100}b ", 4086));
+assertEquals(null, res[1359].exec("*** Failers", 4087));
+assertEquals(null, res[1359].exec("a\nb  ", 4088));
+assertEquals(null, res[1360].exec("ax{4000}xyb ", 4089));
+assertEquals(null, res[1360].exec("ax{4000}yb ", 4090));
+assertEquals(null, res[1360].exec("ax{4000}x{100}yb ", 4091));
+assertEquals(null, res[1360].exec("*** Failers", 4092));
+assertEquals(null, res[1360].exec("ax{4000}b ", 4093));
+assertEquals(null, res[1360].exec("ac\ncb ", 4094));
+assertEquals("a\xc0,,\xc0", res[1361].exec("a\xc0\x88b"), 4095);
+assertEquals("ax,,x", res[1362].exec("ax{100}b"), 4096);
+assertEquals("a\xc0\x88b,\xc0\x88,b", res[1363].exec("a\xc0\x88b"), 4097);
+assertEquals("ax{100}b,x{100},b", res[1364].exec("ax{100}b"), 4098);
+assertEquals("a\xc0\x92,\xc0,\x92", res[1365].exec("a\xc0\x92bcd"), 4099);
+assertEquals("ax{,x,{", res[1366].exec("ax{240}bcd"), 4100);
+assertEquals("a\xc0\x92,\xc0,\x92", res[1367].exec("a\xc0\x92bcd"), 4101);
+assertEquals("ax{,x,{", res[1368].exec("ax{240}bcd"), 4102);
+assertEquals("a\xc0,,\xc0", res[1369].exec("a\xc0\x92bcd"), 4103);
+assertEquals("ax,,x", res[1370].exec("ax{240}bcd"), 4104);
+assertEquals(null, res[1371].exec("ax{1234}xyb ", 4105));
+assertEquals(null, res[1371].exec("ax{1234}x{4321}yb ", 4106));
+assertEquals(null, res[1371].exec("ax{1234}x{4321}x{3412}b ", 4107));
+assertEquals(null, res[1371].exec("*** Failers", 4108));
+assertEquals(null, res[1371].exec("ax{1234}b ", 4109));
+assertEquals(null, res[1371].exec("ac\ncb ", 4110));
+assertEquals("ax{1234}xyb,x{1234}xy", res[1372].exec("ax{1234}xyb "), 4111);
+assertEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[1372].exec("ax{1234}x{4321}yb "), 4112);
+assertEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[1372].exec("ax{1234}x{4321}x{3412}b "), 4113);
+assertEquals("axxxxbcdefghijb,xxxxbcdefghij", res[1372].exec("axxxxbcdefghijb "), 4114);
+assertEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[1372].exec("ax{1234}x{4321}x{3412}x{3421}b "), 4115);
+assertEquals(null, res[1372].exec("*** Failers", 4116));
+assertEquals("ax{1234}b,x{1234}", res[1372].exec("ax{1234}b "), 4117);
+assertEquals("ax{1234}xyb,x{1234}xy", res[1373].exec("ax{1234}xyb "), 4118);
+assertEquals("ax{1234}x{4321}yb,x{1234}x{4321}y", res[1373].exec("ax{1234}x{4321}yb "), 4119);
+assertEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}", res[1373].exec("ax{1234}x{4321}x{3412}b "), 4120);
+assertEquals("axxxxb,xxxx", res[1373].exec("axxxxbcdefghijb "), 4121);
+assertEquals("ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}", res[1373].exec("ax{1234}x{4321}x{3412}x{3421}b "), 4122);
+assertEquals(null, res[1373].exec("*** Failers", 4123));
+assertEquals("ax{1234}b,x{1234}", res[1373].exec("ax{1234}b "), 4124);
+assertEquals(null, res[1374].exec("ax{1234}xyb ", 4125));
+assertEquals(null, res[1374].exec("ax{1234}x{4321}yb ", 4126));
+assertEquals(null, res[1374].exec("ax{1234}x{4321}x{3412}b ", 4127));
+assertEquals("axxxxb,xxxx", res[1374].exec("axxxxbcdefghijb "), 4128);
+assertEquals(null, res[1374].exec("ax{1234}x{4321}x{3412}x{3421}b ", 4129));
+assertEquals("axbxxb,xbxx", res[1374].exec("axbxxbcdefghijb "), 4130);
+assertEquals("axxxxxb,xxxxx", res[1374].exec("axxxxxbcdefghijb "), 4131);
+assertEquals(null, res[1374].exec("*** Failers", 4132));
+assertEquals(null, res[1374].exec("ax{1234}b ", 4133));
+assertEquals(null, res[1374].exec("axxxxxxbcdefghijb ", 4134));
+assertEquals(null, res[1375].exec("ax{1234}xyb ", 4135));
+assertEquals(null, res[1375].exec("ax{1234}x{4321}yb ", 4136));
+assertEquals(null, res[1375].exec("ax{1234}x{4321}x{3412}b ", 4137));
+assertEquals("axxxxb,xxxx", res[1375].exec("axxxxbcdefghijb "), 4138);
+assertEquals(null, res[1375].exec("ax{1234}x{4321}x{3412}x{3421}b ", 4139));
+assertEquals("axbxxb,xbxx", res[1375].exec("axbxxbcdefghijb "), 4140);
+assertEquals("axxxxxb,xxxxx", res[1375].exec("axxxxxbcdefghijb "), 4141);
+assertEquals(null, res[1375].exec("*** Failers", 4142));
+assertEquals(null, res[1375].exec("ax{1234}b ", 4143));
+assertEquals(null, res[1375].exec("axxxxxxbcdefghijb ", 4144));
+assertEquals(null, res[1375].exec("*** Failers", 4145));
+assertEquals(null, res[1375].exec("x{100}", 4146));
+assertEquals(null, res[1375].exec("aXbcd", 4147));
+assertEquals(null, res[1375].exec("ax{100}bcd", 4148));
+assertEquals(null, res[1375].exec("ax{100000}bcd", 4149));
+assertEquals(null, res[1375].exec("x{100}x{100}x{100}b", 4150));
+assertEquals(null, res[1375].exec("*** Failers ", 4151));
+assertEquals(null, res[1375].exec("x{100}x{100}b", 4152));
+assertEquals(null, res[1375].exec("x{ab} ", 4153));
+assertEquals(null, res[1375].exec("\xc2\xab", 4154));
+assertEquals(null, res[1375].exec("*** Failers ", 4155));
+assertEquals(null, res[1375].exec("\x00{ab}", 4156));
+assertEquals(null, res[1375].exec("WXYZ", 4157));
+assertEquals(null, res[1375].exec("x{256}XYZ ", 4158));
+assertEquals(null, res[1375].exec("*** Failers", 4159));
+assertEquals(null, res[1375].exec("XYZ ", 4160));
+assertEquals("bcd", res[1376].exec("bcd"), 4161);
+assertEquals("00}", res[1376].exec("x{100}aYx{256}Z "), 4162);
+assertEquals("x{", res[1377].exec("x{100}bc"), 4163);
+assertEquals("x{100}bcA", res[1378].exec("x{100}bcAa"), 4164);
+assertEquals("x{", res[1379].exec("x{100}bca"), 4165);
+assertEquals("bcd", res[1380].exec("bcd"), 4166);
+assertEquals("00}", res[1380].exec("x{100}aYx{256}Z "), 4167);
+assertEquals("x{", res[1381].exec("x{100}bc"), 4168);
+assertEquals("x{100}bc", res[1382].exec("x{100}bcAa"), 4169);
+assertEquals("x{", res[1383].exec("x{100}bca"), 4170);
+assertEquals(null, res[1383].exec("abcd", 4171));
+assertEquals(null, res[1383].exec("abcd", 4172));
+assertEquals("x{", res[1383].exec("x{100}x{100} "), 4173);
+assertEquals("x{", res[1383].exec("x{100}x{100} "), 4174);
+assertEquals("x{", res[1383].exec("x{100}x{100}x{100}x{100} "), 4175);
+assertEquals(null, res[1383].exec("abce", 4176));
+assertEquals("x{", res[1383].exec("x{100}x{100}x{100}x{100} "), 4177);
+assertEquals(null, res[1383].exec("abcdx{100}x{100}x{100}x{100} ", 4178));
+assertEquals(null, res[1383].exec("abcdx{100}x{100}x{100}x{100} ", 4179));
+assertEquals(null, res[1383].exec("abcdx{100}x{100}x{100}x{100} ", 4180));
+assertEquals(null, res[1383].exec("abcdx{100}x{100}x{100}XX", 4181));
+assertEquals(null, res[1383].exec("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX", 4182));
+assertEquals(null, res[1383].exec("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX", 4183));
+assertEquals("Xy", res[1383].exec("Xyyyax{100}x{100}bXzzz"), 4184);
+assertEquals("X", res[1386].exec("1X2"), 4185);
+assertEquals("x", res[1386].exec("1x{100}2 "), 4186);
+assertEquals(">X", res[1387].exec("> >X Y"), 4187);
+assertEquals(">x", res[1387].exec("> >x{100} Y"), 4188);
+assertEquals("1", res[1388].exec("x{100}3"), 4189);
+assertEquals(" ", res[1389].exec("x{100} X"), 4190);
+assertEquals("abcd", res[1390].exec("12abcd34"), 4191);
+assertEquals("*** Failers", res[1390].exec("*** Failers"), 4192);
+assertEquals("  ", res[1390].exec("1234  "), 4193);
+assertEquals("abc", res[1391].exec("12abcd34"), 4194);
+assertEquals("ab", res[1391].exec("12ab34"), 4195);
+assertEquals("***", res[1391].exec("*** Failers  "), 4196);
+assertEquals(null, res[1391].exec("1234", 4197));
+assertEquals("  ", res[1391].exec("12a34  "), 4198);
+assertEquals("ab", res[1392].exec("12abcd34"), 4199);
+assertEquals("ab", res[1392].exec("12ab34"), 4200);
+assertEquals("**", res[1392].exec("*** Failers  "), 4201);
+assertEquals(null, res[1392].exec("1234", 4202));
+assertEquals("  ", res[1392].exec("12a34  "), 4203);
+assertEquals("12", res[1393].exec("12abcd34"), 4204);
+assertEquals(null, res[1393].exec("*** Failers", 4205));
+assertEquals("12", res[1394].exec("12abcd34"), 4206);
+assertEquals("123", res[1394].exec("1234abcd"), 4207);
+assertEquals(null, res[1394].exec("*** Failers  ", 4208));
+assertEquals(null, res[1394].exec("1.4 ", 4209));
+assertEquals("12", res[1395].exec("12abcd34"), 4210);
+assertEquals("12", res[1395].exec("1234abcd"), 4211);
+assertEquals(null, res[1395].exec("*** Failers  ", 4212));
+assertEquals(null, res[1395].exec("1.4 ", 4213));
+assertEquals("12abcd34", res[1396].exec("12abcd34"), 4214);
+assertEquals("***", res[1396].exec("*** Failers"), 4215);
+assertEquals(null, res[1396].exec("     ", 4216));
+assertEquals("12a", res[1397].exec("12abcd34"), 4217);
+assertEquals("123", res[1397].exec("1234abcd"), 4218);
+assertEquals("***", res[1397].exec("*** Failers"), 4219);
+assertEquals(null, res[1397].exec("       ", 4220));
+assertEquals("12", res[1398].exec("12abcd34"), 4221);
+assertEquals("12", res[1398].exec("1234abcd"), 4222);
+assertEquals("**", res[1398].exec("*** Failers"), 4223);
+assertEquals(null, res[1398].exec("       ", 4224));
+assertEquals(">      <", res[1399].exec("12>      <34"), 4225);
+assertEquals(null, res[1399].exec("*** Failers", 4226));
+assertEquals(">  <", res[1400].exec("ab>  <cd"), 4227);
+assertEquals(">   <", res[1400].exec("ab>   <ce"), 4228);
+assertEquals(null, res[1400].exec("*** Failers", 4229));
+assertEquals(null, res[1400].exec("ab>    <cd ", 4230));
+assertEquals(">  <", res[1401].exec("ab>  <cd"), 4231);
+assertEquals(">   <", res[1401].exec("ab>   <ce"), 4232);
+assertEquals(null, res[1401].exec("*** Failers", 4233));
+assertEquals(null, res[1401].exec("ab>    <cd ", 4234));
+assertEquals("12", res[1402].exec("12      34"), 4235);
+assertEquals("Failers", res[1402].exec("*** Failers"), 4236);
+assertEquals(null, res[1402].exec("+++=*! ", 4237));
+assertEquals("ab", res[1403].exec("ab  cd"), 4238);
+assertEquals("abc", res[1403].exec("abcd ce"), 4239);
+assertEquals("Fai", res[1403].exec("*** Failers"), 4240);
+assertEquals(null, res[1403].exec("a.b.c", 4241));
+assertEquals("ab", res[1404].exec("ab  cd"), 4242);
+assertEquals("ab", res[1404].exec("abcd ce"), 4243);
+assertEquals("Fa", res[1404].exec("*** Failers"), 4244);
+assertEquals(null, res[1404].exec("a.b.c", 4245));
+assertEquals("====", res[1405].exec("12====34"), 4246);
+assertEquals("*** ", res[1405].exec("*** Failers"), 4247);
+assertEquals(" ", res[1405].exec("abcd "), 4248);
+assertEquals("===", res[1406].exec("ab====cd"), 4249);
+assertEquals("==", res[1406].exec("ab==cd"), 4250);
+assertEquals("***", res[1406].exec("*** Failers"), 4251);
+assertEquals(null, res[1406].exec("a.b.c", 4252));
+assertEquals("==", res[1407].exec("ab====cd"), 4253);
+assertEquals("==", res[1407].exec("ab==cd"), 4254);
+assertEquals("**", res[1407].exec("*** Failers"), 4255);
+assertEquals(null, res[1407].exec("a.b.c", 4256));
+assertEquals(null, res[1407].exec("x{100}", 4257));
+assertEquals(null, res[1407].exec("Zx{100}", 4258));
+assertEquals(null, res[1407].exec("x{100}Z", 4259));
+assertEquals("**", res[1407].exec("*** Failers "), 4260);
+assertEquals(null, res[1407].exec("Zx{100}", 4261));
+assertEquals(null, res[1407].exec("x{100}", 4262));
+assertEquals(null, res[1407].exec("x{100}Z", 4263));
+assertEquals("**", res[1407].exec("*** Failers "), 4264);
+assertEquals(null, res[1407].exec("abcx{200}X", 4265));
+assertEquals(null, res[1407].exec("abcx{100}X ", 4266));
+assertEquals("**", res[1407].exec("*** Failers"), 4267);
+assertEquals("  ", res[1407].exec("X  "), 4268);
+assertEquals(null, res[1407].exec("abcx{200}X", 4269));
+assertEquals(null, res[1407].exec("abcx{100}X ", 4270));
+assertEquals(null, res[1407].exec("abQX ", 4271));
+assertEquals("**", res[1407].exec("*** Failers"), 4272);
+assertEquals("  ", res[1407].exec("X  "), 4273);
+assertEquals(null, res[1407].exec("abcx{100}x{200}x{100}X", 4274));
+assertEquals("**", res[1407].exec("*** Failers"), 4275);
+assertEquals(null, res[1407].exec("abcx{200}X", 4276));
+assertEquals("  ", res[1407].exec("X  "), 4277);
+assertEquals(null, res[1407].exec("AX", 4278));
+assertEquals(null, res[1407].exec("x{150}X", 4279));
+assertEquals(null, res[1407].exec("x{500}X ", 4280));
+assertEquals("**", res[1407].exec("*** Failers"), 4281);
+assertEquals(null, res[1407].exec("x{100}X", 4282));
+assertEquals("  ", res[1407].exec("x{200}X   "), 4283);
+assertEquals(null, res[1407].exec("AX", 4284));
+assertEquals(null, res[1407].exec("x{150}X", 4285));
+assertEquals(null, res[1407].exec("x{500}X ", 4286));
+assertEquals("**", res[1407].exec("*** Failers"), 4287);
+assertEquals(null, res[1407].exec("x{100}X", 4288));
+assertEquals("  ", res[1407].exec("x{200}X   "), 4289);
+assertEquals(null, res[1407].exec("QX ", 4290));
+assertEquals(null, res[1407].exec("AX", 4291));
+assertEquals(null, res[1407].exec("x{500}X ", 4292));
+assertEquals("**", res[1407].exec("*** Failers"), 4293);
+assertEquals(null, res[1407].exec("x{100}X", 4294));
+assertEquals(null, res[1407].exec("x{150}X", 4295));
+assertEquals("  ", res[1407].exec("x{200}X   "), 4296);
+assertEquals(null, res[1407].exec("z", 4297));
+assertEquals(null, res[1407].exec("Z ", 4298));
+assertEquals(null, res[1407].exec("x{100}", 4299));
+assertEquals("**", res[1407].exec("*** Failers"), 4300);
+assertEquals(null, res[1407].exec("x{102}", 4301));
+assertEquals("  ", res[1407].exec("y    "), 4302);
+assertEquals("\xff", res[1408].exec(">\xff<"), 4303);
+assertEquals(null, res[1409].exec(">x{ff}<", 4304));
+assertEquals("X", res[1410].exec("XYZ"), 4305);
+assertEquals("X", res[1411].exec("XYZ"), 4306);
+assertEquals("x", res[1411].exec("x{123} "), 4307);
+assertEquals(",", res[1416].exec("catac"), 4308);
+assertEquals(",", res[1416].exec("ax{256}a "), 4309);
+assertEquals(",", res[1416].exec("x{85}"), 4310);
+assertEquals("abc1", res[1417].exec("abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 x{0085}abc7 x{2028}abc8 x{2029}abc9 JUNK"), 4311);
+assertEquals("abc1", res[1418].exec("abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6x{0085} abc7x{2028} abc8x{2029} abc9"), 4312);
+assertEquals(null, res[1419].exec("a\nb", 4313));
+assertEquals(null, res[1419].exec("a\x0db", 4314));
+assertEquals(null, res[1419].exec("a\x0d\nb", 4315));
+assertEquals(null, res[1419].exec("a\x0bb", 4316));
+assertEquals(null, res[1419].exec("a\x0cb", 4317));
+assertEquals(null, res[1419].exec("ax{85}b   ", 4318));
+assertEquals(null, res[1419].exec("ax{2028}b ", 4319));
+assertEquals(null, res[1419].exec("ax{2029}b ", 4320));
+assertEquals(null, res[1419].exec("** Failers", 4321));
+assertEquals(null, res[1419].exec("a\n\x0db    ", 4322));
+assertEquals("ab", res[1420].exec("ab"), 4323);
+assertEquals(null, res[1420].exec("a\nb", 4324));
+assertEquals(null, res[1420].exec("a\x0db", 4325));
+assertEquals(null, res[1420].exec("a\x0d\nb", 4326));
+assertEquals(null, res[1420].exec("a\x0bb", 4327));
+assertEquals(null, res[1420].exec("a\x0cx{2028}x{2029}b", 4328));
+assertEquals(null, res[1420].exec("ax{85}b   ", 4329));
+assertEquals(null, res[1420].exec("a\n\x0db    ", 4330));
+assertEquals(null, res[1420].exec("a\n\x0dx{85}\x0cb ", 4331));
+assertEquals(null, res[1421].exec("a\nb", 4332));
+assertEquals(null, res[1421].exec("a\x0db", 4333));
+assertEquals(null, res[1421].exec("a\x0d\nb", 4334));
+assertEquals(null, res[1421].exec("a\x0bb", 4335));
+assertEquals(null, res[1421].exec("a\x0cx{2028}x{2029}b", 4336));
+assertEquals(null, res[1421].exec("ax{85}b   ", 4337));
+assertEquals(null, res[1421].exec("a\n\x0db    ", 4338));
+assertEquals(null, res[1421].exec("a\n\x0dx{85}\x0cb ", 4339));
+assertEquals(null, res[1421].exec("** Failers", 4340));
+assertEquals(null, res[1421].exec("ab  ", 4341));
+assertEquals(null, res[1422].exec("a\nb", 4342));
+assertEquals(null, res[1422].exec("a\n\x0db", 4343));
+assertEquals(null, res[1422].exec("a\n\x0dx{85}b", 4344));
+assertEquals(null, res[1422].exec("a\x0d\n\x0d\nb ", 4345));
+assertEquals(null, res[1422].exec("a\x0d\n\x0d\n\x0d\nb ", 4346));
+assertEquals(null, res[1422].exec("a\n\x0d\n\x0db", 4347));
+assertEquals(null, res[1422].exec("a\n\n\x0d\nb ", 4348));
+assertEquals(null, res[1422].exec("** Failers", 4349));
+assertEquals(null, res[1422].exec("a\n\n\n\x0db", 4350));
+assertEquals(null, res[1422].exec("a\x0d", 4351));
+assertEquals(null, res[1423].exec("\x09 x{a0}X\n\x0b\x0c\x0d\n", 4352));
+assertEquals(null, res[1424].exec(" x{a0}X\n\x0b\x0c\x0d\n", 4353));
+assertEquals(null, res[1425].exec(">\x09 x{a0}X\n\n\n<", 4354));
+assertEquals(null, res[1426].exec(">\x09 x{a0}X\n\n\n<", 4355));
+assertEquals(null, res[1427].exec("X X\n", 4356));
+assertEquals(null, res[1427].exec("X\x09X\x0b", 4357));
+assertEquals(null, res[1427].exec("** Failers", 4358));
+assertEquals(null, res[1427].exec("x{a0} X\n   ", 4359));
+assertEquals(null, res[1428].exec("\x09 x{a0}X\n\x0b\x0c\x0d\n", 4360));
+assertEquals(null, res[1428].exec("\x09 x{a0}\n\x0b\x0c\x0d\n", 4361));
+assertEquals(null, res[1428].exec("\x09 x{a0}\n\x0b\x0c", 4362));
+assertEquals(null, res[1428].exec("** Failers ", 4363));
+assertEquals(null, res[1428].exec("\x09 x{a0}\n\x0b", 4364));
+assertEquals(null, res[1428].exec(" ", 4365));
+assertEquals(null, res[1429].exec("x{3001}x{3000}x{2030}x{2028}", 4366));
+assertEquals(null, res[1429].exec("Xx{180e}Xx{85}", 4367));
+assertEquals(null, res[1429].exec("** Failers", 4368));
+assertEquals(null, res[1429].exec("x{2009} X\n   ", 4369));
+assertEquals(null, res[1430].exec("x{1680}x{180e}x{2007}Xx{2028}x{2029}\x0c\x0d\n", 4370));
+assertEquals(null, res[1430].exec("\x09x{205f}x{a0}\nx{2029}\x0cx{2028}\n", 4371));
+assertEquals(null, res[1430].exec("\x09 x{202f}\n\x0b\x0c", 4372));
+assertEquals(null, res[1430].exec("** Failers ", 4373));
+assertEquals(null, res[1430].exec("\x09x{200a}x{a0}x{2028}\x0b", 4374));
+assertEquals(null, res[1430].exec(" ", 4375));
+assertEquals(null, res[1431].exec("a\x0db", 4376));
+assertEquals(null, res[1431].exec("a\nb", 4377));
+assertEquals(null, res[1431].exec("a\x0d\nb", 4378));
+assertEquals(null, res[1431].exec("** Failers", 4379));
+assertEquals(null, res[1431].exec("ax{85}b", 4380));
+assertEquals(null, res[1431].exec("a\x0bb     ", 4381));
+assertEquals(null, res[1432].exec("a\x0db", 4382));
+assertEquals(null, res[1432].exec("a\nb", 4383));
+assertEquals(null, res[1432].exec("a\x0d\nb", 4384));
+assertEquals(null, res[1432].exec("ax{85}b", 4385));
+assertEquals(null, res[1432].exec("a\x0bb     ", 4386));
+assertEquals(null, res[1432].exec("** Failers ", 4387));
+assertEquals(null, res[1432].exec("ax{85}b<bsr_anycrlf>", 4388));
+assertEquals(null, res[1432].exec("a\x0bb<bsr_anycrlf>", 4389));
+assertEquals(null, res[1433].exec("a\x0db", 4390));
+assertEquals(null, res[1433].exec("a\nb", 4391));
+assertEquals(null, res[1433].exec("a\x0d\nb", 4392));
+assertEquals(null, res[1433].exec("** Failers", 4393));
+assertEquals(null, res[1433].exec("ax{85}b", 4394));
+assertEquals(null, res[1433].exec("a\x0bb     ", 4395));
+assertEquals(null, res[1434].exec("a\x0db", 4396));
+assertEquals(null, res[1434].exec("a\nb", 4397));
+assertEquals(null, res[1434].exec("a\x0d\nb", 4398));
+assertEquals(null, res[1434].exec("ax{85}b", 4399));
+assertEquals(null, res[1434].exec("a\x0bb     ", 4400));
+assertEquals(null, res[1434].exec("** Failers ", 4401));
+assertEquals(null, res[1434].exec("ax{85}b<bsr_anycrlf>", 4402));
+assertEquals(null, res[1434].exec("a\x0bb<bsr_anycrlf>", 4403));
+assertEquals("X", res[1435].exec("Ax{1ec5}ABCXYZ"), 4404);
+assertEquals(null, res[1437].exec("AB", 4405));
+assertEquals(null, res[1437].exec("*** Failers", 4406));
+assertEquals(null, res[1437].exec("A0", 4407));
+assertEquals(null, res[1437].exec("00   ", 4408));
+assertEquals(null, res[1438].exec("AB", 4409));
+assertEquals(null, res[1438].exec("Ax{300}BC ", 4410));
+assertEquals(null, res[1438].exec("Ax{300}x{301}x{302}BC ", 4411));
+assertEquals(null, res[1438].exec("*** Failers", 4412));
+assertEquals(null, res[1438].exec("x{300}  ", 4413));
+assertEquals(null, res[1439].exec("ABC", 4414));
+assertEquals(null, res[1439].exec("Ax{300}Bx{300}x{301}C ", 4415));
+assertEquals(null, res[1439].exec("Ax{300}x{301}x{302}BC ", 4416));
+assertEquals(null, res[1439].exec("*** Failers", 4417));
+assertEquals(null, res[1439].exec("x{300}  ", 4418));
+assertEquals(null, res[1440].exec("abcd", 4419));
+assertEquals(null, res[1440].exec("a ", 4420));
+assertEquals(null, res[1440].exec("*** Failers ", 4421));
+assertEquals(null, res[1441].exec("1234", 4422));
+assertEquals(null, res[1441].exec("= ", 4423));
+assertEquals(null, res[1441].exec("*** Failers ", 4424));
+assertEquals(null, res[1441].exec("abcd ", 4425));
+assertEquals(null, res[1442].exec("abcdAx{300}x{301}x{302}", 4426));
+assertEquals(null, res[1442].exec("Ax{300}x{301}x{302}", 4427));
+assertEquals(null, res[1442].exec("Ax{300}x{301}x{302}Ax{300}x{301}x{302}", 4428));
+assertEquals(null, res[1442].exec("a ", 4429));
+assertEquals(null, res[1442].exec("*** Failers ", 4430));
+assertEquals(null, res[1442].exec("x{300}x{301}x{302}", 4431));
+assertEquals("abc", res[1443].exec("abc"), 4432);
+assertEquals("abc", res[1443].exec("Ax{300}abc"), 4433);
+assertEquals("abc", res[1443].exec("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz"), 4434);
+assertEquals("abc", res[1443].exec("x{300}abc  "), 4435);
+assertEquals(null, res[1443].exec("*** Failers", 4436));
+assertEquals("abc", res[1444].exec("abc"), 4437);
+assertEquals(null, res[1444].exec("Ax{300}abc", 4438));
+assertEquals(null, res[1444].exec("*** Failers", 4439));
+assertEquals(null, res[1444].exec("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz", 4440));
+assertEquals(null, res[1444].exec("x{300}abc  ", 4441));
+assertEquals("abc", res[1445].exec("abc"), 4442);
+assertEquals("abc", res[1445].exec("Ax{300}abc"), 4443);
+assertEquals("abc", res[1445].exec("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz"), 4444);
+assertEquals("abc", res[1445].exec("x{300}abc  "), 4445);
+assertEquals(null, res[1445].exec("*** Failers", 4446));
+assertEquals("abc", res[1446].exec("abc"), 4447);
+assertEquals(null, res[1446].exec("Ax{300}abc", 4448));
+assertEquals(null, res[1446].exec("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz", 4449));
+assertEquals(null, res[1446].exec("*** Failers", 4450));
+assertEquals(null, res[1446].exec("x{300}abc  ", 4451));
+assertEquals(null, res[1447].exec("A=b", 4452));
+assertEquals(null, res[1447].exec("=c ", 4453));
+assertEquals(null, res[1447].exec("*** Failers", 4454));
+assertEquals(null, res[1447].exec("1=2 ", 4455));
+assertEquals(null, res[1447].exec("AAAA=b  ", 4456));
+assertEquals(null, res[1448].exec("AAAA=b", 4457));
+assertEquals(null, res[1448].exec("=c ", 4458));
+assertEquals(null, res[1448].exec("*** Failers", 4459));
+assertEquals(null, res[1448].exec("1=2  ", 4460));
+assertEquals(null, res[1449].exec("Ax{300}x{301}x{302}Ax{300}x{301}x{302}X", 4461));
+assertEquals(null, res[1449].exec("Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}X ", 4462));
+assertEquals(null, res[1449].exec("*** Failers", 4463));
+assertEquals(null, res[1449].exec("X", 4464));
+assertEquals(null, res[1449].exec("Ax{300}x{301}x{302}X", 4465));
+assertEquals(null, res[1449].exec("Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}X", 4466));
+assertEquals(null, res[1450].exec("x{c0}x{30f}x{660}x{66c}x{f01}x{1680}<", 4467));
+assertEquals(null, res[1450].exec("\npx{300}9!$ < ", 4468));
+assertEquals(null, res[1450].exec("** Failers ", 4469));
+assertEquals(null, res[1450].exec("apx{300}9!$ < ", 4470));
+assertEquals(null, res[1451].exec("X", 4471));
+assertEquals(null, res[1451].exec("** Failers ", 4472));
+assertEquals(null, res[1451].exec("", 4473));
+assertEquals(null, res[1452].exec("9", 4474));
+assertEquals(null, res[1452].exec("** Failers ", 4475));
+assertEquals(null, res[1452].exec("x{c0}", 4476));
+assertEquals(null, res[1453].exec("X", 4477));
+assertEquals(null, res[1453].exec("** Failers ", 4478));
+assertEquals(null, res[1453].exec("x{30f}", 4479));
+assertEquals(null, res[1454].exec("X", 4480));
+assertEquals(null, res[1454].exec("** Failers ", 4481));
+assertEquals(null, res[1454].exec("x{660}", 4482));
+assertEquals(null, res[1455].exec("X", 4483));
+assertEquals(null, res[1455].exec("** Failers ", 4484));
+assertEquals(null, res[1455].exec("x{66c}", 4485));
+assertEquals(null, res[1456].exec("X", 4486));
+assertEquals(null, res[1456].exec("** Failers ", 4487));
+assertEquals(null, res[1456].exec("x{f01}", 4488));
+assertEquals(null, res[1457].exec("X", 4489));
+assertEquals(null, res[1457].exec("** Failers ", 4490));
+assertEquals(null, res[1457].exec("x{1680}", 4491));
+assertEquals(null, res[1458].exec("x{017}", 4492));
+assertEquals(null, res[1458].exec("x{09f} ", 4493));
+assertEquals(null, res[1458].exec("** Failers", 4494));
+assertEquals(null, res[1458].exec("x{0600} ", 4495));
+assertEquals(null, res[1459].exec("x{601}", 4496));
+assertEquals(null, res[1459].exec("** Failers", 4497));
+assertEquals(null, res[1459].exec("x{09f} ", 4498));
+assertEquals(null, res[1460].exec("** Failers", 4499));
+assertEquals(null, res[1460].exec("x{09f} ", 4500));
+assertEquals(null, res[1461].exec("x{f8ff}", 4501));
+assertEquals(null, res[1461].exec("** Failers", 4502));
+assertEquals(null, res[1461].exec("x{09f} ", 4503));
+assertEquals(null, res[1462].exec("?x{dfff}", 4504));
+assertEquals(null, res[1462].exec("** Failers", 4505));
+assertEquals(null, res[1462].exec("x{09f} ", 4506));
+assertEquals(null, res[1463].exec("a", 4507));
+assertEquals(null, res[1463].exec("** Failers ", 4508));
+assertEquals(null, res[1463].exec("Z", 4509));
+assertEquals(null, res[1463].exec("x{e000}  ", 4510));
+assertEquals(null, res[1464].exec("x{2b0}", 4511));
+assertEquals(null, res[1464].exec("** Failers", 4512));
+assertEquals(null, res[1464].exec("a ", 4513));
+assertEquals(null, res[1465].exec("x{1bb}", 4514));
+assertEquals(null, res[1465].exec("** Failers", 4515));
+assertEquals(null, res[1465].exec("a ", 4516));
+assertEquals(null, res[1465].exec("x{2b0}", 4517));
+assertEquals(null, res[1466].exec("x{1c5}", 4518));
+assertEquals(null, res[1466].exec("** Failers", 4519));
+assertEquals(null, res[1466].exec("a ", 4520));
+assertEquals(null, res[1466].exec("x{2b0}", 4521));
+assertEquals(null, res[1467].exec("A", 4522));
+assertEquals(null, res[1467].exec("** Failers", 4523));
+assertEquals(null, res[1467].exec("x{2b0}", 4524));
+assertEquals(null, res[1468].exec("x{903}", 4525));
+assertEquals(null, res[1468].exec("** Failers", 4526));
+assertEquals(null, res[1468].exec("X", 4527));
+assertEquals(null, res[1468].exec("x{300}", 4528));
+assertEquals(null, res[1468].exec("   ", 4529));
+assertEquals(null, res[1469].exec("x{488}", 4530));
+assertEquals(null, res[1469].exec("** Failers", 4531));
+assertEquals(null, res[1469].exec("X", 4532));
+assertEquals(null, res[1469].exec("x{903}", 4533));
+assertEquals(null, res[1469].exec("x{300}", 4534));
+assertEquals(null, res[1470].exec("x{300}", 4535));
+assertEquals(null, res[1470].exec("** Failers", 4536));
+assertEquals(null, res[1470].exec("X", 4537));
+assertEquals(null, res[1470].exec("x{903}", 4538));
+assertEquals(null, res[1470].exec("0123456789x{660}x{661}x{662}x{663}x{664}x{665}x{666}x{667}x{668}x{669}x{66a}", 4539));
+assertEquals(null, res[1470].exec("x{6f0}x{6f1}x{6f2}x{6f3}x{6f4}x{6f5}x{6f6}x{6f7}x{6f8}x{6f9}x{6fa}", 4540));
+assertEquals(null, res[1470].exec("x{966}x{967}x{968}x{969}x{96a}x{96b}x{96c}x{96d}x{96e}x{96f}x{970}", 4541));
+assertEquals(null, res[1470].exec("** Failers", 4542));
+assertEquals(null, res[1470].exec("X", 4543));
+assertEquals(null, res[1471].exec("x{16ee}", 4544));
+assertEquals(null, res[1471].exec("** Failers", 4545));
+assertEquals(null, res[1471].exec("X", 4546));
+assertEquals(null, res[1471].exec("x{966}", 4547));
+assertEquals(null, res[1472].exec("x{b2}", 4548));
+assertEquals(null, res[1472].exec("x{b3}", 4549));
+assertEquals(null, res[1472].exec("** Failers", 4550));
+assertEquals(null, res[1472].exec("X", 4551));
+assertEquals(null, res[1472].exec("x{16ee}", 4552));
+assertEquals(null, res[1473].exec("_", 4553));
+assertEquals(null, res[1473].exec("x{203f}", 4554));
+assertEquals(null, res[1473].exec("** Failers", 4555));
+assertEquals(null, res[1473].exec("X", 4556));
+assertEquals(null, res[1473].exec("-", 4557));
+assertEquals(null, res[1473].exec("x{58a}", 4558));
+assertEquals(null, res[1474].exec("-", 4559));
+assertEquals(null, res[1474].exec("x{58a}", 4560));
+assertEquals(null, res[1474].exec("** Failers", 4561));
+assertEquals(null, res[1474].exec("X", 4562));
+assertEquals(null, res[1474].exec("x{203f}", 4563));
+assertEquals(null, res[1475].exec(")", 4564));
+assertEquals(null, res[1475].exec("]", 4565));
+assertEquals(null, res[1475].exec("}", 4566));
+assertEquals(null, res[1475].exec("x{f3b}", 4567));
+assertEquals(null, res[1475].exec("** Failers", 4568));
+assertEquals(null, res[1475].exec("X", 4569));
+assertEquals(null, res[1475].exec("x{203f}", 4570));
+assertEquals(null, res[1475].exec("(", 4571));
+assertEquals(null, res[1475].exec("[", 4572));
+assertEquals(null, res[1475].exec("{", 4573));
+assertEquals(null, res[1475].exec("x{f3c}", 4574));
+assertEquals(null, res[1476].exec("x{bb}", 4575));
+assertEquals(null, res[1476].exec("x{2019}", 4576));
+assertEquals(null, res[1476].exec("** Failers", 4577));
+assertEquals(null, res[1476].exec("X", 4578));
+assertEquals(null, res[1476].exec("x{203f}", 4579));
+assertEquals(null, res[1477].exec("x{ab}", 4580));
+assertEquals(null, res[1477].exec("x{2018}", 4581));
+assertEquals(null, res[1477].exec("** Failers", 4582));
+assertEquals(null, res[1477].exec("X", 4583));
+assertEquals(null, res[1477].exec("x{203f}", 4584));
+assertEquals(null, res[1478].exec("!", 4585));
+assertEquals(null, res[1478].exec("x{37e}", 4586));
+assertEquals(null, res[1478].exec("** Failers", 4587));
+assertEquals(null, res[1478].exec("X", 4588));
+assertEquals(null, res[1478].exec("x{203f}", 4589));
+assertEquals(null, res[1479].exec("(", 4590));
+assertEquals(null, res[1479].exec("[", 4591));
+assertEquals(null, res[1479].exec("{", 4592));
+assertEquals(null, res[1479].exec("x{f3c}", 4593));
+assertEquals(null, res[1479].exec("** Failers", 4594));
+assertEquals(null, res[1479].exec("X", 4595));
+assertEquals(null, res[1479].exec(")", 4596));
+assertEquals(null, res[1479].exec("]", 4597));
+assertEquals(null, res[1479].exec("}", 4598));
+assertEquals(null, res[1479].exec("x{f3b}", 4599));
+assertEquals(null, res[1479].exec("$x{a2}x{a3}x{a4}x{a5}x{a6}", 4600));
+assertEquals(null, res[1479].exec("x{9f2}", 4601));
+assertEquals(null, res[1479].exec("** Failers", 4602));
+assertEquals(null, res[1479].exec("X", 4603));
+assertEquals(null, res[1479].exec("x{2c2}", 4604));
+assertEquals(null, res[1480].exec("x{2c2}", 4605));
+assertEquals(null, res[1480].exec("** Failers", 4606));
+assertEquals(null, res[1480].exec("X", 4607));
+assertEquals(null, res[1480].exec("x{9f2}", 4608));
+assertEquals(null, res[1480].exec("+<|~x{ac}x{2044}", 4609));
+assertEquals(null, res[1480].exec("** Failers", 4610));
+assertEquals(null, res[1480].exec("X", 4611));
+assertEquals(null, res[1480].exec("x{9f2}", 4612));
+assertEquals(null, res[1481].exec("x{a6}", 4613));
+assertEquals(null, res[1481].exec("x{482} ", 4614));
+assertEquals(null, res[1481].exec("** Failers", 4615));
+assertEquals(null, res[1481].exec("X", 4616));
+assertEquals(null, res[1481].exec("x{9f2}", 4617));
+assertEquals(null, res[1482].exec("x{2028}", 4618));
+assertEquals(null, res[1482].exec("** Failers", 4619));
+assertEquals(null, res[1482].exec("X", 4620));
+assertEquals(null, res[1482].exec("x{2029}", 4621));
+assertEquals(null, res[1483].exec("x{2029}", 4622));
+assertEquals(null, res[1483].exec("** Failers", 4623));
+assertEquals(null, res[1483].exec("X", 4624));
+assertEquals(null, res[1483].exec("x{2028}", 4625));
+assertEquals(null, res[1484].exec("\\ \\", 4626));
+assertEquals(null, res[1484].exec("x{a0}", 4627));
+assertEquals(null, res[1484].exec("x{1680}", 4628));
+assertEquals(null, res[1484].exec("x{180e}", 4629));
+assertEquals(null, res[1484].exec("x{2000}", 4630));
+assertEquals(null, res[1484].exec("x{2001}     ", 4631));
+assertEquals(null, res[1484].exec("** Failers", 4632));
+assertEquals(null, res[1484].exec("x{2028}", 4633));
+assertEquals(null, res[1484].exec("x{200d} ", 4634));
+assertEquals(null, res[1484].exec("  x{660}x{661}x{662}ABC", 4635));
+assertEquals(null, res[1484].exec("  x{660}x{661}x{662}ABC", 4636));
+assertEquals(null, res[1485].exec("  x{660}x{661}x{662}ABC", 4637));
+assertEquals(null, res[1486].exec("  x{660}x{661}x{662}ABC", 4638));
+assertEquals(null, res[1487].exec("  x{660}x{661}x{662}ABC", 4639));
+assertEquals(null, res[1488].exec("  x{660}x{661}x{662}ABC", 4640));
+assertEquals(null, res[1489].exec("  x{660}x{661}x{662}ABC", 4641));
+assertEquals(null, res[1490].exec("  x{660}x{661}x{662}ABC", 4642));
+assertEquals(null, res[1491].exec("  x{660}x{661}x{662}ABC", 4643));
+assertEquals(null, res[1492].exec("  x{660}x{661}x{662}ABC", 4644));
+assertEquals(null, res[1493].exec("  x{660}x{661}x{662}ABC", 4645));
+assertEquals(null, res[1493].exec("  x{660}x{661}x{662}ABC", 4646));
+assertEquals(null, res[1493].exec("  x{660}x{661}x{662}ABC", 4647));
+assertEquals(null, res[1493].exec("  ** Failers", 4648));
+assertEquals(null, res[1493].exec("  x{660}x{661}x{662}ABC", 4649));
+assertEquals(null, res[1494].exec("A", 4650));
+assertEquals(null, res[1494].exec("ax{10a0}B ", 4651));
+assertEquals(null, res[1494].exec("** Failers ", 4652));
+assertEquals(null, res[1494].exec("a", 4653));
+assertEquals(null, res[1494].exec("x{1d00}  ", 4654));
+assertEquals(null, res[1495].exec("1234", 4655));
+assertEquals(null, res[1495].exec("** Failers", 4656));
+assertEquals(null, res[1495].exec("ABC ", 4657));
+assertEquals(null, res[1496].exec("1234", 4658));
+assertEquals(null, res[1496].exec("** Failers", 4659));
+assertEquals(null, res[1496].exec("ABC ", 4660));
+assertEquals(null, res[1496].exec("A2XYZ", 4661));
+assertEquals(null, res[1496].exec("123A5XYZPQR", 4662));
+assertEquals(null, res[1496].exec("ABAx{660}XYZpqr", 4663));
+assertEquals(null, res[1496].exec("** Failers", 4664));
+assertEquals(null, res[1496].exec("AXYZ", 4665));
+assertEquals(null, res[1496].exec("XYZ     ", 4666));
+assertEquals(null, res[1496].exec("1XYZ", 4667));
+assertEquals(null, res[1496].exec("AB=XYZ.. ", 4668));
+assertEquals(null, res[1496].exec("XYZ ", 4669));
+assertEquals(null, res[1496].exec("** Failers", 4670));
+assertEquals(null, res[1496].exec("WXYZ ", 4671));
+assertEquals(null, res[1497].exec("1234", 4672));
+assertEquals(null, res[1497].exec("1234", 4673));
+assertEquals(null, res[1497].exec("12-34", 4674));
+assertEquals("{", res[1497].exec("12+x{661}-34  "), 4675);
+assertEquals(null, res[1497].exec("** Failers", 4676));
+assertEquals("d", res[1497].exec("abcd  "), 4677);
+assertEquals("d", res[1498].exec("abcd"), 4678);
+assertEquals(null, res[1498].exec("** Failers", 4679));
+assertEquals(null, res[1498].exec("1234", 4680));
+assertEquals(null, res[1499].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4681));
+assertEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1499].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4682);
+assertEquals(" ", res[1499].exec(" "), 4683);
+assertEquals(null, res[1499].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4684));
+assertEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1499].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4685);
+assertEquals(null, res[1500].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4686));
+assertEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1500].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4687);
+assertEquals(null, res[1501].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4688));
+assertEquals(null, res[1501].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 4689));
+assertEquals(null, res[1502].exec("11111111111111111111111111111111111111111111111111111111111111111111111", 4690));
+assertEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", res[1502].exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), 4691);
+assertEquals(null, res[1503].exec("a", 4692));
+assertEquals(null, res[1503].exec("A ", 4693));
+assertEquals(null, res[1504].exec("a", 4694));
+assertEquals(null, res[1504].exec("A ", 4695));
+assertEquals(null, res[1505].exec("A", 4696));
+assertEquals(null, res[1505].exec("aZ", 4697));
+assertEquals(null, res[1505].exec("** Failers", 4698));
+assertEquals(null, res[1505].exec("abc   ", 4699));
+assertEquals(null, res[1506].exec("A", 4700));
+assertEquals(null, res[1506].exec("aZ", 4701));
+assertEquals(null, res[1506].exec("** Failers", 4702));
+assertEquals(null, res[1506].exec("abc   ", 4703));
+assertEquals(null, res[1507].exec("a", 4704));
+assertEquals(null, res[1507].exec("Az", 4705));
+assertEquals(null, res[1507].exec("** Failers", 4706));
+assertEquals(null, res[1507].exec("ABC   ", 4707));
+assertEquals(null, res[1508].exec("a", 4708));
+assertEquals(null, res[1508].exec("Az", 4709));
+assertEquals(null, res[1508].exec("** Failers", 4710));
+assertEquals(null, res[1508].exec("ABC   ", 4711));
+assertEquals(null, res[1508].exec("x{c0}", 4712));
+assertEquals(null, res[1508].exec("x{e0} ", 4713));
+assertEquals(null, res[1508].exec("x{c0}", 4714));
+assertEquals(null, res[1508].exec("x{e0} ", 4715));
+assertEquals(null, res[1508].exec("Ax{391}x{10427}x{ff3a}x{1fb0}", 4716));
+assertEquals(null, res[1508].exec("** Failers", 4717));
+assertEquals(null, res[1508].exec("ax{391}x{10427}x{ff3a}x{1fb0}   ", 4718));
+assertEquals(null, res[1508].exec("Ax{3b1}x{10427}x{ff3a}x{1fb0}", 4719));
+assertEquals(null, res[1508].exec("Ax{391}x{1044F}x{ff3a}x{1fb0}", 4720));
+assertEquals(null, res[1508].exec("Ax{391}x{10427}x{ff5a}x{1fb0}", 4721));
+assertEquals(null, res[1508].exec("Ax{391}x{10427}x{ff3a}x{1fb8}", 4722));
+assertEquals(null, res[1508].exec("Ax{391}x{10427}x{ff3a}x{1fb0}", 4723));
+assertEquals(null, res[1508].exec("ax{391}x{10427}x{ff3a}x{1fb0}   ", 4724));
+assertEquals(null, res[1508].exec("Ax{3b1}x{10427}x{ff3a}x{1fb0}", 4725));
+assertEquals(null, res[1508].exec("Ax{391}x{1044F}x{ff3a}x{1fb0}", 4726));
+assertEquals(null, res[1508].exec("Ax{391}x{10427}x{ff5a}x{1fb0}", 4727));
+assertEquals(null, res[1508].exec("Ax{391}x{10427}x{ff3a}x{1fb8}", 4728));
+assertEquals(null, res[1508].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}", 4729));
+assertEquals(null, res[1508].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}X", 4730));
+assertEquals(null, res[1508].exec("x{391}x{3b1}x{3b1}x{3b1}x{391}X", 4731));
+assertEquals(null, res[1508].exec("x{391}", 4732));
+assertEquals(null, res[1508].exec("x{ff3a}", 4733));
+assertEquals(null, res[1508].exec("x{3b1}", 4734));
+assertEquals(null, res[1508].exec("x{ff5a}   ", 4735));
+assertEquals(null, res[1508].exec("x{c0}", 4736));
+assertEquals(null, res[1508].exec("x{e0} ", 4737));
+assertEquals(null, res[1508].exec("x{104}", 4738));
+assertEquals(null, res[1508].exec("x{105}", 4739));
+assertEquals(null, res[1508].exec("x{109}  ", 4740));
+assertEquals(null, res[1508].exec("** Failers", 4741));
+assertEquals(null, res[1508].exec("x{100}", 4742));
+assertEquals(null, res[1508].exec("x{10a} ", 4743));
+assertEquals(null, res[1508].exec("Z", 4744));
+assertEquals(null, res[1508].exec("z", 4745));
+assertEquals(null, res[1508].exec("x{39c}", 4746));
+assertEquals(null, res[1508].exec("x{178}", 4747));
+assertEquals(null, res[1508].exec("|", 4748));
+assertEquals(null, res[1508].exec("x{80}", 4749));
+assertEquals(null, res[1508].exec("x{ff}", 4750));
+assertEquals(null, res[1508].exec("x{100}", 4751));
+assertEquals(null, res[1508].exec("x{101} ", 4752));
+assertEquals(null, res[1508].exec("** Failers", 4753));
+assertEquals(null, res[1508].exec("x{102}", 4754));
+assertEquals(null, res[1508].exec("Y", 4755));
+assertEquals(null, res[1508].exec("y           ", 4756));
+assertEquals(null, res[1509].exec("A", 4757));
+assertEquals(null, res[1509].exec("Ax{300}BC ", 4758));
+assertEquals(null, res[1509].exec("Ax{300}x{301}x{302}BC ", 4759));
+assertEquals(null, res[1509].exec("*** Failers", 4760));
+assertEquals(null, res[1509].exec("x{300}  ", 4761));
+assertEquals("X", res[1510].exec("X123"), 4762);
+assertEquals(null, res[1510].exec("*** Failers", 4763));
+assertEquals(null, res[1510].exec("AXYZ", 4764));
+assertEquals(null, res[1511].exec("Ax{300}x{301}x{302}BCAx{300}x{301} ", 4765));
+assertEquals(null, res[1511].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C ", 4766));
+assertEquals(null, res[1512].exec("Ax{300}x{301}x{302}BCAx{300}x{301} ", 4767));
+assertEquals(null, res[1512].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C ", 4768));
+assertEquals("A,,A", res[1513].exec("Ax{300}x{301}x{302}BCAx{300}x{301} "), 4769);
+assertEquals("A,,A", res[1513].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 4770);
+assertEquals("A,,A", res[1514].exec("Ax{300}x{301}x{302}BCAx{300}x{301} "), 4771);
+assertEquals("A,,A", res[1514].exec("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 4772);
+assertEquals(null, res[1515].exec("*** Failers", 4773));
+assertEquals(null, res[1515].exec("Ax{300}x{301}x{302}", 4774));
+assertEquals(null, res[1516].exec("Ax{300}x{301}Bx{300}X", 4775));
+assertEquals(null, res[1516].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}", 4776));
+assertEquals(null, res[1516].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}X", 4777));
+assertEquals(null, res[1516].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X", 4778));
+assertEquals(null, res[1517].exec("Ax{300}x{301}Bx{300}X", 4779));
+assertEquals(null, res[1517].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}", 4780));
+assertEquals(null, res[1517].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}X", 4781));
+assertEquals(null, res[1517].exec("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X", 4782));
+assertEquals(null, res[1518].exec("12X", 4783));
+assertEquals(null, res[1518].exec("123X", 4784));
+assertEquals(null, res[1518].exec("*** Failers", 4785));
+assertEquals(null, res[1518].exec("X", 4786));
+assertEquals(null, res[1518].exec("1X", 4787));
+assertEquals(null, res[1518].exec("1234X     ", 4788));
+assertEquals(null, res[1518].exec("x{100}   ", 4789));
+assertEquals(null, res[1518].exec("x{101} ", 4790));
+assertEquals(null, res[1518].exec("x{2e81}x{3007}x{2f804}x{31a0}", 4791));
+assertEquals(null, res[1518].exec("** Failers", 4792));
+assertEquals(null, res[1518].exec("x{2e7f}  ", 4793));
+assertEquals(null, res[1518].exec("x{3105}", 4794));
+assertEquals(null, res[1518].exec("** Failers", 4795));
+assertEquals(null, res[1518].exec("x{30ff}  ", 4796));
+assertEquals(null, res[1519].exec("x{06e9}", 4797));
+assertEquals(null, res[1519].exec("x{060b}", 4798));
+assertEquals(null, res[1519].exec("** Failers", 4799));
+assertEquals(null, res[1519].exec("Xx{06e9}   ", 4800));
+assertEquals(null, res[1520].exec("x{2f800}", 4801));
+assertEquals(null, res[1520].exec("** Failers", 4802));
+assertEquals(null, res[1520].exec("x{a014}", 4803));
+assertEquals(null, res[1520].exec("x{a4c6}   ", 4804));
+assertEquals(null, res[1521].exec("AXYZ", 4805));
+assertEquals(null, res[1521].exec("x{1234}XYZ ", 4806));
+assertEquals(null, res[1521].exec("** Failers", 4807));
+assertEquals(null, res[1521].exec("X  ", 4808));
+assertEquals(null, res[1522].exec("** Failers", 4809));
+assertEquals(null, res[1522].exec("AX", 4810));
+assertEquals(null, res[1523].exec("XYZ", 4811));
+assertEquals(null, res[1523].exec("AXYZ", 4812));
+assertEquals(null, res[1523].exec("x{1234}XYZ ", 4813));
+assertEquals(null, res[1523].exec("** Failers", 4814));
+assertEquals(null, res[1523].exec("ABXYZ   ", 4815));
+assertEquals(null, res[1524].exec("XYZ", 4816));
+assertEquals(null, res[1524].exec("** Failers", 4817));
+assertEquals(null, res[1524].exec("AXYZ", 4818));
+assertEquals(null, res[1524].exec("x{1234}XYZ ", 4819));
+assertEquals(null, res[1524].exec("ABXYZ   ", 4820));
+assertEquals(null, res[1524].exec("AXYZ", 4821));
+assertEquals(null, res[1524].exec("x{1234}XYZ", 4822));
+assertEquals(null, res[1524].exec("Ax{1234}XYZ", 4823));
+assertEquals(null, res[1524].exec("** Failers", 4824));
+assertEquals(null, res[1524].exec("XYZ", 4825));
+assertEquals(null, res[1524].exec("** Failers", 4826));
+assertEquals(null, res[1524].exec("AXYZ", 4827));
+assertEquals(null, res[1524].exec("x{1234}XYZ", 4828));
+assertEquals(null, res[1524].exec("Ax{1234}XYZ", 4829));
+assertEquals(null, res[1524].exec("XYZ", 4830));
+assertEquals(null, res[1525].exec("XYZ", 4831));
+assertEquals(null, res[1525].exec("AXYZ", 4832));
+assertEquals(null, res[1525].exec("x{1234}XYZ", 4833));
+assertEquals(null, res[1525].exec("Ax{1234}XYZ", 4834));
+assertEquals(null, res[1525].exec("** Failers", 4835));
+assertEquals(null, res[1526].exec("XYZ", 4836));
+assertEquals(null, res[1526].exec("** Failers", 4837));
+assertEquals(null, res[1526].exec("AXYZ", 4838));
+assertEquals(null, res[1526].exec("x{1234}XYZ", 4839));
+assertEquals(null, res[1526].exec("Ax{1234}XYZ", 4840));
+assertEquals("AX", res[1527].exec("AXYZ"), 4841);
+assertEquals(null, res[1527].exec("x{1234}XYZ ", 4842));
+assertEquals(null, res[1527].exec("** Failers", 4843));
+assertEquals(null, res[1527].exec("X  ", 4844));
+assertEquals(null, res[1528].exec("** Failers", 4845));
+assertEquals("AX", res[1528].exec("AX"), 4846);
+assertEquals("X", res[1529].exec("XYZ"), 4847);
+assertEquals("AX", res[1529].exec("AXYZ"), 4848);
+assertEquals(null, res[1529].exec("x{1234}XYZ ", 4849));
+assertEquals(null, res[1529].exec("** Failers", 4850));
+assertEquals(null, res[1529].exec("ABXYZ   ", 4851));
+assertEquals("X", res[1530].exec("XYZ"), 4852);
+assertEquals(null, res[1530].exec("** Failers", 4853));
+assertEquals("AX", res[1530].exec("AXYZ"), 4854);
+assertEquals(null, res[1530].exec("x{1234}XYZ ", 4855));
+assertEquals(null, res[1530].exec("ABXYZ   ", 4856));
+assertEquals("AX", res[1531].exec("AXYZ"), 4857);
+assertEquals(null, res[1531].exec("x{1234}XYZ", 4858));
+assertEquals(null, res[1531].exec("Ax{1234}XYZ", 4859));
+assertEquals(null, res[1531].exec("** Failers", 4860));
+assertEquals(null, res[1531].exec("XYZ", 4861));
+assertEquals(null, res[1532].exec("** Failers", 4862));
+assertEquals("AX", res[1532].exec("AXYZ"), 4863);
+assertEquals(null, res[1532].exec("x{1234}XYZ", 4864));
+assertEquals(null, res[1532].exec("Ax{1234}XYZ", 4865));
+assertEquals(null, res[1532].exec("XYZ", 4866));
+assertEquals("X", res[1533].exec("XYZ"), 4867);
+assertEquals("AX", res[1533].exec("AXYZ"), 4868);
+assertEquals(null, res[1533].exec("x{1234}XYZ", 4869));
+assertEquals(null, res[1533].exec("Ax{1234}XYZ", 4870));
+assertEquals(null, res[1533].exec("** Failers", 4871));
+assertEquals("X", res[1534].exec("XYZ"), 4872);
+assertEquals(null, res[1534].exec("** Failers", 4873));
+assertEquals("AX", res[1534].exec("AXYZ"), 4874);
+assertEquals(null, res[1534].exec("x{1234}XYZ", 4875));
+assertEquals(null, res[1534].exec("Ax{1234}XYZ", 4876));
+assertEquals(null, res[1535].exec("abcdefgh", 4877));
+assertEquals(null, res[1535].exec("x{1234}\n\x0dx{3456}xyz ", 4878));
+assertEquals(null, res[1536].exec("abcdefgh", 4879));
+assertEquals(null, res[1536].exec("x{1234}\n\x0dx{3456}xyz ", 4880));
+assertEquals(null, res[1537].exec("** Failers", 4881));
+assertEquals(null, res[1537].exec("abcdefgh", 4882));
+assertEquals(null, res[1537].exec("x{1234}\n\x0dx{3456}xyz ", 4883));
+assertEquals(null, res[1538].exec(" AXY", 4884));
+assertEquals(null, res[1538].exec(" aXY", 4885));
+assertEquals(null, res[1538].exec(" x{1c5}XY", 4886));
+assertEquals(null, res[1538].exec(" ** Failers", 4887));
+assertEquals(null, res[1538].exec(" x{1bb}XY", 4888));
+assertEquals(null, res[1538].exec(" x{2b0}XY", 4889));
+assertEquals(null, res[1538].exec(" !XY      ", 4890));
+assertEquals(null, res[1539].exec(" AXY", 4891));
+assertEquals(null, res[1539].exec(" aXY", 4892));
+assertEquals(null, res[1539].exec(" x{1c5}XY", 4893));
+assertEquals(null, res[1539].exec(" ** Failers", 4894));
+assertEquals(null, res[1539].exec(" x{1bb}XY", 4895));
+assertEquals(null, res[1539].exec(" x{2b0}XY", 4896));
+assertEquals(null, res[1539].exec(" !XY      ", 4897));
+assertEquals(null, res[1539].exec(" AXY", 4898));
+assertEquals(null, res[1539].exec(" aXY", 4899));
+assertEquals(null, res[1539].exec(" AbcdeXyz ", 4900));
+assertEquals(null, res[1539].exec(" x{1c5}AbXY", 4901));
+assertEquals(null, res[1539].exec(" abcDEXypqreXlmn ", 4902));
+assertEquals(null, res[1539].exec(" ** Failers", 4903));
+assertEquals(null, res[1539].exec(" x{1bb}XY", 4904));
+assertEquals(null, res[1539].exec(" x{2b0}XY", 4905));
+assertEquals(null, res[1539].exec(" !XY      ", 4906));
+assertEquals(null, res[1540].exec(" AXY", 4907));
+assertEquals(null, res[1540].exec(" aXY", 4908));
+assertEquals(null, res[1540].exec(" AbcdeXyz ", 4909));
+assertEquals(null, res[1540].exec(" x{1c5}AbXY", 4910));
+assertEquals(null, res[1540].exec(" abcDEXypqreXlmn ", 4911));
+assertEquals(null, res[1540].exec(" ** Failers", 4912));
+assertEquals(null, res[1540].exec(" x{1bb}XY", 4913));
+assertEquals(null, res[1540].exec(" x{2b0}XY", 4914));
+assertEquals(null, res[1540].exec(" !XY      ", 4915));
+assertEquals(null, res[1540].exec(" AXY", 4916));
+assertEquals(null, res[1540].exec(" aXY", 4917));
+assertEquals(null, res[1540].exec(" AbcdeXyz ", 4918));
+assertEquals(null, res[1540].exec(" x{1c5}AbXY", 4919));
+assertEquals(null, res[1540].exec(" abcDEXypqreXlmn ", 4920));
+assertEquals(null, res[1540].exec(" ** Failers", 4921));
+assertEquals(null, res[1540].exec(" x{1bb}XY", 4922));
+assertEquals(null, res[1540].exec(" x{2b0}XY", 4923));
+assertEquals(null, res[1540].exec(" !XY      ", 4924));
+assertEquals(null, res[1541].exec(" AXY", 4925));
+assertEquals(null, res[1541].exec(" aXY", 4926));
+assertEquals(null, res[1541].exec(" AbcdeXyz ", 4927));
+assertEquals(null, res[1541].exec(" x{1c5}AbXY", 4928));
+assertEquals(null, res[1541].exec(" abcDEXypqreXlmn ", 4929));
+assertEquals(null, res[1541].exec(" ** Failers", 4930));
+assertEquals(null, res[1541].exec(" x{1bb}XY", 4931));
+assertEquals(null, res[1541].exec(" x{2b0}XY", 4932));
+assertEquals(null, res[1541].exec(" !XY      ", 4933));
+assertEquals(null, res[1542].exec(" !XY", 4934));
+assertEquals(null, res[1542].exec(" x{1bb}XY", 4935));
+assertEquals(null, res[1542].exec(" x{2b0}XY", 4936));
+assertEquals(null, res[1542].exec(" ** Failers", 4937));
+assertEquals(null, res[1542].exec(" x{1c5}XY", 4938));
+assertEquals(null, res[1542].exec(" AXY      ", 4939));
+assertEquals(null, res[1543].exec(" !XY", 4940));
+assertEquals(null, res[1543].exec(" x{1bb}XY", 4941));
+assertEquals(null, res[1543].exec(" x{2b0}XY", 4942));
+assertEquals(null, res[1543].exec(" ** Failers", 4943));
+assertEquals(null, res[1543].exec(" x{1c5}XY", 4944));
+assertEquals(null, res[1543].exec(" AXY      ", 4945));
+assertEquals(null, res[1543].exec("x{c0}x{e0}x{116}x{117}", 4946));
+assertEquals(null, res[1543].exec("x{c0}x{e0}x{116}x{117}", 4947));
+assertEquals(null, res[1545].exec("123abcdefg", 4948));
+assertEquals(null, res[1545].exec("123abc\xc4\xc5zz", 4949));
+assertEquals(null, res[1546].exec("x{102A4}x{AA52}x{A91D}x{1C46}x{10283}x{1092E}x{1C6B}x{A93B}x{A8BF}x{1BA0}x{A50A}====", 4950));
+assertEquals(null, res[1546].exec("x{a77d}x{1d79}", 4951));
+assertEquals(null, res[1546].exec("x{1d79}x{a77d} ", 4952));
+assertEquals(null, res[1546].exec("x{a77d}x{1d79}", 4953));
+assertEquals(null, res[1546].exec("** Failers ", 4954));
+assertEquals(null, res[1546].exec("x{1d79}x{a77d} ", 4955));
 assertThrows("var re = //;", 4956);
diff --git a/test/mjsunit/tools/codemap.js b/test/mjsunit/tools/codemap.js
index 33d7e4e..81fb810 100644
--- a/test/mjsunit/tools/codemap.js
+++ b/test/mjsunit/tools/codemap.js
@@ -157,7 +157,6 @@
   codeMap.addStaticCode(0x15500, newCodeEntry(0x5000, 'lib2'));
   codeMap.addStaticCode(0x155500, newCodeEntry(0x10000, 'lib3'));
   var allStatics = codeMap.getAllStaticEntries();
-  allStatics = allStatics.map(String);
   allStatics.sort();
   assertEquals(['lib1: 3000', 'lib2: 5000', 'lib3: 10000'], allStatics);
 })();
@@ -169,15 +168,13 @@
   codeMap.addCode(0x1700, newCodeEntry(0x100, 'code2'));
   codeMap.addCode(0x1900, newCodeEntry(0x50, 'code3'));
   var allDynamics = codeMap.getAllDynamicEntries();
-  allDynamics = allDynamics.map(String);
   allDynamics.sort();
   assertEquals(['code1: 200', 'code2: 100', 'code3: 50'], allDynamics);
   codeMap.deleteCode(0x1700);
   var allDynamics2 = codeMap.getAllDynamicEntries();
-  allDynamics2 = allDynamics2.map(String);
   allDynamics2.sort();
   assertEquals(['code1: 200', 'code3: 50'], allDynamics2);
   codeMap.deleteCode(0x1500);
   var allDynamics3 = codeMap.getAllDynamicEntries();
-  assertEquals(['code3: 50'], allDynamics3.map(String));
+  assertEquals(['code3: 50'], allDynamics3);
 })();
diff --git a/test/mjsunit/tools/splaytree.js b/test/mjsunit/tools/splaytree.js
index d582dc9..5e18796 100644
--- a/test/mjsunit/tools/splaytree.js
+++ b/test/mjsunit/tools/splaytree.js
@@ -81,13 +81,13 @@
 (function testSplay() {
   var tree = new SplayTree();
   tree.root_ = createSampleTree();
-  assertArrayEquals([50, 30, 60, 10, 40, 90, 20, 70, 100, 15, 80],
+  assertArrayEquals(['50', '30', '60', '10', '40', '90', '20', '70', '100', '15', '80'],
                     tree.exportValues());
   tree.splay_(50);
-  assertArrayEquals([50, 30, 60, 10, 40, 90, 20, 70, 100, 15, 80],
+  assertArrayEquals(['50', '30', '60', '10', '40', '90', '20', '70', '100', '15', '80'],
                     tree.exportValues());
   tree.splay_(80);
-  assertArrayEquals([80, 60, 90, 50, 70, 100, 30, 10, 40, 20, 15],
+  assertArrayEquals(['80', '60', '90', '50', '70', '100', '30', '10', '40', '20', '15'],
                     tree.exportValues());
 })();
 
diff --git a/test/sputnik/testcfg.py b/test/sputnik/testcfg.py
index c9eb4f2..c1e3c1b 100644
--- a/test/sputnik/testcfg.py
+++ b/test/sputnik/testcfg.py
@@ -57,7 +57,7 @@
 
   def AfterRun(self, result):
     # Dispose the temporary file if everything looks okay.
-    if result is None or not result.HasPreciousOutput(): self.tmpfile.Dispose()
+    if not result.HasPreciousOutput(): self.tmpfile.Dispose()
     self.tmpfile = None
 
   def GetCommand(self):
diff --git a/tools/gyp/v8.gyp b/tools/gyp/v8.gyp
index a11d19a..77a6194 100644
--- a/tools/gyp/v8.gyp
+++ b/tools/gyp/v8.gyp
@@ -230,8 +230,7 @@
             '../../src',
           ],
           'sources': [
-            '<(SHARED_INTERMEDIATE_DIR)/libraries.cc',
-            '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries.cc',
+            '<(SHARED_INTERMEDIATE_DIR)/libraries-empty.cc',
             '<(INTERMEDIATE_DIR)/snapshot.cc',
           ],
           'actions': [
@@ -260,7 +259,6 @@
           ],
           'sources': [
             '<(SHARED_INTERMEDIATE_DIR)/libraries.cc',
-            '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries.cc',
             '../../src/snapshot-empty.cc',
           ],
           'conditions': [
@@ -724,10 +722,6 @@
               '../../src/regexp.js',
               '../../src/macros.py',
             ],
-	    'experimental_library_files': [
-	      '../../src/proxy.js',
-              '../../src/macros.py',
-	    ],
           },
           'actions': [
             {
@@ -738,6 +732,7 @@
               ],
               'outputs': [
                 '<(SHARED_INTERMEDIATE_DIR)/libraries.cc',
+                '<(SHARED_INTERMEDIATE_DIR)/libraries-empty.cc',
               ],
               'action': [
                 'python',
@@ -747,23 +742,6 @@
                 '<@(library_files)'
               ],
             },
-	    {
-              'action_name': 'js2c_experimental',
-              'inputs': [
-                '../../tools/js2c.py',
-                '<@(experimental_library_files)',
-              ],
-              'outputs': [
-                '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries.cc',
-              ],
-              'action': [
-                'python',
-                '../../tools/js2c.py',
-                '<@(_outputs)',
-                'EXPERIMENTAL',
-                '<@(experimental_library_files)'
-              ],
-            },
           ],
         },
         {
diff --git a/tools/js2c.py b/tools/js2c.py
old mode 100644
new mode 100755
index 8211ec5..2da132f
--- a/tools/js2c.py
+++ b/tools/js2c.py
@@ -204,7 +204,7 @@
 
 
 HEADER_TEMPLATE = """\
-// Copyright 2011 Google Inc. All Rights Reserved.
+// Copyright 2008 Google Inc. All Rights Reserved.
 
 // This file was generated from .js source files by SCons.  If you
 // want to make changes to this file you should either change the
@@ -288,6 +288,7 @@
 
   minifier = jsmin.JavaScriptMinifier()
 
+  source_lines_empty = []
   for module in modules:
     filename = str(module)
     debugger = filename.endswith('-debugger.js')
@@ -304,6 +305,7 @@
     else:
       ids.append((id, len(lines)))
     source_lines.append(SOURCE_DECLARATION % { 'id': id, 'data': data })
+    source_lines_empty.append(SOURCE_DECLARATION % { 'id': id, 'data': data })
 
   # Build debugger support functions
   get_index_cases = [ ]
@@ -354,11 +356,25 @@
   })
   output.close()
 
+  if len(target) > 1:
+    output = open(str(target[1]), "w")
+    output.write(HEADER_TEMPLATE % {
+      'builtin_count': len(ids) + len(debugger_ids),
+      'debugger_count': len(debugger_ids),
+      'source_lines': "\n".join(source_lines_empty),
+      'get_index_cases': "".join(get_index_cases),
+      'get_script_source_cases': "".join(get_script_source_cases),
+      'get_script_name_cases': "".join(get_script_name_cases),
+      'type': env['TYPE']
+    })
+    output.close()
+
 def main():
   natives = sys.argv[1]
-  type = sys.argv[2]
-  source_files = sys.argv[3:]
-  JS2C(source_files, [natives], { 'TYPE': type })
+  natives_empty = sys.argv[2]
+  type = sys.argv[3]
+  source_files = sys.argv[4:]
+  JS2C(source_files, [natives, natives_empty], { 'TYPE': type })
 
 if __name__ == "__main__":
   main()
diff --git a/tools/test.py b/tools/test.py
index c1840bb..707e725 100755
--- a/tools/test.py
+++ b/tools/test.py
@@ -117,8 +117,6 @@
         start = time.time()
         output = case.Run()
         case.duration = (time.time() - start)
-      except BreakNowException:
-        self.terminate = True
       except IOError, e:
         assert self.terminate
         return
@@ -320,12 +318,6 @@
 # --- F r a m e w o r k ---
 # -------------------------
 
-class BreakNowException(Exception):
-  def __init__(self, value):
-    self.value = value
-  def __str__(self):
-    return repr(self.value)
-
 
 class CommandOutput(object):
 
@@ -387,12 +379,9 @@
 
   def Run(self):
     self.BeforeRun()
-    result = None
+    result = "exception"
     try:
       result = self.RunCommand(self.GetCommand())
-    except:
-      self.terminate = True
-      raise BreakNowException("Used pressed CTRL+C or IO went wrong")
     finally:
       self.AfterRun(result)
     return result
@@ -434,7 +423,7 @@
              self.output.exit_code != -signal.SIGABRT
 
   def HasTimedOut(self):
-    return self.output.timed_out
+    return self.output.timed_out;
 
   def HasFailed(self):
     execution_failed = self.test.DidFail(self.output)
@@ -462,7 +451,7 @@
   prev_error_mode = SEM_INVALID_VALUE
   try:
     import ctypes
-    prev_error_mode = ctypes.windll.kernel32.SetErrorMode(mode)
+    prev_error_mode = ctypes.windll.kernel32.SetErrorMode(mode);
   except ImportError:
     pass
   return prev_error_mode
@@ -470,16 +459,16 @@
 def RunProcess(context, timeout, args, **rest):
   if context.verbose: print "#", " ".join(args)
   popen_args = args
-  prev_error_mode = SEM_INVALID_VALUE
+  prev_error_mode = SEM_INVALID_VALUE;
   if utils.IsWindows():
     popen_args = '"' + subprocess.list2cmdline(args) + '"'
     if context.suppress_dialogs:
       # Try to change the error mode to avoid dialogs on fatal errors. Don't
       # touch any existing error mode flags by merging the existing error mode.
       # See http://blogs.msdn.com/oldnewthing/archive/2004/07/27/198410.aspx.
-      error_mode = SEM_NOGPFAULTERRORBOX
-      prev_error_mode = Win32SetErrorMode(error_mode)
-      Win32SetErrorMode(error_mode | prev_error_mode)
+      error_mode = SEM_NOGPFAULTERRORBOX;
+      prev_error_mode = Win32SetErrorMode(error_mode);
+      Win32SetErrorMode(error_mode | prev_error_mode);
   process = subprocess.Popen(
     shell = utils.IsWindows(),
     args = popen_args,
@@ -527,7 +516,7 @@
       os.unlink(name)
       return
     except OSError, e:
-      retry_count += 1
+      retry_count += 1;
       time.sleep(retry_count * 0.1)
   PrintError("os.unlink() " + str(e))
 
@@ -713,12 +702,7 @@
 
 def RunTestCases(cases_to_run, progress, tasks):
   progress = PROGRESS_INDICATORS[progress](cases_to_run)
-  result = 0
-  try:
-    result = progress.Run(tasks)
-  except Exception, e:
-    print "\n", e
-  return result
+  return progress.Run(tasks)
 
 
 def BuildRequirements(context, requirements, mode, scons_flags):
@@ -1355,11 +1339,11 @@
     print "shard-run not a valid number, should be in [1:shard-count]"
     print "defaulting back to running all tests"
     return tests
-  count = 0
+  count = 0;
   shard = []
   for test in tests:
     if count % options.shard_count == options.shard_run - 1:
-      shard.append(test)
+      shard.append(test);
     count += 1
   return shard
 
