anchor.diff:   end;
   
    NewState.Flags:=Flags or (NeedFlags shl sfDFANeedShift);
  - NewState.Instructions:=copy(QueueInstructionArray,0,n);
  - NewState.CountInstructions:=n;
  + if CountInstructions>0 then begin
  +  SetLength(NewState.Instructions,CountInstructions);
  +  Move(QueueInstructionArray[0],NewState.Instructions[0],CountInstructions*SizeOf(PFLREInstruction));
  +  NewState.CountInstructions:=CountInstructions;
  + end else begin
  +  NewState.Instructions:=nil;
  +  NewState.CountInstructions:=0;
  + end;
   
    result:=CacheState(@NewState);
   
  
positive.code:    break;
    end;
    if WorkQueue.IsMark(Instruction) then begin
     if (n>0) and (QueueInstructionArray[n-1]<>Mark) then begin
      SawMark:=true;
      if (n+1)>length(QueueInstructionArray) then begin
       SetLength(QueueInstructionArray,(n+1)*2);
      end;
      QueueInstructionArray[n]:=Mark;
      inc(n);
     end;
     continue;
    end;
  
negative.code:   end;
   end;
  
   if (CountInstructions>0) and (QueueInstructionArray[CountInstructions-1]=Mark) then begin
    dec(CountInstructions);
   end;
  
   // Drop flags if no zero-width instructions are there, to save unneeded cached states
  