anchor.diff:  
   procedure TKMQuickFlood.QuickFlood(aX,aY: SmallInt);
   begin
  -  MakeNewQueue();
  +  MakeNewQueue;
     if CanBeVisited(aX, aY) then
       InsertInQueue(aX, aY);
     while not IsQueueEmpty do
  
positive.code: end;
  
  
  destructor TKMQuickFlood.Destroy();
  var
    X,Y: SmallInt;
  begin
    while not IsQueueEmpty do // Dispose everything except 1 last element
      RemoveFromQueue(X,Y);
    Dispose(fStartQueue); // Dispose the last element
    inherited;
  end;
  
  
  procedure TKMQuickFlood.MakeNewQueue();
  var
    X,Y: SmallInt;
  begin
  
negative.code:     fMinLimit, fMaxLimit: TKMPoint;
      fScanEightTiles: Boolean; // True = scan 8 tiles around, False = scan 4 tiles (no performance impact!)
  
      procedure MakeNewQueue; virtual;
      procedure InsertInQueue(const aX,aY: SmallInt); virtual;
      function RemoveFromQueue(var aX,aY: SmallInt): Boolean; virtual;
      function IsQueueEmpty: Boolean; inline;
  