Generics fangen schon beim TArray<xyz> an und gehen über die anonymen Methoden hin zu noch viel mehr.
Delphi-Quellcode:
type
X = array of irgendwas;
Y = TArray<irgendwas>;
Wenn du Letzteres in zwei Units definiert hast, dann sind diese Typen kompatibel,
während bei X das zwei unterschiedliche Typen sind, wo man Variablen/Parameter nicht untereinander zuweisen kann.