Iterating over a `HashSet` produces items in an arbitrary order. A `BTreeSet`, on the other hand, produces items in the same order they were inserted. Thus, this structure is more appropriate, since the execution order of hooks may be important in some cases.