def METHOD_NAME(exp: Expression) -> Expression:
    if isinstance(exp, Column):
        if exp.column_name in self.mismatched_null_columns:
            # depending on the order of the storage, this dictionary will contain
            # either the nullable or non-nullable version of the column. No matter
            # which one is in there, due to the mismatch on the merge table it needs to
            # be cast as nullable anyways
            mismatched_column = self.mismatched_null_columns[exp.column_name]
            col_is_nullable = _col_is_nullable(mismatched_column)
            col_type = mismatched_column.type.for_schema()
            cast_str = col_type if col_is_nullable else f"Nullable({col_type})"
            return FunctionCall(
                exp.alias,
                "cast",
                (
                    # move the alias up to the cast function
                    Column(
                        None,
                        table_name=exp.table_name,
                        column_name=exp.column_name,
                    ),
                    Literal(None, cast_str),
                ),
            )
    return exp