anchor.diff:        if Node^.Value<>0 then begin
          // Non-greedy
          Instructions[i0].OtherNext:=pointer(ptrint(CountInstructions));
  +{$ifndef UseOpcodeJMP}
  +       FromIndex:=CountInstructions;
  +{$endif}
          Emit(Node^.Left);
  +{$ifndef UseOpcodeJMP}
  +       ToIndex:=CountInstructions-1;
  +       OutIndex:=CountInstructions;
  +{$endif}
  +{$ifdef UseOpcodeJMP}
          i1:=NewInstruction(opJMP);
          Instructions[i1].Next:=pointer(ptrint(i0));
  +{$endif}
          Instructions[i0].Next:=pointer(ptrint(CountInstructions));
  +{$ifndef UseOpcodeJMP}
  +       for Index:=FromIndex to ToIndex do begin
  +        if ptrint(Instructions[Index].Next)=OutIndex then begin
  +         Instructions[Index].Next:=pointer(ptrint(i0));
  +        end;
  +        if ptrint(Instructions[Index].OtherNext)=OutIndex then begin
  +         Instructions[Index].OtherNext:=pointer(ptrint(i0));
  +        end;
  +       end;
  +{$endif}
         end else begin
          // Greedy
          Instructions[i0].Next:=pointer(ptrint(CountInstructions));
  +{$ifndef UseOpcodeJMP}
  +       FromIndex:=CountInstructions;
  +{$endif}
          Emit(Node^.Left);
  +{$ifndef UseOpcodeJMP}
  +       ToIndex:=CountInstructions-1;
  +       OutIndex:=CountInstructions;
  +{$endif}
  +{$ifdef UseOpcodeJMP}
          i1:=NewInstruction(opJMP);
          Instructions[i1].Next:=pointer(ptrint(i0));
  +{$endif}
          Instructions[i0].OtherNext:=pointer(ptrint(CountInstructions));
  +{$ifndef UseOpcodeJMP}
  +       for Index:=FromIndex to ToIndex do begin
  +        if ptrint(Instructions[Index].Next)=OutIndex then begin
  +         Instructions[Index].Next:=pointer(ptrint(i0));
  +        end;
  +        if ptrint(Instructions[Index].OtherNext)=OutIndex then begin
  +         Instructions[Index].OtherNext:=pointer(ptrint(i0));
  +        end;
  +       end;
  +{$endif}
         end;
        end;
        ntPLUS:begin
  
positive.code:      inc(Index);
       Instruction:=Instruction^.Next;
      end;
      opJMP,opSAVE,opZEROWIDTH,opLOOKBEHINDNEGATIVE,opLOOKBEHINDPOSITIVE,opLOOKAHEADNEGATIVE,opLOOKAHEADPOSITIVE,opBACKREFERENCE,opBACKREFERENCEIGNORECASE:begin
       Instruction:=Instruction^.Next;
      end;
      opMATCH:begin
  
negative.code: {$longstrings on}
  {$openstrings on}
  
  {-$define UseOpcodeJMP}
  
  interface
  
  uses SysUtils,Classes,FLREUnicode;
  