anchor.diff:    while assigned(Instruction) and (InstructionGenerations[Instruction^.IDandOpcode shr 8]<>Generation) do begin
      InstructionGenerations[Instruction^.IDandOpcode shr 8]:=Generation;
      case Instruction^.IDandOpcode and $ff of
  +{$ifdef UseOpcodeJMP}
       opJMP,
  +{$endif}
       opSAVE,
       opZEROWIDTH,
       opLOOKBEHINDNEGATIVE,opLOOKBEHINDPOSITIVE,opLOOKAHEADNEGATIVE,opLOOKAHEADPOSITIVE,
  
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:          Instruction:=Stack[StackPointer].Instruction;
           Condition:=Stack[StackPointer].Condition;
           case Instruction^.IDandOpcode and $ff of
  {$ifdef UseOpcodeJMP}
            opJMP:begin
             if WorkQueue.IndexOf(Instruction^.Next)>=0 then begin
              OnePassNFAReady:=false;
  