+#else
+-- In GHC 6.10, intersectionWith is (a -> b -> a) instead of (a -> b -> c),
+-- so we need to jump through some hoops to get the more general type.
+intersectUFM_C f (UFM x) (UFM y) = UFM z
+ where z = let x' = M.map Left x
+ f' (Left a) b = Right (f a b)
+ f' (Right _) _ = panic "intersectUFM_C: f': Right"
+ z' = M.intersectionWith f' x' y
+ fromRight (Right a) = a
+ fromRight _ = panic "intersectUFM_C: Left"
+ in M.map fromRight z'
+#endif