packages feed

singletons-2.6: tests/compile-and-dump/Singletons/ShowDeriving.ghc88.template

Singletons/ShowDeriving.hs:(0,0)-(0,0): Splicing declarations
    singletons
      [d| infixl 5 `MkFoo2b`, :*:, :&:
          
          data Foo1
            = MkFoo1
            deriving Show
          data Foo2 a
            = MkFoo2a a a | a `MkFoo2b` a | (:*:) a a | a :&: a
            deriving Show
          data Foo3
            = MkFoo3 {getFoo3a :: Bool, *** :: Bool}
            deriving Show |]
  ======>
    data Foo1
      = MkFoo1
      deriving Show
    infixl 5 `MkFoo2b`
    infixl 5 :*:
    infixl 5 :&:
    data Foo2 a
      = MkFoo2a a a | a `MkFoo2b` a | (:*:) a a | a :&: a
      deriving Show
    data Foo3
      = MkFoo3 {getFoo3a :: Bool, *** :: Bool}
      deriving Show
    type (***@#@$$) (a0123456789876543210 :: Foo3) =
        (***) a0123456789876543210
    instance SuppressUnusedWarnings (***@#@$) where
      suppressUnusedWarnings = snd (((,) (:***@#@$###)) ())
    data (***@#@$) :: (~>) Foo3 Bool
      where
        (:***@#@$###) :: forall a0123456789876543210
                                arg. SameKind (Apply (***@#@$) arg) ((***@#@$$) arg) =>
                         (***@#@$) a0123456789876543210
    type instance Apply (***@#@$) a0123456789876543210 = (***) a0123456789876543210
    type GetFoo3aSym1 (a0123456789876543210 :: Foo3) =
        GetFoo3a a0123456789876543210
    instance SuppressUnusedWarnings GetFoo3aSym0 where
      suppressUnusedWarnings = snd (((,) GetFoo3aSym0KindInference) ())
    data GetFoo3aSym0 :: (~>) Foo3 Bool
      where
        GetFoo3aSym0KindInference :: forall a0123456789876543210
                                            arg. SameKind (Apply GetFoo3aSym0 arg) (GetFoo3aSym1 arg) =>
                                     GetFoo3aSym0 a0123456789876543210
    type instance Apply GetFoo3aSym0 a0123456789876543210 = GetFoo3a a0123456789876543210
    type family (***) (a :: Foo3) :: Bool where
      (***) (MkFoo3 _ field) = field
    type family GetFoo3a (a :: Foo3) :: Bool where
      GetFoo3a (MkFoo3 field _) = field
    type MkFoo1Sym0 = MkFoo1
    type MkFoo2aSym2 (t0123456789876543210 :: a0123456789876543210) (t0123456789876543210 :: a0123456789876543210) =
        MkFoo2a t0123456789876543210 t0123456789876543210
    instance SuppressUnusedWarnings (MkFoo2aSym1 t0123456789876543210) where
      suppressUnusedWarnings = snd (((,) MkFoo2aSym1KindInference) ())
    data MkFoo2aSym1 (t0123456789876543210 :: a0123456789876543210) :: (~>) a0123456789876543210 (Foo2 a0123456789876543210)
      where
        MkFoo2aSym1KindInference :: forall t0123456789876543210
                                           t0123456789876543210
                                           arg. SameKind (Apply (MkFoo2aSym1 t0123456789876543210) arg) (MkFoo2aSym2 t0123456789876543210 arg) =>
                                    MkFoo2aSym1 t0123456789876543210 t0123456789876543210
    type instance Apply (MkFoo2aSym1 t0123456789876543210) t0123456789876543210 = MkFoo2a t0123456789876543210 t0123456789876543210
    instance SuppressUnusedWarnings MkFoo2aSym0 where
      suppressUnusedWarnings = snd (((,) MkFoo2aSym0KindInference) ())
    data MkFoo2aSym0 :: forall a0123456789876543210.
                        (~>) a0123456789876543210 ((~>) a0123456789876543210 (Foo2 a0123456789876543210))
      where
        MkFoo2aSym0KindInference :: forall t0123456789876543210
                                           arg. SameKind (Apply MkFoo2aSym0 arg) (MkFoo2aSym1 arg) =>
                                    MkFoo2aSym0 t0123456789876543210
    type instance Apply MkFoo2aSym0 t0123456789876543210 = MkFoo2aSym1 t0123456789876543210
    type MkFoo2bSym2 (t0123456789876543210 :: a0123456789876543210) (t0123456789876543210 :: a0123456789876543210) =
        MkFoo2b t0123456789876543210 t0123456789876543210
    instance SuppressUnusedWarnings (MkFoo2bSym1 t0123456789876543210) where
      suppressUnusedWarnings = snd (((,) MkFoo2bSym1KindInference) ())
    data MkFoo2bSym1 (t0123456789876543210 :: a0123456789876543210) :: (~>) a0123456789876543210 (Foo2 a0123456789876543210)
      where
        MkFoo2bSym1KindInference :: forall t0123456789876543210
                                           t0123456789876543210
                                           arg. SameKind (Apply (MkFoo2bSym1 t0123456789876543210) arg) (MkFoo2bSym2 t0123456789876543210 arg) =>
                                    MkFoo2bSym1 t0123456789876543210 t0123456789876543210
    type instance Apply (MkFoo2bSym1 t0123456789876543210) t0123456789876543210 = MkFoo2b t0123456789876543210 t0123456789876543210
    infixl 5 `MkFoo2bSym1`
    instance SuppressUnusedWarnings MkFoo2bSym0 where
      suppressUnusedWarnings = snd (((,) MkFoo2bSym0KindInference) ())
    data MkFoo2bSym0 :: forall a0123456789876543210.
                        (~>) a0123456789876543210 ((~>) a0123456789876543210 (Foo2 a0123456789876543210))
      where
        MkFoo2bSym0KindInference :: forall t0123456789876543210
                                           arg. SameKind (Apply MkFoo2bSym0 arg) (MkFoo2bSym1 arg) =>
                                    MkFoo2bSym0 t0123456789876543210
    type instance Apply MkFoo2bSym0 t0123456789876543210 = MkFoo2bSym1 t0123456789876543210
    infixl 5 `MkFoo2bSym0`
    type (:*:@#@$$$) (t0123456789876543210 :: a0123456789876543210) (t0123456789876543210 :: a0123456789876543210) =
        (:*:) t0123456789876543210 t0123456789876543210
    instance SuppressUnusedWarnings ((:*:@#@$$) t0123456789876543210) where
      suppressUnusedWarnings = snd (((,) (::*:@#@$$###)) ())
    data (:*:@#@$$) (t0123456789876543210 :: a0123456789876543210) :: (~>) a0123456789876543210 (Foo2 a0123456789876543210)
      where
        (::*:@#@$$###) :: forall t0123456789876543210
                                 t0123456789876543210
                                 arg. SameKind (Apply ((:*:@#@$$) t0123456789876543210) arg) ((:*:@#@$$$) t0123456789876543210 arg) =>
                          (:*:@#@$$) t0123456789876543210 t0123456789876543210
    type instance Apply ((:*:@#@$$) t0123456789876543210) t0123456789876543210 = (:*:) t0123456789876543210 t0123456789876543210
    infixl 5 :*:@#@$$
    instance SuppressUnusedWarnings (:*:@#@$) where
      suppressUnusedWarnings = snd (((,) (::*:@#@$###)) ())
    data (:*:@#@$) :: forall a0123456789876543210.
                      (~>) a0123456789876543210 ((~>) a0123456789876543210 (Foo2 a0123456789876543210))
      where
        (::*:@#@$###) :: forall t0123456789876543210
                                arg. SameKind (Apply (:*:@#@$) arg) ((:*:@#@$$) arg) =>
                         (:*:@#@$) t0123456789876543210
    type instance Apply (:*:@#@$) t0123456789876543210 = (:*:@#@$$) t0123456789876543210
    infixl 5 :*:@#@$
    type (:&:@#@$$$) (t0123456789876543210 :: a0123456789876543210) (t0123456789876543210 :: a0123456789876543210) =
        (:&:) t0123456789876543210 t0123456789876543210
    instance SuppressUnusedWarnings ((:&:@#@$$) t0123456789876543210) where
      suppressUnusedWarnings = snd (((,) (::&:@#@$$###)) ())
    data (:&:@#@$$) (t0123456789876543210 :: a0123456789876543210) :: (~>) a0123456789876543210 (Foo2 a0123456789876543210)
      where
        (::&:@#@$$###) :: forall t0123456789876543210
                                 t0123456789876543210
                                 arg. SameKind (Apply ((:&:@#@$$) t0123456789876543210) arg) ((:&:@#@$$$) t0123456789876543210 arg) =>
                          (:&:@#@$$) t0123456789876543210 t0123456789876543210
    type instance Apply ((:&:@#@$$) t0123456789876543210) t0123456789876543210 = (:&:) t0123456789876543210 t0123456789876543210
    infixl 5 :&:@#@$$
    instance SuppressUnusedWarnings (:&:@#@$) where
      suppressUnusedWarnings = snd (((,) (::&:@#@$###)) ())
    data (:&:@#@$) :: forall a0123456789876543210.
                      (~>) a0123456789876543210 ((~>) a0123456789876543210 (Foo2 a0123456789876543210))
      where
        (::&:@#@$###) :: forall t0123456789876543210
                                arg. SameKind (Apply (:&:@#@$) arg) ((:&:@#@$$) arg) =>
                         (:&:@#@$) t0123456789876543210
    type instance Apply (:&:@#@$) t0123456789876543210 = (:&:@#@$$) t0123456789876543210
    infixl 5 :&:@#@$
    type MkFoo3Sym2 (t0123456789876543210 :: Bool) (t0123456789876543210 :: Bool) =
        MkFoo3 t0123456789876543210 t0123456789876543210
    instance SuppressUnusedWarnings (MkFoo3Sym1 t0123456789876543210) where
      suppressUnusedWarnings = snd (((,) MkFoo3Sym1KindInference) ())
    data MkFoo3Sym1 (t0123456789876543210 :: Bool) :: (~>) Bool Foo3
      where
        MkFoo3Sym1KindInference :: forall t0123456789876543210
                                          t0123456789876543210
                                          arg. SameKind (Apply (MkFoo3Sym1 t0123456789876543210) arg) (MkFoo3Sym2 t0123456789876543210 arg) =>
                                   MkFoo3Sym1 t0123456789876543210 t0123456789876543210
    type instance Apply (MkFoo3Sym1 t0123456789876543210) t0123456789876543210 = MkFoo3 t0123456789876543210 t0123456789876543210
    instance SuppressUnusedWarnings MkFoo3Sym0 where
      suppressUnusedWarnings = snd (((,) MkFoo3Sym0KindInference) ())
    data MkFoo3Sym0 :: (~>) Bool ((~>) Bool Foo3)
      where
        MkFoo3Sym0KindInference :: forall t0123456789876543210
                                          arg. SameKind (Apply MkFoo3Sym0 arg) (MkFoo3Sym1 arg) =>
                                   MkFoo3Sym0 t0123456789876543210
    type instance Apply MkFoo3Sym0 t0123456789876543210 = MkFoo3Sym1 t0123456789876543210
    type family ShowsPrec_0123456789876543210 (a :: GHC.Types.Nat) (a :: Foo1) (a :: Symbol) :: Symbol where
      ShowsPrec_0123456789876543210 _ MkFoo1 a_0123456789876543210 = Apply (Apply ShowStringSym0 "MkFoo1") a_0123456789876543210
    type ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Foo1) (a0123456789876543210 :: Symbol) =
        ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210
    instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where
      suppressUnusedWarnings
        = snd (((,) ShowsPrec_0123456789876543210Sym2KindInference) ())
    data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Foo1) :: (~>) Symbol Symbol
      where
        ShowsPrec_0123456789876543210Sym2KindInference :: forall a0123456789876543210
                                                                 a0123456789876543210
                                                                 a0123456789876543210
                                                                 arg. SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) =>
                                                          ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210
    type instance Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210
    instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where
      suppressUnusedWarnings
        = snd (((,) ShowsPrec_0123456789876543210Sym1KindInference) ())
    data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: (~>) Foo1 ((~>) Symbol Symbol)
      where
        ShowsPrec_0123456789876543210Sym1KindInference :: forall a0123456789876543210
                                                                 a0123456789876543210
                                                                 arg. SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) =>
                                                          ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210
    type instance Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) a0123456789876543210 = ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210
    instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where
      suppressUnusedWarnings
        = snd (((,) ShowsPrec_0123456789876543210Sym0KindInference) ())
    data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) Foo1 ((~>) Symbol Symbol))
      where
        ShowsPrec_0123456789876543210Sym0KindInference :: forall a0123456789876543210
                                                                 arg. SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) =>
                                                          ShowsPrec_0123456789876543210Sym0 a0123456789876543210
    type instance Apply ShowsPrec_0123456789876543210Sym0 a0123456789876543210 = ShowsPrec_0123456789876543210Sym1 a0123456789876543210
    instance PShow Foo1 where
      type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a
    type family ShowsPrec_0123456789876543210 (a :: GHC.Types.Nat) (a :: Foo2 a) (a :: Symbol) :: Symbol where
      ShowsPrec_0123456789876543210 p_0123456789876543210 (MkFoo2a arg_0123456789876543210 arg_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 10))) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "MkFoo2a ")) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210)) (Apply (Apply (.@#@$) ShowSpaceSym0) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210))))) a_0123456789876543210
      ShowsPrec_0123456789876543210 p_0123456789876543210 (MkFoo2b argL_0123456789876543210 argR_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 5))) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 6)) argL_0123456789876543210)) (Apply (Apply (.@#@$) (Apply ShowStringSym0 " `MkFoo2b` ")) (Apply (Apply ShowsPrecSym0 (FromInteger 6)) argR_0123456789876543210)))) a_0123456789876543210
      ShowsPrec_0123456789876543210 p_0123456789876543210 ((:*:) arg_0123456789876543210 arg_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 10))) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "(:*:) ")) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210)) (Apply (Apply (.@#@$) ShowSpaceSym0) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210))))) a_0123456789876543210
      ShowsPrec_0123456789876543210 p_0123456789876543210 ((:&:) argL_0123456789876543210 argR_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 5))) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 6)) argL_0123456789876543210)) (Apply (Apply (.@#@$) (Apply ShowStringSym0 " :&: ")) (Apply (Apply ShowsPrecSym0 (FromInteger 6)) argR_0123456789876543210)))) a_0123456789876543210
    type ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Foo2 a0123456789876543210) (a0123456789876543210 :: Symbol) =
        ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210
    instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where
      suppressUnusedWarnings
        = snd (((,) ShowsPrec_0123456789876543210Sym2KindInference) ())
    data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Foo2 a0123456789876543210) :: (~>) Symbol Symbol
      where
        ShowsPrec_0123456789876543210Sym2KindInference :: forall a0123456789876543210
                                                                 a0123456789876543210
                                                                 a0123456789876543210
                                                                 arg. SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) =>
                                                          ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210
    type instance Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210
    instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where
      suppressUnusedWarnings
        = snd (((,) ShowsPrec_0123456789876543210Sym1KindInference) ())
    data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: forall a0123456789876543210.
                                                                                      (~>) (Foo2 a0123456789876543210) ((~>) Symbol Symbol)
      where
        ShowsPrec_0123456789876543210Sym1KindInference :: forall a0123456789876543210
                                                                 a0123456789876543210
                                                                 arg. SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) =>
                                                          ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210
    type instance Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) a0123456789876543210 = ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210
    instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where
      suppressUnusedWarnings
        = snd (((,) ShowsPrec_0123456789876543210Sym0KindInference) ())
    data ShowsPrec_0123456789876543210Sym0 :: forall a0123456789876543210.
                                              (~>) GHC.Types.Nat ((~>) (Foo2 a0123456789876543210) ((~>) Symbol Symbol))
      where
        ShowsPrec_0123456789876543210Sym0KindInference :: forall a0123456789876543210
                                                                 arg. SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) =>
                                                          ShowsPrec_0123456789876543210Sym0 a0123456789876543210
    type instance Apply ShowsPrec_0123456789876543210Sym0 a0123456789876543210 = ShowsPrec_0123456789876543210Sym1 a0123456789876543210
    instance PShow (Foo2 a) where
      type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a
    type family ShowsPrec_0123456789876543210 (a :: GHC.Types.Nat) (a :: Foo3) (a :: Symbol) :: Symbol where
      ShowsPrec_0123456789876543210 p_0123456789876543210 (MkFoo3 arg_0123456789876543210 arg_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 10))) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "MkFoo3 ")) (Apply (Apply (.@#@$) (Apply ShowCharSym0 "{")) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "getFoo3a = ")) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 0)) arg_0123456789876543210)) (Apply (Apply (.@#@$) ShowCommaSpaceSym0) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "(***) = ")) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 0)) arg_0123456789876543210)) (Apply ShowCharSym0 "}"))))))))) a_0123456789876543210
    type ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Foo3) (a0123456789876543210 :: Symbol) =
        ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210
    instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where
      suppressUnusedWarnings
        = snd (((,) ShowsPrec_0123456789876543210Sym2KindInference) ())
    data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Foo3) :: (~>) Symbol Symbol
      where
        ShowsPrec_0123456789876543210Sym2KindInference :: forall a0123456789876543210
                                                                 a0123456789876543210
                                                                 a0123456789876543210
                                                                 arg. SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) =>
                                                          ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210
    type instance Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210
    instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where
      suppressUnusedWarnings
        = snd (((,) ShowsPrec_0123456789876543210Sym1KindInference) ())
    data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: (~>) Foo3 ((~>) Symbol Symbol)
      where
        ShowsPrec_0123456789876543210Sym1KindInference :: forall a0123456789876543210
                                                                 a0123456789876543210
                                                                 arg. SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) =>
                                                          ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210
    type instance Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) a0123456789876543210 = ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210
    instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where
      suppressUnusedWarnings
        = snd (((,) ShowsPrec_0123456789876543210Sym0KindInference) ())
    data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) Foo3 ((~>) Symbol Symbol))
      where
        ShowsPrec_0123456789876543210Sym0KindInference :: forall a0123456789876543210
                                                                 arg. SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) =>
                                                          ShowsPrec_0123456789876543210Sym0 a0123456789876543210
    type instance Apply ShowsPrec_0123456789876543210Sym0 a0123456789876543210 = ShowsPrec_0123456789876543210Sym1 a0123456789876543210
    instance PShow Foo3 where
      type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a
    infixl 5 :%&:
    infixl 5 :%*:
    infixl 5 `SMkFoo2b`
    data SFoo1 :: Foo1 -> GHC.Types.Type where SMkFoo1 :: SFoo1 MkFoo1
    type instance Sing @Foo1 = SFoo1
    instance SingKind Foo1 where
      type Demote Foo1 = Foo1
      fromSing SMkFoo1 = MkFoo1
      toSing MkFoo1 = SomeSing SMkFoo1
    data SFoo2 :: forall a. Foo2 a -> GHC.Types.Type
      where
        SMkFoo2a :: forall a (n :: a) (n :: a).
                    (Sing (n :: a)) -> (Sing (n :: a)) -> SFoo2 (MkFoo2a n n)
        SMkFoo2b :: forall a (n :: a) (n :: a).
                    (Sing (n :: a)) -> (Sing (n :: a)) -> SFoo2 (MkFoo2b n n)
        (:%*:) :: forall a (n :: a) (n :: a).
                  (Sing (n :: a)) -> (Sing (n :: a)) -> SFoo2 ((:*:) n n)
        (:%&:) :: forall a (n :: a) (n :: a).
                  (Sing (n :: a)) -> (Sing (n :: a)) -> SFoo2 ((:&:) n n)
    type instance Sing @(Foo2 a) = SFoo2
    instance SingKind a => SingKind (Foo2 a) where
      type Demote (Foo2 a) = Foo2 (Demote a)
      fromSing (SMkFoo2a b b) = (MkFoo2a (fromSing b)) (fromSing b)
      fromSing (SMkFoo2b b b) = (MkFoo2b (fromSing b)) (fromSing b)
      fromSing ((:%*:) b b) = ((:*:) (fromSing b)) (fromSing b)
      fromSing ((:%&:) b b) = ((:&:) (fromSing b)) (fromSing b)
      toSing (MkFoo2a (b :: Demote a) (b :: Demote a))
        = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing a) of {
            (,) (SomeSing c) (SomeSing c) -> SomeSing ((SMkFoo2a c) c) }
      toSing (MkFoo2b (b :: Demote a) (b :: Demote a))
        = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing a) of {
            (,) (SomeSing c) (SomeSing c) -> SomeSing ((SMkFoo2b c) c) }
      toSing ((:*:) (b :: Demote a) (b :: Demote a))
        = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing a) of {
            (,) (SomeSing c) (SomeSing c) -> SomeSing (((:%*:) c) c) }
      toSing ((:&:) (b :: Demote a) (b :: Demote a))
        = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing a) of {
            (,) (SomeSing c) (SomeSing c) -> SomeSing (((:%&:) c) c) }
    data SFoo3 :: Foo3 -> GHC.Types.Type
      where
        SMkFoo3 :: forall (n :: Bool) (n :: Bool).
                   {sGetFoo3a :: (Sing (n :: Bool)), %*** :: (Sing (n :: Bool))}
                   -> SFoo3 (MkFoo3 n n)
    type instance Sing @Foo3 = SFoo3
    instance SingKind Foo3 where
      type Demote Foo3 = Foo3
      fromSing (SMkFoo3 b b) = (MkFoo3 (fromSing b)) (fromSing b)
      toSing (MkFoo3 (b :: Demote Bool) (b :: Demote Bool))
        = case
              ((,) (toSing b :: SomeSing Bool)) (toSing b :: SomeSing Bool)
          of {
            (,) (SomeSing c) (SomeSing c) -> SomeSing ((SMkFoo3 c) c) }
    instance SShow Foo1 where
      sShowsPrec ::
        forall (t1 :: GHC.Types.Nat) (t2 :: Foo1) (t3 :: Symbol).
        Sing t1
        -> Sing t2
           -> Sing t3
              -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Types.Nat ((~>) Foo1 ((~>) Symbol Symbol))
                                                             -> GHC.Types.Type) t1) t2) t3)
      sShowsPrec
        _
        SMkFoo1
        (sA_0123456789876543210 :: Sing a_0123456789876543210)
        = (applySing
             ((applySing ((singFun2 @ShowStringSym0) sShowString))
                (sing :: Sing "MkFoo1")))
            sA_0123456789876543210
    instance SShow a => SShow (Foo2 a) where
      sShowsPrec ::
        forall (t1 :: GHC.Types.Nat) (t2 :: Foo2 a) (t3 :: Symbol).
        Sing t1
        -> Sing t2
           -> Sing t3
              -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Types.Nat ((~>) (Foo2 a) ((~>) Symbol Symbol))
                                                             -> GHC.Types.Type) t1) t2) t3)
      sShowsPrec
        (sP_0123456789876543210 :: Sing p_0123456789876543210)
        (SMkFoo2a (sArg_0123456789876543210 :: Sing arg_0123456789876543210)
                  (sArg_0123456789876543210 :: Sing arg_0123456789876543210))
        (sA_0123456789876543210 :: Sing a_0123456789876543210)
        = (applySing
             ((applySing
                 ((applySing ((singFun3 @ShowParenSym0) sShowParen))
                    ((applySing
                        ((applySing ((singFun2 @(>@#@$)) (%>))) sP_0123456789876543210))
                       (sFromInteger (sing :: Sing 10)))))
                ((applySing
                    ((applySing ((singFun3 @(.@#@$)) (%.)))
                       ((applySing ((singFun2 @ShowStringSym0) sShowString))
                          (sing :: Sing "MkFoo2a "))))
                   ((applySing
                       ((applySing ((singFun3 @(.@#@$)) (%.)))
                          ((applySing
                              ((applySing ((singFun3 @ShowsPrecSym0) sShowsPrec))
                                 (sFromInteger (sing :: Sing 11))))
                             sArg_0123456789876543210)))
                      ((applySing
                          ((applySing ((singFun3 @(.@#@$)) (%.)))
                             ((singFun1 @ShowSpaceSym0) sShowSpace)))
                         ((applySing
                             ((applySing ((singFun3 @ShowsPrecSym0) sShowsPrec))
                                (sFromInteger (sing :: Sing 11))))
                            sArg_0123456789876543210))))))
            sA_0123456789876543210
      sShowsPrec
        (sP_0123456789876543210 :: Sing p_0123456789876543210)
        (SMkFoo2b (sArgL_0123456789876543210 :: Sing argL_0123456789876543210)
                  (sArgR_0123456789876543210 :: Sing argR_0123456789876543210))
        (sA_0123456789876543210 :: Sing a_0123456789876543210)
        = (applySing
             ((applySing
                 ((applySing ((singFun3 @ShowParenSym0) sShowParen))
                    ((applySing
                        ((applySing ((singFun2 @(>@#@$)) (%>))) sP_0123456789876543210))
                       (sFromInteger (sing :: Sing 5)))))
                ((applySing
                    ((applySing ((singFun3 @(.@#@$)) (%.)))
                       ((applySing
                           ((applySing ((singFun3 @ShowsPrecSym0) sShowsPrec))
                              (sFromInteger (sing :: Sing 6))))
                          sArgL_0123456789876543210)))
                   ((applySing
                       ((applySing ((singFun3 @(.@#@$)) (%.)))
                          ((applySing ((singFun2 @ShowStringSym0) sShowString))
                             (sing :: Sing " `MkFoo2b` "))))
                      ((applySing
                          ((applySing ((singFun3 @ShowsPrecSym0) sShowsPrec))
                             (sFromInteger (sing :: Sing 6))))
                         sArgR_0123456789876543210)))))
            sA_0123456789876543210
      sShowsPrec
        (sP_0123456789876543210 :: Sing p_0123456789876543210)
        ((:%*:) (sArg_0123456789876543210 :: Sing arg_0123456789876543210)
                (sArg_0123456789876543210 :: Sing arg_0123456789876543210))
        (sA_0123456789876543210 :: Sing a_0123456789876543210)
        = (applySing
             ((applySing
                 ((applySing ((singFun3 @ShowParenSym0) sShowParen))
                    ((applySing
                        ((applySing ((singFun2 @(>@#@$)) (%>))) sP_0123456789876543210))
                       (sFromInteger (sing :: Sing 10)))))
                ((applySing
                    ((applySing ((singFun3 @(.@#@$)) (%.)))
                       ((applySing ((singFun2 @ShowStringSym0) sShowString))
                          (sing :: Sing "(:*:) "))))
                   ((applySing
                       ((applySing ((singFun3 @(.@#@$)) (%.)))
                          ((applySing
                              ((applySing ((singFun3 @ShowsPrecSym0) sShowsPrec))
                                 (sFromInteger (sing :: Sing 11))))
                             sArg_0123456789876543210)))
                      ((applySing
                          ((applySing ((singFun3 @(.@#@$)) (%.)))
                             ((singFun1 @ShowSpaceSym0) sShowSpace)))
                         ((applySing
                             ((applySing ((singFun3 @ShowsPrecSym0) sShowsPrec))
                                (sFromInteger (sing :: Sing 11))))
                            sArg_0123456789876543210))))))
            sA_0123456789876543210
      sShowsPrec
        (sP_0123456789876543210 :: Sing p_0123456789876543210)
        ((:%&:) (sArgL_0123456789876543210 :: Sing argL_0123456789876543210)
                (sArgR_0123456789876543210 :: Sing argR_0123456789876543210))
        (sA_0123456789876543210 :: Sing a_0123456789876543210)
        = (applySing
             ((applySing
                 ((applySing ((singFun3 @ShowParenSym0) sShowParen))
                    ((applySing
                        ((applySing ((singFun2 @(>@#@$)) (%>))) sP_0123456789876543210))
                       (sFromInteger (sing :: Sing 5)))))
                ((applySing
                    ((applySing ((singFun3 @(.@#@$)) (%.)))
                       ((applySing
                           ((applySing ((singFun3 @ShowsPrecSym0) sShowsPrec))
                              (sFromInteger (sing :: Sing 6))))
                          sArgL_0123456789876543210)))
                   ((applySing
                       ((applySing ((singFun3 @(.@#@$)) (%.)))
                          ((applySing ((singFun2 @ShowStringSym0) sShowString))
                             (sing :: Sing " :&: "))))
                      ((applySing
                          ((applySing ((singFun3 @ShowsPrecSym0) sShowsPrec))
                             (sFromInteger (sing :: Sing 6))))
                         sArgR_0123456789876543210)))))
            sA_0123456789876543210
    instance SShow Bool => SShow Foo3 where
      sShowsPrec ::
        forall (t1 :: GHC.Types.Nat) (t2 :: Foo3) (t3 :: Symbol).
        Sing t1
        -> Sing t2
           -> Sing t3
              -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Types.Nat ((~>) Foo3 ((~>) Symbol Symbol))
                                                             -> GHC.Types.Type) t1) t2) t3)
      sShowsPrec
        (sP_0123456789876543210 :: Sing p_0123456789876543210)
        (SMkFoo3 (sArg_0123456789876543210 :: Sing arg_0123456789876543210)
                 (sArg_0123456789876543210 :: Sing arg_0123456789876543210))
        (sA_0123456789876543210 :: Sing a_0123456789876543210)
        = (applySing
             ((applySing
                 ((applySing ((singFun3 @ShowParenSym0) sShowParen))
                    ((applySing
                        ((applySing ((singFun2 @(>@#@$)) (%>))) sP_0123456789876543210))
                       (sFromInteger (sing :: Sing 10)))))
                ((applySing
                    ((applySing ((singFun3 @(.@#@$)) (%.)))
                       ((applySing ((singFun2 @ShowStringSym0) sShowString))
                          (sing :: Sing "MkFoo3 "))))
                   ((applySing
                       ((applySing ((singFun3 @(.@#@$)) (%.)))
                          ((applySing ((singFun2 @ShowCharSym0) sShowChar))
                             (sing :: Sing "{"))))
                      ((applySing
                          ((applySing ((singFun3 @(.@#@$)) (%.)))
                             ((applySing ((singFun2 @ShowStringSym0) sShowString))
                                (sing :: Sing "getFoo3a = "))))
                         ((applySing
                             ((applySing ((singFun3 @(.@#@$)) (%.)))
                                ((applySing
                                    ((applySing ((singFun3 @ShowsPrecSym0) sShowsPrec))
                                       (sFromInteger (sing :: Sing 0))))
                                   sArg_0123456789876543210)))
                            ((applySing
                                ((applySing ((singFun3 @(.@#@$)) (%.)))
                                   ((singFun1 @ShowCommaSpaceSym0) sShowCommaSpace)))
                               ((applySing
                                   ((applySing ((singFun3 @(.@#@$)) (%.)))
                                      ((applySing ((singFun2 @ShowStringSym0) sShowString))
                                         (sing :: Sing "(***) = "))))
                                  ((applySing
                                      ((applySing ((singFun3 @(.@#@$)) (%.)))
                                         ((applySing
                                             ((applySing ((singFun3 @ShowsPrecSym0) sShowsPrec))
                                                (sFromInteger (sing :: Sing 0))))
                                            sArg_0123456789876543210)))
                                     ((applySing ((singFun2 @ShowCharSym0) sShowChar))
                                        (sing :: Sing "}")))))))))))
            sA_0123456789876543210
    instance Show (SFoo1 (z :: Foo1)) where
      showsPrec _ SMkFoo1 = showString "SMkFoo1"
    instance Data.Singletons.ShowSing.ShowSing a =>
             Show (SFoo2 (z :: Foo2 a)) where
      showsPrec
        p_0123456789876543210
        (SMkFoo2a (arg_0123456789876543210 :: Sing argTy_0123456789876543210)
                  (arg_0123456789876543210 :: Sing argTy_0123456789876543210))
        = (showParen (((>) p_0123456789876543210) 10))
            (((.) (showString "SMkFoo2a "))
               (((.) ((showsPrec 11) arg_0123456789876543210))
                  (((.) GHC.Show.showSpace)
                     ((showsPrec 11) arg_0123456789876543210)))) ::
            (Data.Singletons.ShowSing.ShowSing' argTy_0123456789876543210,
             Data.Singletons.ShowSing.ShowSing' argTy_0123456789876543210) =>
            ShowS
      showsPrec
        p_0123456789876543210
        (SMkFoo2b (argL_0123456789876543210 :: Sing argTyL_0123456789876543210)
                  (argR_0123456789876543210 :: Sing argTyR_0123456789876543210))
        = (showParen (((>) p_0123456789876543210) 9))
            (((.) ((showsPrec 10) argL_0123456789876543210))
               (((.) (showString " `SMkFoo2b` "))
                  ((showsPrec 10) argR_0123456789876543210))) ::
            (Data.Singletons.ShowSing.ShowSing' argTyL_0123456789876543210,
             Data.Singletons.ShowSing.ShowSing' argTyR_0123456789876543210) =>
            ShowS
      showsPrec
        p_0123456789876543210
        ((:%*:) (arg_0123456789876543210 :: Sing argTy_0123456789876543210)
                (arg_0123456789876543210 :: Sing argTy_0123456789876543210))
        = (showParen (((>) p_0123456789876543210) 10))
            (((.) (showString "(:%*:) "))
               (((.) ((showsPrec 11) arg_0123456789876543210))
                  (((.) GHC.Show.showSpace)
                     ((showsPrec 11) arg_0123456789876543210)))) ::
            (Data.Singletons.ShowSing.ShowSing' argTy_0123456789876543210,
             Data.Singletons.ShowSing.ShowSing' argTy_0123456789876543210) =>
            ShowS
      showsPrec
        p_0123456789876543210
        ((:%&:) (argL_0123456789876543210 :: Sing argTyL_0123456789876543210)
                (argR_0123456789876543210 :: Sing argTyR_0123456789876543210))
        = (showParen (((>) p_0123456789876543210) 9))
            (((.) ((showsPrec 10) argL_0123456789876543210))
               (((.) (showString " :%&: "))
                  ((showsPrec 10) argR_0123456789876543210))) ::
            (Data.Singletons.ShowSing.ShowSing' argTyL_0123456789876543210,
             Data.Singletons.ShowSing.ShowSing' argTyR_0123456789876543210) =>
            ShowS
    instance Data.Singletons.ShowSing.ShowSing Bool =>
             Show (SFoo3 (z :: Foo3)) where
      showsPrec
        p_0123456789876543210
        (SMkFoo3 (arg_0123456789876543210 :: Sing argTy_0123456789876543210)
                 (arg_0123456789876543210 :: Sing argTy_0123456789876543210))
        = (showParen (((>) p_0123456789876543210) 10))
            (((.) (showString "SMkFoo3 "))
               (((.) (showChar '{'))
                  (((.) (showString "sGetFoo3a = "))
                     (((.) ((showsPrec 0) arg_0123456789876543210))
                        (((.) GHC.Show.showCommaSpace)
                           (((.) (showString "(%***) = "))
                              (((.) ((showsPrec 0) arg_0123456789876543210))
                                 (showChar '}')))))))) ::
            (Data.Singletons.ShowSing.ShowSing' argTy_0123456789876543210,
             Data.Singletons.ShowSing.ShowSing' argTy_0123456789876543210) =>
            ShowS
    instance SingI MkFoo1 where
      sing = SMkFoo1
    instance (SingI n, SingI n) =>
             SingI (MkFoo2a (n :: a) (n :: a)) where
      sing = (SMkFoo2a sing) sing
    instance SingI (MkFoo2aSym0 :: (~>) a ((~>) a (Foo2 a))) where
      sing = (singFun2 @MkFoo2aSym0) SMkFoo2a
    instance SingI d =>
             SingI (MkFoo2aSym1 (d :: a) :: (~>) a (Foo2 a)) where
      sing = (singFun1 @(MkFoo2aSym1 (d :: a))) (SMkFoo2a (sing @d))
    instance (SingI n, SingI n) =>
             SingI (MkFoo2b (n :: a) (n :: a)) where
      sing = (SMkFoo2b sing) sing
    instance SingI (MkFoo2bSym0 :: (~>) a ((~>) a (Foo2 a))) where
      sing = (singFun2 @MkFoo2bSym0) SMkFoo2b
    instance SingI d =>
             SingI (MkFoo2bSym1 (d :: a) :: (~>) a (Foo2 a)) where
      sing = (singFun1 @(MkFoo2bSym1 (d :: a))) (SMkFoo2b (sing @d))
    instance (SingI n, SingI n) =>
             SingI ((:*:) (n :: a) (n :: a)) where
      sing = ((:%*:) sing) sing
    instance SingI ((:*:@#@$) :: (~>) a ((~>) a (Foo2 a))) where
      sing = (singFun2 @(:*:@#@$)) (:%*:)
    instance SingI d =>
             SingI ((:*:@#@$$) (d :: a) :: (~>) a (Foo2 a)) where
      sing = (singFun1 @((:*:@#@$$) (d :: a))) ((:%*:) (sing @d))
    instance (SingI n, SingI n) =>
             SingI ((:&:) (n :: a) (n :: a)) where
      sing = ((:%&:) sing) sing
    instance SingI ((:&:@#@$) :: (~>) a ((~>) a (Foo2 a))) where
      sing = (singFun2 @(:&:@#@$)) (:%&:)
    instance SingI d =>
             SingI ((:&:@#@$$) (d :: a) :: (~>) a (Foo2 a)) where
      sing = (singFun1 @((:&:@#@$$) (d :: a))) ((:%&:) (sing @d))
    instance (SingI n, SingI n) =>
             SingI (MkFoo3 (n :: Bool) (n :: Bool)) where
      sing = (SMkFoo3 sing) sing
    instance SingI (MkFoo3Sym0 :: (~>) Bool ((~>) Bool Foo3)) where
      sing = (singFun2 @MkFoo3Sym0) SMkFoo3
    instance SingI d =>
             SingI (MkFoo3Sym1 (d :: Bool) :: (~>) Bool Foo3) where
      sing = (singFun1 @(MkFoo3Sym1 (d :: Bool))) (SMkFoo3 (sing @d))