code: function If(transform, node) {
    var if_ = ifHelper(transform, node);
    var block = es.BlockStatement(null, [if_]);
    var fn = es.FunctionExpression(null, null, [], block);
    return es.CallExpression(null, fn, []);
  }
docs: It would totally work to just generate code like `P ? X : Y`, but pretty printers don't tend to make nested usages of such even remotely readable, so we just use a function wrapper and normal if/else.