code: function redo_if(statements) {
                  statements = MAP(statements, walk);
  
                  for (var i = 0; i < statements.length; ++i) {
                          var fi = statements[i];
                          if (fi[0] != "if") continue;
  
                          if (fi[3] && walk(fi[3])) continue;
  
                          var t = walk(fi[2]);
                          if (!aborts(t)) continue;
  
                          var conditional = walk(fi[1]);
  
                          var e_body = statements.slice(i + 1);
                          var e = e_body.length == 1 ? e_body[0] : [ "block", e_body ];
  
                          var ret = statements.slice(0, i).concat([ [
                                  fi[0],          // "if"
                                  conditional,    // conditional
                                  t,              // then
                                  e               // else
                          ] ]);
  
                          return redo_if(ret);
                  }
  
                  return statements;
          }
docs: In this first pass, we rewrite ifs which abort with no else with an if-else.  For example:  if (x) { blah(); return y; } foobar();  is rewritten into:  if (x) { blah(); return y; } else { foobar(); }