anchor.diff:     if ((MatchCondition and sfCapMask)<>0) and (CountSubMatches>0) then begin
       for Counter:=0 to CountSubMatches-1 do begin
        if (MatchCondition and ((1 shl sfCapShift) shl Counter))<>0 then begin   
  -      OnePassNFAWorkSubMatches[Counter]:=CurrentPosition;
  +      WorkSubMatches[Counter]:=CurrentPosition;
        end;
       end;
      end;
      for Counter:=0 to CountSubMatches-1 do begin
  -    OnePassNFAMatchSubMatches[Counter]:=OnePassNFAWorkSubMatches[Counter];
  +    MatchSubMatches[Counter]:=WorkSubMatches[Counter];
      end;
      result:=true;
     end;
  
positive.code: 
   OnePassNFA.Free;
  
   SetLength(BitStateNFAJobs,0);
   SetLength(BitStateNFAWorkSubMatches,0);
   SetLength(BitStateNFAMatchSubMatches,0);
  
   DFADestroyStatePool(DFAStatePoolUsed);
   DFADestroyStatePool(DFAStatePoolFree);
  
negative.code:    DFAStateCache.Add(State);
     inc(DFACountStatesCached);
    end;
   end;
  
  end;
  