CFA2: a Context-Free Approach to Control-Flow Analysis (Logical Methods in Computer Science, 2011)