anchor.diff:      procedure Reverse;
       procedure Sort; overload;
       procedure Sort(CompareProc: TListCompareMethod); overload;
  +    procedure Shuffle;
       procedure TrimExcess;
       property Item[Index: Integer]: Variant read Get write Put; default;
     published
  
positive.code: {$IFNDEF DELPHIXE3_UP}
  function BytesOf(const Val: Pointer; const Len: integer): TBytes; overload;
  {$ENDIF}
  
  function ShuffleStringArray(const StringArray: array of string): TStringArray;
  
  type
  
  
negative.code: var
    HashCode1, HashCode2: Integer;
  begin
    if Index1 = Index2 then exit;
    inherited Exchange(Index1, Index2);
    HashCode1 := HashOf(FList[Index1]);
    HashCode2 := HashOf(FList[Index2]);
    if HashCode1 <> HashCode2 then begin
      FHashBucket.Modify(HashCode1, HashCode2, Index2);
      FHashBucket.Modify(HashCode2, HashCode1, Index1);
    end;
  end;
  
  function THashedList.HashOf(const Value: Variant): Integer;
  