anchor.diff:      function BeginWrite: Boolean;
       procedure EndWrite;
       procedure Move(CurIndex, NewIndex: Integer); virtual; abstract;
  -    function Remove(const Value: Variant): Integer; virtual; abstract;
  +    function Remove(const Value: Variant): Integer; overload;
  +    function Remove(const Value: Variant; Direction: TDirection): Integer; overload;
       function ToArray: TVariants; overload; virtual; abstract;
       function ToArray(VarType: TVarType): Variant; overload; virtual; abstract;
       function First: Variant;
  
positive.code:   if Index >= FCount then FCount := Index + 1;
  
    FList[Index] := Value;
  end;
  
  function TArrayList.Remove(const Value: Variant): Integer;
  begin
    Result := IndexOf(Value);
    if Result >= 0 then Delete(Result);
  end;
  
  function TArrayList.ToArray: TVariants;
  
negative.code:     procedure InitLock;
      procedure InitReadWriteLock;
      procedure Move(CurIndex, NewIndex: Integer);
      function Remove(const Value: Variant): Integer; overload;
      function Remove(const Value: Variant; Direction: TDirection): Integer; overload;
      procedure Pack;
      procedure Reverse;
      procedure Sort; overload;
  