How we built an interpreter for Swift