as, as?, and as!

This is a really interesting post from Ole Begemann. Swift's type casting operators, is and as, are powerful but complex operators, with a whole list of functions. Here, Ole presents an unexpected fatal error encountered when using one of these operators, and uses it to explain the difference between downcasting at runtime, and type coercion at compile time.