// isTrue that, if passed a function, auto-calls it
// (for coroutines)
static boolean isTrue(O o) {
  if (o instanceof Boolean)
    ret ((Boolean) o).booleanValue();
  if (o == null) ret false;
  ret ((Boolean) callF(o)).booleanValue();
}

static bool isTrue(O pred, O arg) {
  ret booleanValue(callF(pred, arg));
}