def METHOD_NAME(df: Any, call: ast.Call):
    cond = _eval_ast_expr_pandas_df(df, call.args[0])  # type: ignore
    assert isinstance(cond, pd.Series)
    v1 = _eval_ast_expr_pandas_df(df, call.args[1])  # type: ignore
    v2 = _eval_ast_expr_pandas_df(df, call.args[2])  # type: ignore
    if not isinstance(v1, pd.Series):
        if not isinstance(v2, pd.Series):  # two scalars, can avoid broadcast
            result = cond.map(lambda b: v1 if b else v2)
        else:  # pandas will implicitly broadcast v1
            result = v2.mask(cond, v1)
    else:  # pandas will implicitly broadcast v2 if it is not a Series
        result = v1.where(cond, v2)
    return result