Case class implementation and matching DSL for Swift