anchor.diff:   *                                                        *
    * hprose common unit for delphi.                         *
    *                                                        *
  - * LastModified: Dec 1, 2016                              *
  + * LastModified: Dec 6, 2016                              *
    * Author: Ma Bingyao <andot@hprose.com>                  *
    *                                                        *
   \**********************************************************/
  
positive.code:   Inc(FCount);
  end;
  
  procedure TArrayList.AddAll(const AList: IImmutableList);
  var
    I: Integer;
  begin
    Grow(AList.Count);
    for I := 0 to AList.Count - 1 do Add(AList[I]);
  end;
  
  procedure TArrayList.AddAll(const Container: Variant);
  var
    I, N, Low, High: Integer;
  begin
    if VarIsList(Container) then begin
      AddAll(VarToList(Container));
    end
    else if VarIsArray(Container) then begin
      N := Length(Container);
      Grow(N);
      Low := VarArrayLowBound(Container, 1);
      High := Low + N - 1;
      for I := Low to High do Add(Container[I]);
    end;
  end;
  
  procedure TArrayList.AddAll(const ConstArray: array of const);
  var
    I, N: Integer;
  begin
    N := Length(ConstArray);
    Grow(N);
    for I := 0 to N - 1 do Add(VarRecToVar(ConstArray[I]));
  end;
  
  procedure TArrayList.Clear;
  begin
    SetLength(FList, 0);
    FCount := 0;
    FCapacity := 0;
  end;
  
  function TArrayList.Contains(const Value: Variant): Boolean;
  begin
    Result := IndexOf(Value) > -1;
  end;
  
  
  constructor TArrayList.Create(ACapacity: Integer; Sync: Boolean;
    ReadWriteSync: Boolean);
  
negative.code:   FReadWriteLock.EndWrite;
  end;
  
  procedure TAbstractList.AddAll(const AList: IImmutableList);
  var
    I: Integer;
  begin
    Grow(AList.Count);
    for I := 0 to AList.Count - 1 do Add(AList[I]);
  end;
  
  procedure TAbstractList.AddAll(const Container: Variant);
  var
    I, N, Low, High: Integer;
  begin
    if VarIsList(Container) then begin
      AddAll(VarToList(Container));
    end
    else if VarIsArray(Container) then begin
      N := Length(Container);
      Grow(N);
      Low := VarArrayLowBound(Container, 1);
      High := Low + N - 1;
      for I := Low to High do Add(Container[I]);
    end;
  end;
  
  procedure TAbstractList.AddAll(const ConstArray: array of const);
  var
    I, N: Integer;
  begin
    N := Length(ConstArray);
    Grow(N);
    for I := 0 to N - 1 do Add(VarRecToVar(ConstArray[I]));
  end;
  
  procedure TAbstractList.Assign(const Source: IImmutableList);
  var
    I: Integer;
  