anchor.diff:  
       procedure Clear; virtual;
       procedure Copy(aSrc: TKMPointList);
  -    procedure Add(const aLoc: TKMPoint);
  +    procedure Add(const aLoc: TKMPoint); virtual;
       procedure AddList(aList: TKMPointList);
       procedure AddUnique(const aLoc: TKMPoint);
       procedure AddListUnique(aList: TKMPointList);
  
positive.code:     procedure SortByTag;
      procedure SaveToStream(SaveStream: TKMemoryStream); override;
      procedure LoadFromStream(LoadStream: TKMemoryStream); override;
    end;
  
  
  
negative.code: end;
  
  
  { TKMPointCntList }
  procedure TKMPointAppearenceList.Add(const aLoc: TKMPoint);
  var
    Ind: Integer;
  begin
    Ind := IndexOf(aLoc);
    if Ind = -1 then
    begin
      inherited Add(aLoc);
  
      if fCount >= Length(fAppearences) then  SetLength(fAppearences, fCount + 32); //Expand the list
  
      fAppearences[fCount - 1]  := 1;
    end else
      fAppearences[Ind] := fAppearences[Ind] + 1;
  end;
  
  
  function TKMPointAppearenceList.GetAppearences(aIndex: Integer): Word;
  begin
    Result := fAppearences[aIndex];
  end;
  
  
  { TKMMapsCRCList }
  constructor TKMMapsCRCList.Create;
  begin
  