+C.derive [d| instance Unfoldable MIMEParams (CIAscii, Text)
+ instance Foldable MIMEParams (CIAscii, Text)
+ |]
+
+-- FIXME: auto-derive
+instance Collection MIMEParams (CIAscii, Text) where
+ {-# INLINE filter #-}
+ filter f (MIMEParams m) = MIMEParams $ filter f m
+
+-- FIXME: auto-derive
+instance Indexed MIMEParams CIAscii Text where
+ {-# INLINE index #-}
+ index k (MIMEParams m) = index k m
+ {-# INLINE adjust #-}
+ adjust f k (MIMEParams m) = MIMEParams $ adjust f k m
+ {-# INLINE inDomain #-}
+ inDomain k (MIMEParams m) = inDomain k m
+
+-- FIXME: auto-derive
+instance Map MIMEParams CIAscii Text where
+ {-# INLINE lookup #-}
+ lookup k (MIMEParams m) = lookup k m
+ {-# INLINE mapWithKey #-}
+ mapWithKey f (MIMEParams m)
+ = MIMEParams $ mapWithKey f m
+ {-# INLINE unionWith #-}
+ unionWith f (MIMEParams α) (MIMEParams β)
+ = MIMEParams $ unionWith f α β
+ {-# INLINE intersectionWith #-}
+ intersectionWith f (MIMEParams α) (MIMEParams β)
+ = MIMEParams $ intersectionWith f α β
+ {-# INLINE differenceWith #-}
+ differenceWith f (MIMEParams α) (MIMEParams β)
+ = MIMEParams $ differenceWith f α β
+ {-# INLINE isSubmapBy #-}
+ isSubmapBy f (MIMEParams α) (MIMEParams β)
+ = isSubmapBy f α β
+ {-# INLINE isProperSubmapBy #-}
+ isProperSubmapBy f (MIMEParams α) (MIMEParams β)
+ = isProperSubmapBy f α β
+
+-- FIXME: auto-derive
+instance SortingCollection MIMEParams (CIAscii, Text) where
+ {-# INLINE minView #-}
+ minView (MIMEParams m) = second MIMEParams <$> minView m