anchor.diff:    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;
  
positive.code:     function BeginWrite: Boolean;
      procedure EndWrite;
      procedure Move(CurIndex, NewIndex: Integer); virtual; abstract;
      function Remove(const Value: Variant): Integer; virtual; abstract;
      function ToArray: TVariants; overload; virtual; abstract;
      function ToArray(VarType: TVarType): Variant; overload; virtual; abstract;
      function First: Variant;
  
negative.code:   if not SkipEmptyItem or (Str <> '') then Result.Add(Str);
  end;
  
  
  function TAbstractList.Remove(const Value: Variant): Integer;
  begin
    Result := IndexOf(Value);
    if Result >= 0 then Delete(Result);
  end;
  
  function TAbstractList.Remove(const Value: Variant; Direction: TDirection
    ): Integer;
  begin
    if Direction = TDirection.FromBeginning then
      Result := IndexOf(Value)
    else
      Result := LastIndexOf(Value);
    if Result >= 0 then Delete(Result);
  end;
  
  function TAbstractList.First: Variant;
  begin
    Result := Get(0);
  