anchor.diff:     NewWorkQueue.Mark;
     end else begin
      case Instruction^.IDandOpcode and $ff of
  -    opJMP,opSAVE,opLOOKBEHINDNEGATIVE,opLOOKBEHINDPOSITIVE,opLOOKAHEADNEGATIVE,opLOOKAHEADPOSITIVE,opBACKREFERENCE,opBACKREFERENCEIGNORECASE,opSPLIT,opSPLITMATCH,opZEROWIDTH:begin
  +    {$ifdef UseOpcodeJMP}opJMP,{$endif}opSAVE,opLOOKBEHINDNEGATIVE,opLOOKBEHINDPOSITIVE,opLOOKAHEADNEGATIVE,opLOOKAHEADPOSITIVE,opBACKREFERENCE,opBACKREFERENCEIGNORECASE,opSPLIT,opSPLITMATCH,opZEROWIDTH:begin
        // Already processed
       end;
       opSINGLECHAR:begin
  
positive.code:    Instructions[result].OtherNext:=pointer(ptrint(-1));
    end;
    procedure Emit(Node:PFLRENode;const BackreferenceParentNode:PFLRENode=nil);
    var i0,i1,i2,Counter,Count,Index,Flags:longint;
        Last:array of longint;
        CurrentChar,SingleChar:ansichar;
        DoIgnoreCase:boolean;
    begin
     while assigned(Node) and (NodeStack.IndexOf(Node)<0) do begin
      case Node^.NodeType of
       ntALT:begin                
        i0:=NewInstruction(opSPLIT);
        Instructions[i0].Value:=skALT;
        Instructions[i0].Next:=pointer(ptrint(CountInstructions));
        Emit(Node^.Left);
        i1:=NewInstruction(opJMP);
        Instructions[i0].OtherNext:=pointer(ptrint(CountInstructions));
        Emit(Node^.Right);
        Instructions[i1].Next:=pointer(ptrint(CountInstructions));
       end;
       ntCAT:begin
        if Reversed then begin
  
negative.code:    end else begin
      InstructionGenerations[InstructionID]:=Generation;
      case Instruction^.IDandOpcode and $ff of
  {$ifdef UseOpcodeJMP}
       opJMP:begin
        Instruction:=Instruction^.Next;
        continue;
       end;
  {$endif}
       opSPLIT,opSPLITMATCH:begin
        StackItem:=@ParallelNFAStack[StackSize];
        StackItem^.Instruction:=Instruction^.OtherNext;
  