Control-Flow Analysis is a popular technique for performing static analysis of many different kinds of programming languages. It’s most often needed in cases where you have some kind of dynamic dispatch: either where you have first-class functions or when you have objects and you call one of their methods. Imagine for a moment that you were given a program which you were asked to analyze manually. You might start by going to the top of the program, running through each branch, and keeping t...