If I recall correctly this is specifically related to the way the list classes in FGL implement the IndexOf function... by which I mean, they use the actual = operator to compare list items. If for whatever reason you're absolutely dead set on using FGL, you could modify your copy of FGL.pp to use something like CompareByte instead of = in those functions, and it would then be able to create lists of any type. However, in my opinion that wouldn't really be worth it at all, and as Marco said you should really just use RTL-Generics. Not only does it have a lot more features than FGL, but it's also significantly more performant.