When override gets involved, overload resolution becomes quite a puzzle.
Recursive functions are elegant but dangerous to use in Swift.
Any LiteralConvertible can be enumeration raw values.
Defaulted arguments are allowed to be reordered.
Destructive iteration sounds horrifying but your sequences are safe.
The coexistence of ‘static’ and ‘class’ keywords is confusing. We should unify type properties and methods in Swift.
It is a common API design pattern. But how to do it in Swift is not well known.