Unlike compatible_data_types() and implicit_compatible_data_types(), this function is intended to be symmetrical. So it makes sense to preserve the names "t1" and "t2" for the arguments.