The flexibility of dynamically typed languages such as JavaScript, Python, Ruby, and
Scheme comes at the cost of run-time type checks. Some of these checks can be eliminated
via control-flow analysis. ...