anchor.diff:      procedure Clear; virtual;
       procedure Copy(aSrc: TKMPointList);
       procedure Add(aLoc: TKMPoint);
  -    function  Remove(aLoc: TKMPoint): Integer; virtual;
  +    function  Remove(aLoc: TKMPoint): Integer;
       procedure Delete(aIndex: Integer);
       procedure Insert(ID: Integer; aLoc: TKMPoint);
       function  GetRandom(out Point: TKMPoint): Boolean;
  
positive.code: end;
  
  
  function TKMPointTagList.Remove(aLoc: TKMPoint): Integer;
  begin
    Result := inherited Remove(aLoc);
  
    //Note that fCount is already decreased by 1
    if (Result <> -1) and (Result <> fCount) then
    begin
      Move(Tag[Result+1], Tag[Result], SizeOf(Tag[Result]) * (fCount - Result));
      Move(Tag2[Result+1], Tag2[Result], SizeOf(Tag2[Result]) * (fCount - Result));
    end;
  end;
  
  
negative.code:     procedure Add(aLoc: TKMPoint; aTag: Cardinal; aTag2: Cardinal = 0); reintroduce;
      function IndexOf(const aLoc: TKMPoint; aTag: Cardinal; aTag2: Cardinal): Integer;
      procedure SortByTag;
      procedure Delete(aIndex: Integer); reintroduce;
      procedure SaveToStream(SaveStream: TKMemoryStream); override;
      procedure LoadFromStream(LoadStream: TKMemoryStream); override;
    end;
  