anchor.diff:  
     TKMPointListArray = array of TKMPointList;
   
  +  TKMPointCenteredList = class(TKMPointList)
  +  private
  +    fCenter: TKMPoint;
  +    fWeight: array of Single;
  +  public
  +    constructor Create(aCenter: TKMPoint);
  +    procedure Add(const aLoc: TKMPoint); override;
  +    function GetWeightedRandom(out Point: TKMPoint): Boolean;
  +  end;
  +
     TKMPointTagList = class(TKMPointList)
     public
       Tag, Tag2: array of Cardinal; //0..Count-1
  
positive.code:     function GetItem(aIndex: Integer): TKMPointDir;
    public
      procedure Clear;
      procedure Add(const aLoc: TKMPointDir);
      property Count: Integer read fCount;
      property Items[aIndex: Integer]: TKMPointDir read GetItem; default;
      function GetRandom(out Point: TKMPointDir): Boolean;
      procedure ToPointList(aList: TKMPointList; aUnique: Boolean);
      procedure LoadFromStream(LoadStream: TKMemoryStream); virtual;
      procedure SaveToStream(SaveStream: TKMemoryStream); virtual;
    end;
  
  
  
negative.code: end;
  
  
  { TKMPointAppearenceList }
  procedure TKMPointAppearenceList.Add(const aLoc: TKMPoint);
  var
    Ind: Integer;
  