+dataConCanMatch :: DataCon -> [Type] -> Bool
+-- Returns True iff the data con can match a scrutinee of type (T tys)
+-- where T is the type constructor for the data con
+dataConCanMatch con tys
+ | isVanillaDataCon con
+ = True
+ | otherwise
+ = isSuccess $ initUM (\tv -> BindMe) $
+ unify_tys emptyTvSubstEnv (dataConResTys con) tys
+
+----------------------------