I. Introduction
Solidity [1] is a statically-typed high-level programming language for writing smart contracts [2] that run on Ethereum Virtual Machine (EVM), a sandbox environment in Ethereum [3] [4] which is a decentralized [5] blockchain. As Solidity is a young language born in 2015, its grammar has been changing rapidly with a large number of new features being introduced and deprecated features being removed, mostly to make the language safer or more convenient to use.