/**
* Figure out which lines are executable. This is mostly straightforward
* except that we have to avoid some synthetic nodes introduced earlier,
* otherwise e.g. class declarations will be visited.
*/
new JVisitor() {
@Override public void endVisit(JMethodCall x, Context ctx) {
// this is a bit of a hack. The compiler inserts no-arg super calls, but
// there isn't really a way to detect that they're synthetic, and the
// strategy below of comparing source info with that of the enclosing type
// doesn't work because the enclosing type is set to be that of the superclass.