fn try_coerce_types( function_name: &str, valid_types: Vec<Vec<DataType>>, current_types: &[DataType], type_signature: &TypeSignature, ) -> Result<Vec<DataType>>