content: {-# LANGUAGE StandaloneDeriving, DeriveGeneric, FlexibleInstances, UndecidableInstances #-}
  module Common.Json.ConvInstances where
      
  import Data.Aeson
  import GHC.Generics
  import Common.Lib.SizedList as SizedList
  import Common.Json.Instances()
  import qualified Common.Lib.Rel as Rel
  import qualified Common.Lib.MapSet as MapSet
  import qualified Common.InjMap as InjMap
  import qualified Data.Relation as DRel
  import qualified Data.Relation.Internal as DRelInt
  import System.Time
  
  deriving instance Generic ClockTime
  deriving instance (Generic a, Generic b) => Generic (DRelInt.Relation a b)
  
  instance ToJSON a => ToJSON (SizedList.SizedList a)
  instance (Ord a, ToJSON a, Ord b, ToJSON b, ToJSONKey a, ToJSONKey b) => ToJSON (InjMap.InjMap a b) where
  instance (Ord a, ToJSON a, Ord b, ToJSON b, ToJSONKey a) => ToJSON (MapSet.MapSet a b) where
  instance (Ord a, ToJSON a, ToJSONKey a) => ToJSON (Rel.Rel a) where
  instance (Ord a, Ord b, Generic a, Generic b, ToJSON a, ToJSON b, ToJSONKey a, ToJSONKey b) => ToJSON (DRel.Relation a b) where
  instance ToJSON ClockTime where
  
  instance FromJSON a => FromJSON (SizedList.SizedList a)
  instance (Ord a, FromJSON a, Ord b, FromJSON b, FromJSONKey a, FromJSONKey b) => FromJSON (InjMap.InjMap a b) where
  instance (Ord a, FromJSON a, Ord b, FromJSON b, FromJSONKey a) => FromJSON (MapSet.MapSet a b) where
  instance (Ord a, FromJSON a, FromJSONKey a) => FromJSON (Rel.Rel a) where
  instance (Ord a, Ord b, Generic a, Generic b, FromJSON a, FromJSON b, FromJSONKey a, FromJSONKey b) => FromJSON (DRel.Relation a b) where
  instance FromJSON ClockTime where
  