Any variable can have a getter/setter or observers, not only properties.
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.
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.