content: {-# LANGUAGE TemplateHaskell #-}
  {-# LANGUAGE TypeFamilies #-}
  {-# OPTIONS_GHC -ddump-splices -dsuppress-uniques #-}
  module Bug where
  
  $([d| type family Foo a b
        type instance Foo (Maybe a) b = Either (Maybe a) (Maybe b)
  
        data family Bar a b
        data instance Bar (Maybe a) b = BarMaybe (Maybe a) (Maybe b)
      |])
  
  {-
      type instance Foo (Maybe a) b = Either (Maybe a) (Maybe b)
  
  becomes
  
  [TySynInstD Bug.Foo
    (TySynEqn
      [AppT
        (ConT GHC.Base.Maybe)
        (VarT a_6989586621679027317)
       ,VarT b_6989586621679027318]
      (AppT
        (AppT
          (ConT Data.Either.Either)
          (AppT
            (ConT GHC.Base.Maybe)
            (VarT a_6989586621679027317)
          )
        )
        (AppT (ConT GHC.Base.Maybe) (VarT b_6989586621679027318))
      )
    )
  ]
  
      data instance Bar (Maybe a) b = BarMaybe (Maybe a) (Maybe b)
  
  becomes
  
  [DataInstD [] Bug.Bar
    [AppT
      (ConT GHC.Base.Maybe)
      (VarT a_6989586621679027707)
    ,VarT b_6989586621679027708
    ]
    Nothing
    [NormalC
      BarMaybe_6989586621679027706
      [(Bang
          NoSourceUnpackedness
          NoSourceStrictness
        ,AppT
          (ConT GHC.Base.Maybe)
           (VarT a_6989586621679027707)
        )
      ,(Bang
         NoSourceUnpackedness
         NoSourceStrictness
       ,AppT
         (ConT GHC.Base.Maybe)
         (VarT b_6989586621679027708)
       )
      ]
    ]
    []]
  
  
  -}
  