anchor.diff:     repeat
   
       case Instruction^.IDandOpcode and $ff of
  -     opSPLIT,opSPLITMATCH:begin
  +     opSPLIT:begin
         case Argument of
          0:begin
           Push(Instruction,Position,1);
  
positive.code:        end;
        end;
       end;
       opMULTIMATCH:begin
        case Argument of
         0:begin
          Push(Instruction,ThreadLocalStorageInstance.MultiSubMatches[Instruction^.Value],1);
          if ThreadLocalStorageInstance.MultiSubMatches[Instruction^.Value]<Position then begin
           ThreadLocalStorageInstance.MultiSubMatches[Instruction^.Value]:=Position;
          end;
          Instruction:=Instruction^.Next;
          if ShouldVisit(Instruction,Position) then begin
           continue;
          end;
         end;
         1:begin
          if ThreadLocalStorageInstance.MultiSubMatches[Instruction^.Value]<Position then begin
           ThreadLocalStorageInstance.MultiSubMatches[Instruction^.Value]:=Position;
          end;
         end;
        end;
       end;
       opZEROWIDTH:begin
        if ((longword(Instruction^.Value) and sfEmptyAllFlags) and not ThreadLocalStorageInstance.GetSatisfyFlags(Position))=0 then begin
         Instruction:=Instruction^.Next;
  
negative.code:      end;
       opMATCH:begin
        if MatchMode in [mmLongestMatch,mmFullMatch,mmMultiMatch] then begin
         if (MatchMode=mmMultiMatch) and
            (((Instruction^.Value>=0) and (Instruction^.Value<Instance.CountMultiSubMatches)) and
             (ThreadLocalStorageInstance.MultiSubMatches[Instruction^.Value]<CurrentPosition)) then begin
          ThreadLocalStorageInstance.MultiSubMatches[Instruction^.Value]:=CurrentPosition;
         end;
         if not assigned(BestState) then begin
          BestState:=StateAllocate(Instance.CountSubMatches,State^.SubMatchesBitmap);
         end;
  