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