Or we could still use `SortedSet` (Kind of I like that idea, it avoids duplicates and maintains an order) and let `Type` implement a `Comparator` that uses your distanceTo method.. so the Exceptions are sorted according their inheritance structure :) WDYT?