Dynamic is contagious: if there is a statement v = f(... D ...)
then v becomes D.

Repeat until no more changes occur.

Binding-time analysis can be online (done while specialization
proceeds) or offline (done as a separate preprocessing phase).
Offline processing can annotate the code by changing function
names to reflect whether they are static or dynamic, e.g. if
becomes ifs or ifd.