https://steipete.me/posts/2016/surprises-with-swift-extensions