have you tried THashSet<T> in generics.collections?
But would that allow syntax like ASet := ASet + [AMember]?