anchor.diff:      fFinder: TKMTerrainFinder;
   
       fBoundsWC: TKMRect; //WC rebuild bounds used in FlattenTerrain (put outside to fight with recursion SO error in FlattenTerrain EnsureWalkable)
  +
  +    fUnitPointersTemp: array [1..MAX_MAP_SIZE, 1..MAX_MAP_SIZE] of Pointer;
   
       function TileHasParameter(X,Y: Word; aCheckTileFunc: TBooleanWordFunc; aAllow2CornerTiles: Boolean = False;
                                 aStrictCheck: Boolean = False): Boolean;
  
positive.code:   FallingTrees.LoadFromStream(LoadStream);
  
    for I := 1 to fMapY do
      for J := 1 to fMapX do
      begin
        ReadTileFromStream(LoadStream, tileBasic, GAME_REVISION_NUM);
        Land[I,J].BaseLayer := tileBasic.BaseLayer;
        Land[I,J].Height := tileBasic.Height;
        Land[I,J].Obj := tileBasic.Obj;
        Land[I,J].IsCustom := tileBasic.IsCustom;
        Land[I,J].BlendingLvl := tileBasic.BlendingLvl;
        Land[I,J].TileOverlay := tileBasic.TileOverlay;
        Land[I,J].LayersCnt := tileBasic.LayersCnt;
  
        for L := 0 to 2 do
          Land[I,J].Layer[L] := tileBasic.Layer[L];
  
        LoadStream.Read(Land[I,J].Passability, SizeOf(Land[I,J].Passability));
        LoadStream.Read(Land[I,J].WalkConnect, SizeOf(Land[I,J].WalkConnect));
        LoadStream.Read(Land[I,J].TreeAge);
        LoadStream.Read(Land[I,J].FieldAge);
        LoadStream.Read(Land[I,J].TileLock,SizeOf(Land[I,J].TileLock));
        LoadStream.Read(Land[I,J].JamMeter);
        LoadStream.Read(Land[I,J].TileOwner,SizeOf(Land[I,J].TileOwner));
        LoadStream.Read(Land[I,J].IsUnit, 4);
        LoadStream.Read(Land[I,J].IsVertexUnit,SizeOf(Land[I,J].IsVertexUnit));
      end;
  
    for I := 1 to fMapY do
      for J := 1 to fMapX do
  
negative.code:     procedure CopyCorners(aLayer: TKMTerrainLayer);
      procedure SwapCorners(aLayer: TKMTerrainLayer);
      procedure SetAllCOrners;
  
      procedure Save(aSaveStream: TKMemoryStream);
    end;
  
  
  