anchor.diff:  
   
   { TKMSearchSimilarBiome }
  -constructor TKMSearchSimilarBiome.Create(aMinLimit, aMaxLimit: TKMPoint; var aSerachArr: TInteger2Array; var aBiomeArr: TKMByte2Array; const aScanEightTiles: Boolean = False);
  -begin
  -  inherited Create(aMinLimit, aMaxLimit, aSerachArr, aScanEightTiles);
  +constructor TKMSearchSimilarBiome.Create(aMinLimit, aMaxLimit: TKMPoint; var aSearchArr: TInteger2Array; var aBiomeArr: TKMByte2Array; const aScanEightTiles: Boolean = False);
  +begin
  +  inherited Create(aMinLimit, aMaxLimit, aSearchArr, aScanEightTiles);
     fBiomeArr := aBiomeArr;
   end;
   
  
positive.code:     procedure QuickFlood(aX,aY,aSearch,aNewSearch: SmallInt; var aOutIdx: Integer; var aTileCounterArr: TInteger2Array; var aOutPointArr: TKMPointArray; var aOutLevelArr: TKMByteArray); reintroduce; overload;
    end;
  
  // Standard flood fill algorithm with queue instead of recursion -> first element is the closest to the center point, second is automatically second closest etc.
  // This is class for resources in RMG because it is quite complicated task (randomly generate something which must look like original template but still different...)
    TKMFloodWithQueue = class
    private
      fStartQueue, fEndQueue: TResElementPointer;
      fPointsArr: TKMPoint2Array;
      fSearchArr, fCount: TInteger2Array;
      fFillArr: TKMByte2Array;
      fFillResource: TKMFillBiome;
      fRNG: TKMRandomNumberGenerator;
    protected
      procedure MakeNewQueue();
      procedure InsertInQueue(aX,aY: Integer; aProbability: Single);
      function RemoveFromQueue(var aX,aY: SmallInt; var aProbability: Single): Boolean;
      function IsQueueEmpty(): boolean;
    public
      constructor Create(var aRNG: TKMRandomNumberGenerator; var aPointsArr: TKMPoint2Array; var aCount, aSearchArr: TInteger2Array; var aFillArr: TKMByte2Array);
      destructor Destroy;
      procedure FloodFillWithQueue(const aX,aY: Integer; var aCnt_FINAL, aCnt_ACTUAL, aRESOURCE: Integer; const aProbability, aPROB_REDUCER: Single; var aPoints: TKMPointArray);
    end;
  
  
  
negative.code:   protected
      function CanBeVisited(const aX,aY: SmallInt): Boolean; override;
    public
      constructor Create(aMinLimit, aMaxLimit: TKMPoint; var aSearchArr: TInteger2Array; var aBiomeArr: TKMByte2Array; const aScanEightTiles: Boolean = False); reintroduce;
      procedure QuickFlood(aX,aY,aSearch,aNewSearch: SmallInt; var aCount: Integer; var aPresentBiomes: Cardinal); reintroduce;
    end;
  
  