diff --git a/.gitattributes b/.gitattributes
index 7866dc5b8b..d57cebdbb0 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -7406,6 +7406,14 @@ packages/rtl-generics/examples/thashmapcaseinsensitive/thashmapcaseinsensitive.l
packages/rtl-generics/examples/thashmapcaseinsensitive/thashmapcaseinsensitive.lpr svneol=native#text/pascal
packages/rtl-generics/examples/thashmapextendedequalitycomparer/thashmapextendedequalitycomparer.lpi svneol=native#text/xml
packages/rtl-generics/examples/thashmapextendedequalitycomparer/thashmapextendedequalitycomparer.lpr svneol=native#text/pascal
+packages/rtl-generics/examples/thashset/thashset_exceptwith.lpi svneol=native#text/xml
+packages/rtl-generics/examples/thashset/thashset_exceptwith.lpr svneol=native#text/pascal
+packages/rtl-generics/examples/thashset/thashset_intersectwith.lpi svneol=native#text/xml
+packages/rtl-generics/examples/thashset/thashset_intersectwith.lpr svneol=native#text/pascal
+packages/rtl-generics/examples/thashset/thashset_symmetricexceptwith.lpi svneol=native#text/xml
+packages/rtl-generics/examples/thashset/thashset_symmetricexceptwith.lpr svneol=native#text/pascal
+packages/rtl-generics/examples/thashset/thashset_unionwith.lpi svneol=native#text/xml
+packages/rtl-generics/examples/thashset/thashset_unionwith.lpr svneol=native#text/pascal
packages/rtl-generics/examples/tobjectlist/tobjectlistproject.lpi svneol=native#text/xml
packages/rtl-generics/examples/tobjectlist/tobjectlistproject.lpr svneol=native#text/pascal
packages/rtl-generics/examples/tqueue/tqueueproject.lpi svneol=native#text/xml
diff --git a/packages/rtl-generics/examples/thashset/thashset_exceptwith.lpi b/packages/rtl-generics/examples/thashset/thashset_exceptwith.lpi
new file mode 100644
index 0000000000..f3609824d9
--- /dev/null
+++ b/packages/rtl-generics/examples/thashset/thashset_exceptwith.lpi
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/rtl-generics/examples/thashset/thashset_exceptwith.lpr b/packages/rtl-generics/examples/thashset/thashset_exceptwith.lpr
new file mode 100644
index 0000000000..8331d95ff3
--- /dev/null
+++ b/packages/rtl-generics/examples/thashset/thashset_exceptwith.lpr
@@ -0,0 +1,50 @@
+program thashset_exceptwith;
+
+{$MODE DELPHI}
+{$APPTYPE CONSOLE}
+
+uses
+ SysUtils, Generics.Collections;
+
+function SetToStr(ASet: THashSet): string;
+var
+ i: Integer;
+begin
+ Result := '(';
+ for i in ASet do
+ Result := Result + ' ' + IntToStr(i);
+ Result := Result + ' )';
+end;
+
+procedure WriteLnHashSet(const AName: string; AHashSet: THashSet);
+begin
+ WriteLn(Format('%0:s.Count = %1:d %0:s = %2:s', [AName, AHashSet.Count, SetToStr(AHashSet)]));
+end;
+
+var
+ LowNumbers: THashSet;
+ HighNumbers: THashSet;
+ i: Integer;
+begin
+ LowNumbers := THashSet.Create;
+ HighNumbers := THashSet.Create;
+
+ for i := 0 to 5 do
+ LowNumbers.Add(i);
+
+ for i := 3 to 9 do
+ HighNumbers.Add(i);
+
+ WriteLnHashSet('LowNumbers', LowNumbers);
+ WriteLnHashSet('HighNumbers', HighNumbers);
+
+ WriteLn('< HighNumbers ExceptWith LowNumbers >');
+ HighNumbers.ExceptWith(LowNumbers);
+ WriteLnHashSet('HighNumbers', HighNumbers);
+
+ HighNumbers.Free;
+ LowNumbers.Free;
+
+ ReadLn;
+end.
+
diff --git a/packages/rtl-generics/examples/thashset/thashset_intersectwith.lpi b/packages/rtl-generics/examples/thashset/thashset_intersectwith.lpi
new file mode 100644
index 0000000000..aa007f2c8a
--- /dev/null
+++ b/packages/rtl-generics/examples/thashset/thashset_intersectwith.lpi
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/rtl-generics/examples/thashset/thashset_intersectwith.lpr b/packages/rtl-generics/examples/thashset/thashset_intersectwith.lpr
new file mode 100644
index 0000000000..51771e2127
--- /dev/null
+++ b/packages/rtl-generics/examples/thashset/thashset_intersectwith.lpr
@@ -0,0 +1,53 @@
+program thashset_intersectwith;
+
+{$MODE DELPHI}
+{$APPTYPE CONSOLE}
+
+uses
+ SysUtils, Generics.Collections;
+
+function SetToStr(ASet: THashSet): string;
+var
+ i: string;
+begin
+ Result := '(';
+ for i in ASet do
+ Result := Result + ' ' + i;
+ Result := Result + ' )';
+end;
+
+procedure WriteLnHashSet(const AName: string; AHashSet: THashSet);
+begin
+ WriteLn(Format('%0:s.Count = %1:d %0:s = %2:s', [AName, AHashSet.Count, SetToStr(AHashSet)]));
+end;
+
+var
+ Group1: THashSet;
+ Group2: THashSet;
+ Group3: THashSet;
+begin
+ Group1 := THashSet.Create;
+ Group2 := THashSet.Create;
+
+ Group1.Add('User1');
+ Group1.Add('User2');
+ Group1.Add('User3');
+ Group2.Add('User3');
+ Group2.Add('User4');
+ Group2.Add('User5');
+
+ WriteLnHashSet('Group1', Group1);
+ WriteLnHashSet('Group2', Group2);
+
+ WriteLn('< Group3 IntersectWith Group2 >');
+ Group3 := THashSet.Create(Group1);
+ Group3.IntersectWith(Group2);
+ WriteLnHashSet('Group3', Group3);
+
+ Group3.Free;
+ Group2.Free;
+ Group1.Free;
+
+ ReadLn;
+end.
+
diff --git a/packages/rtl-generics/examples/thashset/thashset_symmetricexceptwith.lpi b/packages/rtl-generics/examples/thashset/thashset_symmetricexceptwith.lpi
new file mode 100644
index 0000000000..46083943c9
--- /dev/null
+++ b/packages/rtl-generics/examples/thashset/thashset_symmetricexceptwith.lpi
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/rtl-generics/examples/thashset/thashset_symmetricexceptwith.lpr b/packages/rtl-generics/examples/thashset/thashset_symmetricexceptwith.lpr
new file mode 100644
index 0000000000..5b29e13511
--- /dev/null
+++ b/packages/rtl-generics/examples/thashset/thashset_symmetricexceptwith.lpr
@@ -0,0 +1,50 @@
+program thashset_symmetricexceptwith;
+
+{$MODE DELPHI}
+{$APPTYPE CONSOLE}
+
+uses
+ SysUtils, Generics.Collections;
+
+function SetToStr(ASet: THashSet): string;
+var
+ i: Integer;
+begin
+ Result := '(';
+ for i in ASet do
+ Result := Result + ' ' + IntToStr(i);
+ Result := Result + ' )';
+end;
+
+procedure WriteLnHashSet(const AName: string; AHashSet: THashSet);
+begin
+ WriteLn(Format('%0:s.Count = %1:d %0:s = %2:s', [AName, AHashSet.Count, SetToStr(AHashSet)]));
+end;
+
+var
+ LowNumbers: THashSet;
+ HighNumbers: THashSet;
+ i: Integer;
+begin
+ LowNumbers := THashSet.Create;
+ HighNumbers := THashSet.Create;
+
+ for i := 0 to 5 do
+ LowNumbers.Add(i);
+
+ for i := 3 to 9 do
+ HighNumbers.Add(i);
+
+ WriteLnHashSet('LowNumbers', LowNumbers);
+ WriteLnHashSet('HighNumbers', HighNumbers);
+
+ WriteLn('< HighNumbers SymmetricExceptWith LowNumbers >');
+ HighNumbers.SymmetricExceptWith(LowNumbers);
+ WriteLnHashSet('HighNumbers', HighNumbers);
+
+ HighNumbers.Free;
+ LowNumbers.Free;
+
+ ReadLn;
+end.
+
diff --git a/packages/rtl-generics/examples/thashset/thashset_unionwith.lpi b/packages/rtl-generics/examples/thashset/thashset_unionwith.lpi
new file mode 100644
index 0000000000..c53f6dcf28
--- /dev/null
+++ b/packages/rtl-generics/examples/thashset/thashset_unionwith.lpi
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/rtl-generics/examples/thashset/thashset_unionwith.lpr b/packages/rtl-generics/examples/thashset/thashset_unionwith.lpr
new file mode 100644
index 0000000000..90b7e6868a
--- /dev/null
+++ b/packages/rtl-generics/examples/thashset/thashset_unionwith.lpr
@@ -0,0 +1,53 @@
+program thashset_unionwith;
+
+{$MODE DELPHI}
+{$APPTYPE CONSOLE}
+
+uses
+ SysUtils, Generics.Collections;
+
+function SetToStr(ASet: THashSet): string;
+var
+ i: Integer;
+begin
+ Result := '(';
+ for i in ASet do
+ Result := Result + ' ' + IntToStr(i);
+ Result := Result + ' )';
+end;
+
+procedure WriteLnHashSet(const AName: string; AHashSet: THashSet);
+begin
+ WriteLn(Format('%0:s.Count = %1:d %0:s = %2:s', [AName, AHashSet.Count, SetToStr(AHashSet)]));
+end;
+
+var
+ EvenNumbers: THashSet;
+ OddNumbers: THashSet;
+ Numbers: THashSet;
+ i: Integer;
+begin
+ EvenNumbers := THashSet.Create;
+ OddNumbers := THashSet.Create;
+
+ for i := 0 to 4 do
+ begin
+ EvenNumbers.Add(i * 2);
+ OddNumbers.Add((i * 2) + 1);
+ end;
+
+ WriteLnHashSet('EvenNumbers', EvenNumbers);
+ WriteLnHashSet('OddNumbers', OddNumbers);
+
+ WriteLn('< Numbers UnionWith OddNumbers >');
+ Numbers := THashSet.Create(EvenNumbers);
+ Numbers.UnionWith(OddNumbers);
+ WriteLnHashSet('Numbers', Numbers);
+
+ Numbers.Free;
+ OddNumbers.Free;
+ EvenNumbers.Free;
+
+ ReadLn;
+end.
+