$ {
  input.renderBody(out);
  input.renderThing(out);
  input.renderBody(out, attrs);
  renderBody(out);
}

$ input.template.render({ x: 1 }, out);
$ input.template.renderer({ y() {} }, out);
$ input.barRenderer(null, out);

$ input.barRenderer({}, true, out);

$ if (x) {
  renderA(out);
} else if (y) {
  renderB(out);
} else {
  renderC(out);
}

$ x && render(out);
$ x || render(out);

$ for (let i = 0; i < 10; i++) {
  input.items[i].renderBody(out);
}

$ let i = 10;
$ while (i--) {
  input.renderBody(out);
}

$ if (z) renderD(out);

// The following usages cannot be migrated as the syntax causes them to bail out
$ {
    // if.test
    if (async () => {}) {
        renderBody(out);
    }
}

$ {
    // if.consequent
    if (true) {
        async function x() {
            renderBody(out);
        }
    }
}

$ {
    // if.alternate
    if (false) {
    } else {
        async function x() {
            renderBody(out);
        }
    }
}

$ {
    // elseif.test
    if (false) {
    } else if (async () => {}) {
        renderBody(out);
    }
}

$ {
    // elseif.consequent
    if (false) {
    } else if (true) {
        async function x() {
            renderBody(out);
        }
    }
}

$ {
    // elseif.alternate
    if (false) {
    } else if (false) {
    } else {
        async function x() {
            renderBody(out);
        }
    }
}

$ {
    // for.init
    for (let x = (async () => {}); x < y; x++) {
        renderBody(out);
    }
}

$ {
    // for.test
    for (let x = 1; (async () => {}); x++) {
        renderBody(out);
    }
}

$ {
    // for.update
    for (let x = 1; x < y; (async () => {})) {
        renderBody(out);
    }
}

$ {
    // for.body
    for (let x = 1; x < y; x++) {
        async function x() {
            renderBody(out);
        }
    }
}

$ {
    // while.test
    while ((async () => {})) {
        renderBody(out);
    }
}

$ {
    // while.body
    while (true) {
        async function x() {
            renderBody(out);
        }
    }
}

$ {
    // dowhile.body
    do {
        async function x() {
            renderBody(out);
        }
    } while (true);
}