diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,13 @@
+1.21.1 --> 1.22.0
+=================
+* Support Template Haskell typed splices and quotations (#432)
+  - Breaking change: new constructors on Token data type
+* Fix unicode identifier parsing (#442)
+
+1.21.0 --> 1.21.1
+=================
+* GHC 8.8.1 compatibility (MonadFail)
+
 1.20.3 --> 1.21.0
 =================
 * DerivingVia (#420)
diff --git a/haskell-src-exts.cabal b/haskell-src-exts.cabal
--- a/haskell-src-exts.cabal
+++ b/haskell-src-exts.cabal
@@ -1,5 +1,5 @@
 Name:                   haskell-src-exts
-Version:                1.21.1
+Version:                1.22.0
 License:                BSD3
 License-File:           LICENSE
 Build-Type:             Simple
diff --git a/src/Language/Haskell/Exts/ExactPrint.hs b/src/Language/Haskell/Exts/ExactPrint.hs
--- a/src/Language/Haskell/Exts/ExactPrint.hs
+++ b/src/Language/Haskell/Exts/ExactPrint.hs
@@ -733,6 +733,7 @@
             printStringAt (pos (last pts)) ")"
          _ -> errorEP "ExactP: Decl: DefaultDecl is given too few srcInfoPoints"
     SpliceDecl   _ spl  -> exactP spl
+    TSpliceDecl  _ spl  -> exactP spl
     TypeSig      l ns t -> do
         let pts = srcInfoPoints l
         printInterleaved' (zip pts (replicate (length pts - 1) "," ++ ["::"])) ns
@@ -1171,9 +1172,7 @@
 
 instance ExactP Asst where
   exactP asst = case asst of
-    ClassA _ qn ts -> exactP qn >> mapM_ exactPC ts
-    AppA _ n ns       -> exactPC n >> mapM_ exactPC ns
-    InfixA _ ta qn tb -> exactP ta >> epInfixQName qn >> exactPC tb
+    TypeA _ t -> exactP t
     IParam l ipn t    ->
         case srcInfoPoints l of
          [a] -> do
@@ -1181,13 +1180,6 @@
             printStringAt (pos a) "::"
             exactPC t
          _ -> errorEP "ExactP: Asst: IParam is given wrong number of srcInfoPoints"
-    EqualP l t1 t2  ->
-        case srcInfoPoints l of
-         [a] -> do
-            exactP t1
-            printStringAt (pos a) "~"
-            exactPC t2
-         _ -> internalError "Asst -> EqualP"
     ParenA l asst' ->
         case take 2 $ srcInfoPoints l of
          [a,b] -> do
@@ -1195,7 +1187,6 @@
             exactPC asst'
             printStringAt (pos b) ")"
          _ -> errorEP "ExactP: Asst: ParenA is given wrong number of srcInfoPoints"
-    WildCardA _ mn -> printString "_" >> maybeEP exactPC mn
 
 instance ExactP Deriving where
   exactP (Deriving l mds ihs) =
@@ -1379,13 +1370,18 @@
 
 instance ExactP Splice where
   exactP (IdSplice _ str) = printString $ '$':str
-  exactP (ParenSplice l e) =
+  exactP (TIdSplice _ str) = printString $ "$$" ++ str
+  exactP (ParenSplice l e) = printParen "ParenSplice" "$(" l e
+  exactP (TParenSplice l e) = printParen "TParenSplice" "$$(" l e
+
+printParen :: ExactP ast => String -> String -> SrcSpanInfo -> ast SrcSpanInfo -> EP ()
+printParen con paren l e =
     case srcInfoPoints l of
      [_,b] -> do
-        printString "$("
+        printString paren
         exactPC e
         printStringAt (pos b) ")"
-     _ -> errorEP "ExactP: Splice: ParenSplice is given wrong number of srcInfoPoints"
+     _ -> errorEP $ "ExactP: Splice: " ++ con ++ " is given wrong number of srcInfoPoints"
 
 instance ExactP Exp where
   exactP exp = case exp of
@@ -1810,27 +1806,10 @@
 
 instance ExactP Bracket where
   exactP br = case br of
-    ExpBracket l e  ->
-        case srcInfoPoints l of
-         [_,b] -> do
-            printString "[|"
-            exactPC e
-            printStringAt (pos b) "|]"
-         _ -> errorEP "ExactP: Bracket: ExpBracket is given wrong number of srcInfoPoints"
-    PatBracket l p  ->
-        case srcInfoPoints l of
-         [_,b] -> do
-            printString "[p|"
-            exactPC p
-            printStringAt (pos b) "|]"
-         _ -> errorEP "ExactP: Bracket: PatBracket is given wrong number of srcInfoPoints"
-    TypeBracket l t  ->
-        case srcInfoPoints l of
-         [_,b] -> do
-            printString "[t|"
-            exactPC t
-            printStringAt (pos b) "|]"
-         _ -> errorEP "ExactP: Bracket: TypeBracket is given wrong number of srcInfoPoints"
+    ExpBracket l e  -> printBracket "ExpBracket" "[|" "|]" l e
+    TExpBracket l e -> printBracket "TExpBracket" "[||" "||]" l e
+    PatBracket l p  -> printBracket "PatBracket" "[p|" "|]" l p
+    TypeBracket l t -> printBracket "TypeBracket" "[t|" "|]" l t
     DeclBracket l ds ->
         case srcInfoPoints l of
          pts@(_:_) -> do
@@ -1838,6 +1817,15 @@
             layoutList (init pts) (sepFunBinds ds)
             printStringAt (pos (last pts)) "|]"
          _ -> errorEP "ExactP: Bracket: DeclBracket is given too few srcInfoPoints"
+
+printBracket :: ExactP ast => String -> String -> String -> SrcSpanInfo -> ast SrcSpanInfo -> EP ()
+printBracket con oBracket cBracket l c =
+  case srcInfoPoints l of
+    [_,b] -> do
+      printString oBracket
+      exactPC c
+      printStringAt (pos b) cBracket
+    _ -> errorEP $ "ExactP: Bracket: " ++ con ++ " is given wrong number of srcInfoPoints"
 
 instance ExactP XAttr where
   exactP (XAttr l xn e) =
diff --git a/src/Language/Haskell/Exts/Extension.hs b/src/Language/Haskell/Exts/Extension.hs
--- a/src/Language/Haskell/Exts/Extension.hs
+++ b/src/Language/Haskell/Exts/Extension.hs
@@ -556,6 +556,8 @@
   -- Implies 'DerivingStrategies'.
   | DerivingVia
 
+  | QuantifiedConstraints
+
   deriving (Show, Read, Eq, Ord, Enum, Bounded, Data, Typeable)
 
 -- | Certain extensions imply other extensions, and this function
diff --git a/src/Language/Haskell/Exts/InternalLexer.hs b/src/Language/Haskell/Exts/InternalLexer.hs
--- a/src/Language/Haskell/Exts/InternalLexer.hs
+++ b/src/Language/Haskell/Exts/InternalLexer.hs
@@ -102,12 +102,16 @@
 
 -- Template Haskell
         | THExpQuote            -- [| or [e|
+        | THTExpQuote           -- [|| or [e||
         | THPatQuote            -- [p|
         | THDecQuote            -- [d|
         | THTypQuote            -- [t|
         | THCloseQuote          -- |]
+        | THTCloseQuote         -- ||]
         | THIdEscape (String)   -- dollar x
         | THParenEscape         -- dollar (
+        | THTIdEscape String    -- dollar dollar x
+        | THTParenEscape        -- double dollar (
         | THVarQuote            -- 'x (but without the x)
         | THTyQuote             -- ''T (but without the T)
         | THQuasiQuote (String,String)  -- [$...|...]
@@ -365,6 +369,10 @@
 
 isPragmaChar c = isAlphaNum c || c == '_'
 
+isIdentStart :: Char -> Bool
+isIdentStart c = isAlpha c && not (isUpper c) || c == '_'
+
+
 -- Used in the lexing of type applications
 -- Why is it like this? I don't know exactly but this is how it is in
 -- GHC's parser.
@@ -665,12 +673,12 @@
                         return (con (n, '0':c:str))
 
         -- implicit parameters
-        '?':c:_ | isLower c && ImplicitParams `elem` exts -> do
+        '?':c:_ | isIdentStart c && ImplicitParams `elem` exts -> do
                         discard 1
                         id <- lexWhile isIdent
                         return $ IDupVarId id
 
-        '%':c:_ | isLower c && ImplicitParams `elem` exts -> do
+        '%':c:_ | isIdentStart c && ImplicitParams `elem` exts -> do
                         discard 1
                         id <- lexWhile isIdent
                         return $ ILinVarId id
@@ -689,7 +697,16 @@
                      do discard 2
                         return RPCAt -}
 
+
         -- template haskell
+        '[':'|':'|':_ | TemplateHaskell `elem` exts -> do
+                discard 3
+                return THTExpQuote
+
+        '[':'e':'|':'|':_ | TemplateHaskell `elem` exts -> do
+                discard 4
+                return THTExpQuote
+
         '[':'|':_ | TemplateHaskell `elem` exts -> do
                 discard 2
                 return THExpQuote
@@ -706,25 +723,35 @@
                     | c == 't' && TemplateHaskell `elem` exts -> do
                         discard 3
                         return THTypQuote
-        '[':'$':c:_ | isLower c && QuasiQuotes `elem` exts ->
+        '[':'$':c:_ | isIdentStart c && QuasiQuotes `elem` exts ->
                         discard 2 >> lexQuasiQuote c
 
-        '[':c:s' | isLower c && QuasiQuotes `elem` exts && case dropWhile isIdent s' of { '|':_ -> True;_->False} ->
+        '[':c:s' | isIdentStart c && QuasiQuotes `elem` exts && case dropWhile isIdent s' of { '|':_ -> True;_->False} ->
                         discard 1 >> lexQuasiQuote c
                  | isUpper c && QuasiQuotes `elem` exts && case dropWhile isPossiblyQvar s' of { '|':_ -> True;_->False} ->
                         discard 1 >> lexQuasiQuote c
 
+        '|':'|':']':_ | TemplateHaskell `elem` exts -> do
+                        discard 3
+                        return THTCloseQuote
         '|':']':_ | TemplateHaskell `elem` exts -> do
                         discard 2
                         return THCloseQuote
 
-        '$':c:_ | isLower c && TemplateHaskell `elem` exts -> do
+        '$':c1:c2:_ | isIdentStart c1 && TemplateHaskell `elem` exts -> do
                         discard 1
                         id <- lexWhile isIdent
                         return $ THIdEscape id
-                | c == '(' && TemplateHaskell `elem` exts -> do
+                    | c1 == '(' && TemplateHaskell `elem` exts -> do
                         discard 2
                         return THParenEscape
+                    | c1 == '$' && isIdentStart c2 && TemplateHaskell `elem` exts -> do
+                        discard 2
+                        id <- lexWhile isIdent
+                        return $ THTIdEscape id
+                    | c1 == '$' && c2 == '(' && TemplateHaskell `elem` exts -> do
+                        discard 3
+                        return THTParenEscape
         -- end template haskell
 
         -- hsx
@@ -769,7 +796,7 @@
                                                   else discard 1 >> return TApp
 
         '#':c:_ | OverloadedLabels `elem` exts
-                   && isLower c || c == '_' -> do
+                   && isIdentStart c -> do
                                                   discard 1
                                                   [ident] <- lexIdents
                                                   return $ LabelVarId ident
@@ -779,7 +806,7 @@
 
             | isUpper c -> lexConIdOrQual ""
 
-            | isLower c || c == '_' -> do
+            | isIdentStart c -> do
                     idents <- lexIdents
                     case idents of
                      [ident] -> case lookup ident (reserved_ids ++ special_varids) of
@@ -854,7 +881,7 @@
                 body <- lexQQBody
                 return $ THQuasiQuote (ident, body)
                   where lexQuoter
-                         | isLower c = lexWhile isIdent
+                         | isIdentStart c = lexWhile isIdent
                          | otherwise = do
                             qualThing <- lexConIdOrQual ""
                             case qualThing of
@@ -1051,7 +1078,7 @@
         exts <- getExtensionsL
         case rest of
           '.':c:_
-             | isLower c || c == '_' -> do  -- qualified varid?
+             | isIdentStart c -> do  -- qualified varid?
                     discard 1
                     ident <- lexWhile isIdent
                     s <- getInput
@@ -1349,12 +1376,16 @@
   LeftDblArrowTail  -> "-<<"
   RightDblArrowTail -> ">>-"
   THExpQuote        -> "[|"
+  THTExpQuote       -> "[||"
   THPatQuote        -> "[p|"
   THDecQuote        -> "[d|"
   THTypQuote        -> "[t|"
   THCloseQuote      -> "|]"
+  THTCloseQuote     -> "||]"
   THIdEscape s      -> '$':s
   THParenEscape     -> "$("
+  THTIdEscape s     -> "$$" ++ s
+  THTParenEscape    -> "$$("
   THVarQuote        -> "'"
   THTyQuote         -> "''"
   THQuasiQuote (n,q) -> "[$" ++ n ++ "|" ++ q ++ "]"
diff --git a/src/Language/Haskell/Exts/InternalParser.ly b/src/Language/Haskell/Exts/InternalParser.ly
--- a/src/Language/Haskell/Exts/InternalParser.ly
+++ b/src/Language/Haskell/Exts/InternalParser.ly
@@ -94,13 +94,13 @@
         might be the start of the declaration with the activation being
         empty. Resolving with shift means the declaration cannot start with '['.
 
-1 for ambiguity in '{-# RULES "name" forall = ... #-}' 	[State 544]
-	since 'forall' is a valid variable name, we don't know whether
-	to treat a forall on the input as the beginning of a quantifier
-	or the beginning of the rule itself.  Resolving to shift means
-	it's always treated as a quantifier, hence the above is disallowed.
-	This saves explicitly defining a grammar for the rule lhs that
-	doesn't include 'forall'.
+1 for ambiguity in '{-# RULES "name" forall = ... #-}'  [State 544]
+        since 'forall' is a valid variable name, we don't know whether
+        to treat a forall on the input as the beginning of a quantifier
+        or the beginning of the rule itself.  Resolving to shift means
+        it's always treated as a quantifier, hence the above is disallowed.
+        This saves explicitly defining a grammar for the rule lhs that
+        doesn't include 'forall'.
 
 -----------------------------------------------------------------------------
 
@@ -182,12 +182,16 @@
 Template Haskell
 
 >       IDSPLICE        { Loc _ (THIdEscape _) }   -- $x
+>       TIDSPLICE       { Loc _ (THTIdEscape _) }  -- $$x
 >       '$('            { Loc $$ THParenEscape } -- 60
+>       '$$('           { Loc $$ THTParenEscape }
 >       '[|'            { Loc $$ THExpQuote }
+>       '[||'           { Loc $$ THTExpQuote }
 >       '[p|'           { Loc $$ THPatQuote }
 >       '[t|'           { Loc $$ THTypQuote }
 >       '[d|'           { Loc $$ THDecQuote }
 >       '|]'            { Loc $$ THCloseQuote }
+>       '||]'           { Loc $$ THTCloseQuote }
 >       VARQUOTE        { Loc $$ THVarQuote }      -- 'x
 >       TYPQUOTE        { Loc $$ THTyQuote }       -- ''T
 >       QUASIQUOTE      { Loc _ (THQuasiQuote _) }
@@ -666,6 +670,7 @@
 >                  }
 
        | '$(' trueexp ')'  { let l = $1 <^^> $3 <** [$1,$3] in SpliceDecl l $ ParenSplice l $2 }
+       | '$$(' trueexp ')' { let l = $1 <^^> $3 <** [$1,$3] in TSpliceDecl l $ TParenSplice l $2 }
 
 These require the ForeignFunctionInterface extension, handled by the
 lexer through the 'foreign' (and 'export') keyword.
@@ -1000,7 +1005,9 @@
 >       | '(' ctype_(ostar,kstar) ')'                   { TyParen ($1 <^^> $3 <** [$1,$3]) $2 }
 >       | '(' ctype_(ostar,kstar) '::' kind ')'         { TyKind  ($1 <^^> $5 <** [$1,$3,$5]) $2 $4 }
 >       | '$(' trueexp ')'              { let l = ($1 <^^> $3 <** [$1,$3]) in TySplice l $ ParenSplice l $2 }
+>       | '$$(' trueexp ')'             { let l = ($1 <^^> $3 <** [$1,$3]) in TySplice l $ TParenSplice l $2 }
 >       | IDSPLICE                      { let Loc l (THIdEscape s) = $1 in TySplice (nIS l) $ IdSplice (nIS l) s }
+>       | TIDSPLICE                     { let Loc l (THTIdEscape s) = $1 in TySplice (nIS l) $ TIdSplice (nIS l) s }
 >       | '_'                           { TyWildCard (nIS $1) Nothing }
 >       | QUASIQUOTE                    { let Loc l (THQuasiQuote (n,q)) = $1 in TyQuasiQuote (nIS l) n q }
 >       | ptype_(ostar,kstar)           { % checkEnabled DataKinds >> return (TyPromoted (ann $1) $1) }
@@ -1251,7 +1258,7 @@
 >       : kind1                 {% checkEnabled KindSignatures >> return $1 }
 
 > kind1 :: { Kind L }
->       : dtype_(NEVER,'*')     {% checkType $1 }
+>       : ctype_(NEVER,'*')     {% checkType $1 }
 
 > optkind :: { (Maybe (Kind L), [S]) }
 >       : {-empty-}             { (Nothing,[]) }
@@ -1436,12 +1443,12 @@
 >       | exppragma                       { $1 }
 
 > optlayoutsemi :: { [S] }
-> 	: ';'				  {% checkEnabled DoAndIfThenElse >> return [$1] }
+>       : ';'				  {% checkEnabled DoAndIfThenElse >> return [$1] }
 >	| {- empty -}			  { [] }
 
 We won't come here unless XmlSyntax is already checked.
 > opthsxsemi :: { [S] }
-> 	: ';'				  { [$1] }
+>       : ';'				  { [$1] }
 >	| {- empty -}			  { [] }
 
 
@@ -1538,8 +1545,11 @@
 
 Template Haskell - all this is enabled in the lexer.
 >       | IDSPLICE                      { let Loc l (THIdEscape s) = $1 in SpliceExp (nIS l) $ IdSplice (nIS l) s }
+>       | TIDSPLICE                     { let Loc l (THTIdEscape s) = $1 in SpliceExp (nIS l) $ TIdSplice (nIS l) s }
 >       | '$(' trueexp ')'              { let l = ($1 <^^> $3 <** [$1,$3]) in SpliceExp l $ ParenSplice l $2 }
+>       | '$$(' trueexp ')'             { let l = ($1 <^^> $3 <** [$1,$3]) in SpliceExp l $ TParenSplice l $2 }
 >       | '[|' trueexp '|]'             { let l = ($1 <^^> $3 <** [$1,$3]) in BracketExp l $ ExpBracket l $2 }
+>       | '[||' trueexp '||]'           { let l = ($1 <^^> $3 <** [$1,$3]) in BracketExp l $ TExpBracket l $2 }
 >       | '[p|' exp0 '|]'               {% do { p <- checkPattern $2;
 >                                               let {l = ($1 <^^> $3 <** [$1,$3]) };
 >                                               return $ BracketExp l $ PatBracket l p } }
@@ -1996,8 +2006,8 @@
 >       | 'unsafe'              { unsafe_name     (nIS $1) }
 >       | 'interruptible'       { interruptible_name (nIS $1) }
 >       | 'threadsafe'          { threadsafe_name (nIS $1) }
->	      | 'forall'		          { forall_name	  (nIS $1) }
->	      | 'family'		          { family_name     (nIS $1) }
+>	      | 'forall'                          { forall_name	  (nIS $1) }
+>	      | 'family'                          { family_name     (nIS $1) }
 >       | 'role'                { role_name  (nIS $1) }
 
 
@@ -2188,8 +2198,8 @@
 >       | 'safe'                { safe_name       (nIS $1) }
 >       | 'unsafe'              { unsafe_name     (nIS $1) }
 >       | 'threadsafe'          { threadsafe_name (nIS $1) }
-	| 'forall'		{ forall_name	  (nIS $1) }
-	| 'family'		{ family_name     (nIS $1) }
+        | 'forall'		{ forall_name	  (nIS $1) }
+        | 'family'		{ family_name     (nIS $1) }
 
 > qtyvarop_(ostar) :: { QName L }
 > qtyvarop_ : '`' tyvar '`'     { UnQual ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }
diff --git a/src/Language/Haskell/Exts/ParseSyntax.hs b/src/Language/Haskell/Exts/ParseSyntax.hs
--- a/src/Language/Haskell/Exts/ParseSyntax.hs
+++ b/src/Language/Haskell/Exts/ParseSyntax.hs
@@ -314,6 +314,7 @@
      | TyInfix l (PType l) (MaybePromotedName l) (PType l)  -- ^ infix type constructor
      | TyKind  l (PType l) (Kind l)             -- ^ type with explicit kind signature
      | TyPromoted l (S.Promoted l)              -- ^ promoted data type
+     | TyEquals l (PType l) (PType l)           -- ^ type equality constraint
      | TySplice l (Splice l)                    -- ^ template haskell splice type
      | TyBang l (BangType l) (Unpackedness l) (PType l) -- ^ Strict type marked with \"@!@\" or type marked with UNPACK pragma.
      | TyWildCard l (Maybe (Name l))            -- ^ Type wildcard
@@ -336,6 +337,7 @@
       TyInfix l _ _ _               -> l
       TyKind  l _ _                 -> l
       TyPromoted l   _              -> l
+      TyEquals l _ _                 -> l
       TyPred l _                    -> l
       TySplice l _                  -> l
       TyBang  l _ _ _                 -> l
@@ -356,6 +358,7 @@
       TyInfix l ta qn tb            -> TyInfix (f l) ta qn tb
       TyKind  l t k                 -> TyKind (f l) t k
       TyPromoted l   p              -> TyPromoted (f l)   p
+      TyEquals l t1 t2              -> TyEquals (f l) t1 t2
       TyPred l asst                 -> TyPred (f l) asst
       TySplice l s                  -> TySplice (f l) s
       TyBang  l b u t                 -> TyBang (f l) b u t
@@ -363,29 +366,17 @@
       TyQuasiQuote l n s            -> TyQuasiQuote (f l) n s
 
 data PAsst l
-    = ClassA l (QName l) [PType l]
-    | AppA l (Name l) [PType l]
-    | InfixA l (PType l) (QName l) (PType l)
+    = TypeA l (PType l)
     | IParam l (IPName l) (PType l)
-    | EqualP l (PType l)  (PType l)
     | ParenA l (PAsst l)
-    | WildCardA l (Maybe (Name l))
   deriving (Eq, Show, Functor)
 
 instance Annotated PAsst where
     ann asst = case asst of
-        ClassA l _ _        -> l
-        AppA l _ _          -> l
-        InfixA l _ _ _      -> l
+        TypeA l _           -> l
         IParam l _ _        -> l
-        EqualP l _ _        -> l
         ParenA l _          -> l
-        WildCardA l _       -> l
     amap f asst = case asst of
-        ClassA l qn ts      -> ClassA (f l) qn ts
-        AppA l t ts         -> AppA (f l) t ts
-        InfixA l ta qn tb   -> InfixA (f l) ta qn tb
+        TypeA l t           -> TypeA (f l) t
         IParam l ipn t      -> IParam (f l) ipn t
-        EqualP l t1 t2      -> EqualP (f l) t1 t2
         ParenA l a          -> ParenA (f l) a
-        WildCardA l mn      -> WildCardA (f l) mn
diff --git a/src/Language/Haskell/Exts/ParseUtils.hs b/src/Language/Haskell/Exts/ParseUtils.hs
--- a/src/Language/Haskell/Exts/ParseUtils.hs
+++ b/src/Language/Haskell/Exts/ParseUtils.hs
@@ -98,7 +98,7 @@
 import Control.Monad (when,unless)
 
 #if __GLASGOW_HASKELL__ < 710
-import Control.Applicative (Applicative (..), (<$>))
+import Control.Applicative ((<$>))
 #endif
 
 type L = SrcSpanInfo
@@ -177,9 +177,9 @@
 checkPContext (TyParen l t) = do
     c <- checkAssertion t
     return $ CxSingle l (ParenA l c)
-checkPContext (TyPred tp p@(EqualP {})) = do
+checkPContext t@(TyEquals tp _ _) = do
   checkEnabledOneOf [TypeFamilies, GADTs]
-  return $ CxSingle tp p
+  return $ CxSingle tp $ TypeA tp t
 
 checkPContext t = do
     c <- checkAssertion t
@@ -194,33 +194,46 @@
 checkAssertion (TyParen l asst) = do
     asst' <- checkAssertion asst
     return $ ParenA l asst'
-checkAssertion (TyPred _ p@(IParam _ _ _)) = return p
+checkAssertion (TyPred _ p) = checkAAssertion p
 -- We cannot even get here unless TypeFamilies or GADTs is enabled.
 -- N.B.: this is called only when the equality assertion is part of a
 -- tuple
-checkAssertion (TyPred _ p@(EqualP _ _ _)) = return p
-checkAssertion t' = checkAssertion' id [] t'
+checkAssertion t' = do
+        t'' <- checkAssertion' id [] t'
+        return $ TypeA (ann t'') t''
     where   -- class assertions must have at least one argument
+            checkAssertion' _ _ t@(TyEquals _ _ _) = return t
             checkAssertion' fl ts (TyCon l c) = do
                 when (length ts < 1) $ checkEnabled FlexibleContexts
                 checkAndWarnTypeOperators c
-                return $ ClassA (fl l) c ts
+                return $ tyApps (fl l) (TyCon (fl l) c) ts
             checkAssertion' fl ts (TyApp l a t) =
                 -- no check on t at this stage
                 checkAssertion' (const (fl l)) (t:ts) a
             checkAssertion' fl _ (TyInfix l a op b) = do
                 -- infix operators require TypeOperators
                 checkAndWarnTypeOperators (getMaybePromotedQName op)
-                return $ InfixA (fl l) a (getMaybePromotedQName op) b
+                return $ TyInfix (fl l) a op b
             checkAssertion' fl ts (TyParen l t) =
                 checkAssertion' (const (fl l)) ts t
             checkAssertion' fl ts (TyVar l t) = do -- Dict :: cxt => Dict cxt
                 checkEnabled ConstraintKinds
-                return $ AppA (fl l) t ts
-            checkAssertion' _ _ (TyWildCard l wc) =
-                return $ WildCardA l wc
-            checkAssertion' _ _ _ = fail "Illegal class assertion"
+                return $ tyApps (fl l) (TyVar (fl l) t) ts
+            checkAssertion' _ _ t@(TyWildCard _ _) = return t
+            checkAssertion' _ _ t = do
+                checkEnabled QuantifiedConstraints -- anything goes
+                return t
+            tyApps :: L -> PType L -> [PType L] -> PType L
+            tyApps _ c [] = c
+            tyApps l c (a:aa) = tyApps l (TyApp l c a) aa
 
+checkAAssertion :: PAsst L -> P (PAsst L)
+checkAAssertion (TypeA _ t) = checkAssertion t
+checkAAssertion (ParenA l a) = do
+    a' <- checkAAssertion a
+    return $ ParenA l a'
+checkAAssertion p = return p
+
 -- Check class/instance declaration for multiparams
 checkMultiParam :: PType L -> P ()
 checkMultiParam = checkMultiParam' []
@@ -252,8 +265,8 @@
 checkSContext :: Maybe (PContext L) -> P (Maybe (S.Context L))
 checkSContext (Just ctxt) = case ctxt of
     CxEmpty l -> return $ Just $ S.CxEmpty l
-    CxSingle l a -> checkAsst True a >>= return . Just . S.CxSingle l
-    CxTuple l as -> mapM (checkAsst True) as >>= return . Just . S.CxTuple l
+    CxSingle l a -> checkAsst a >>= return . Just . S.CxSingle l
+    CxTuple l as -> mapM checkAsst as >>= return . Just . S.CxTuple l
 checkSContext _ = return Nothing
 
 -- Checks ordinary contexts for sigtypes and data type
@@ -263,52 +276,23 @@
 checkContext :: Maybe (PContext L) -> P (Maybe (S.Context L))
 checkContext (Just ctxt) = case ctxt of
     CxEmpty l -> return $ Just $ S.CxEmpty l
-    CxSingle l a -> checkAsst False a >>= return . Just . S.CxSingle l
-    CxTuple l as -> mapM (checkAsst False) as >>= return . Just . S.CxTuple l
+    CxSingle l a -> checkAsst a >>= return . Just . S.CxSingle l
+    CxTuple l as -> mapM checkAsst as >>= return . Just . S.CxTuple l
 checkContext _ = return Nothing
 
-checkAsst :: Bool -> PAsst L -> P (S.Asst L)
-checkAsst isSimple asst =
+checkAsst :: PAsst L -> P (S.Asst L)
+checkAsst asst =
     case asst of
-      ClassA l qn pts -> do
-                ts <- mapM (checkAsstParam isSimple) pts
-                return $ S.ClassA l qn ts
-      AppA l n pts    -> do
-                ts <- mapM (checkAsstParam isSimple) pts
-                return $ S.AppA l n ts
-      InfixA l a op b -> do
-                [a',b'] <- mapM (checkAsstParam isSimple) [a,b]
-                return $ S.InfixA l a' op b'
+      TypeA l pt -> do
+                t <- checkType pt
+                return $ S.TypeA l t
       IParam l ipn pt -> do
                 t <- checkType pt
                 return $ S.IParam l ipn t
-      EqualP l pa pb  -> do
-                a <- checkType pa
-                b <- checkType pb
-                return $ S.EqualP l a b
       ParenA l a      -> do
-                a' <- checkAsst isSimple a
+                a' <- checkAsst a
                 return $ S.ParenA l a'
-      WildCardA l a ->
-        if isSimple then fail "Malformed Context: WildCards not allowed in simple contexts"
-                    else return $ S.WildCardA l a
 
-checkAsstParam :: Bool -> PType L -> P (S.Type L)
-checkAsstParam isSimple t = do
-        exts <- getExtensions
-        if FlexibleContexts `elem` exts
-         then checkType t
-         else case t of
-                TyVar l n     -> return $ S.TyVar l n
-                TyWildCard l mn ->  return $ S.TyWildCard l mn
-                TyParen l t1  -> do t1' <- checkAsstParam isSimple t1
-                                    return $ S.TyParen l t1'
-                TyApp l pf pt | not isSimple    -> do
-                        f <- checkAsstParam isSimple pf
-                        t' <- checkType pt
-                        return $ S.TyApp l f t'
-                _       -> fail "Malformed context: FlexibleContexts is not enabled"
-
 -----------------------------------------------------------------------------
 -- Checking Headers
 
@@ -1125,14 +1109,8 @@
                            >> check2Types at bt (flip (S.TyInfix l) op)
     TyKind  l pt k    -> check1Type pt (flip (S.TyKind l) k)
 
-     -- TyPred can be a valid type if ConstraintKinds is enabled, unless it is an implicit parameter, which is not a valid type
-    TyPred _ (ClassA l className cvars) -> mapM checkType cvars >>= \vars -> return (foldl1 (S.TyApp l) (S.TyCon l className:vars))
-    TyPred _ (InfixA l t0 op t1)        -> S.TyInfix l <$> checkType t0 <*> pure (UnpromotedName (ann op) op) <*> checkType t1
-    TyPred _ (EqualP l t0    t1)        -> do
-      checkEnabledOneOf [TypeFamilies, GADTs]
-      S.TyEquals l <$> checkType t0 <*> checkType t1
-
     TyPromoted l p -> return $ S.TyPromoted l p -- ??
+    TyEquals l at bt   -> check2Types at bt (S.TyEquals l)
     TySplice l s        -> do
                               checkEnabled TemplateHaskell
                               return $ S.TySplice l s
@@ -1287,11 +1265,11 @@
 splitTilde t = go t
   where go (TyApp loc t1 t2)
           | TyBang _ (LazyTy eqloc) (NoUnpackPragma _) t2' <- t2
-          = TyPred loc (EqualP (loc <** [srcInfoSpan eqloc]) (go t1) t2')
+          = TyEquals (loc <** [srcInfoSpan eqloc]) (go t1) t2'
           | otherwise
           = case go t1 of
-              (TyPred _ (EqualP eqloc tl tr)) ->
-                TyPred loc (EqualP (eqloc <++> ann t2 <** srcInfoPoints eqloc) tl (TyApp (ann tr <++> ann t2) tr t2))
+              TyEquals eqloc tl tr ->
+                TyEquals (eqloc <++> ann t2 <** srcInfoPoints eqloc) tl (TyApp (ann tr <++> ann t2) tr t2)
               t' -> TyApp loc t' t2
 
         go t' = t'
diff --git a/src/Language/Haskell/Exts/Pretty.hs b/src/Language/Haskell/Exts/Pretty.hs
--- a/src/Language/Haskell/Exts/Pretty.hs
+++ b/src/Language/Haskell/Exts/Pretty.hs
@@ -480,6 +480,9 @@
         pretty (SpliceDecl _ splice) =
                 pretty splice
 
+        pretty (TSpliceDecl _ splice) =
+                pretty splice
+
         pretty (TypeSig _ nameList qualType) =
                 mySep ((punctuate comma . map pretty $ nameList)
                       ++ [text "::", pretty qualType])
@@ -869,7 +872,6 @@
         prettyPrec _ (TyVar _ name) = pretty name
         prettyPrec _ (TyCon _ name) = pretty name
         prettyPrec _ (TyParen _ t) = parens (pretty t)
---        prettyPrec _ (TyPred asst) = pretty asst
         prettyPrec _ (TyInfix _ a op b) = myFsep [pretty a, pretty op, pretty b]
         prettyPrec _ (TyKind _ t k) = parens (myFsep [pretty t, text "::", pretty k])
         prettyPrec _ (TyPromoted _ p) = pretty p
@@ -1110,6 +1112,7 @@
 
 instance  Pretty (Bracket l) where
         pretty (ExpBracket _ e) = ppBracket "[|" e
+        pretty (TExpBracket _ e) = myFsep [text "[||", pretty e, text "||]"]
         pretty (PatBracket _ p) = ppBracket "[p|" p
         pretty (TypeBracket _ t) = ppBracket "[t|" t
         pretty (DeclBracket _ d) =
@@ -1120,6 +1123,9 @@
 
 instance  Pretty (Splice l) where
         pretty (IdSplice _ s) = char '$' <> text s
+        pretty (TIdSplice _ s) = char '$' <> char '$' <> text s
+        pretty (TParenSplice _ e) =
+                myFsep [text "$$(", pretty e, char ')']
         pretty (ParenSplice _ e) =
                 myFsep [text "$(", pretty e, char ')']
 
@@ -1347,15 +1353,10 @@
   pretty (CxSingle _ ctxt)  = pretty ctxt <+> text "=>"
   pretty (CxTuple _ context) = mySep [parenList (map pretty context), text "=>"]
 
--- hacked for multi-parameter type classes
 instance  Pretty (Asst l) where
-        pretty (ClassA _ a ts)   = myFsep $ pretty a : map ppAType ts
-        pretty (AppA _ n ns)     = myFsep $ pretty n : map pretty ns
-        pretty (InfixA _ a op b) = myFsep [pretty a, ppQNameInfix op, pretty b]
+        pretty (TypeA _ t)       = pretty t
         pretty (IParam _ i t)    = myFsep [pretty i, text "::", pretty t]
-        pretty (EqualP _ t1 t2)  = myFsep [pretty t1, text "~", pretty t2]
         pretty (ParenA _ a)      = parens (pretty a)
-        pretty (WildCardA _ mn)  = char  '_' <> maybePP pretty mn
 
 -- Pretty print a source location, useful for printing out error messages
 instance Pretty SrcLoc where
@@ -1666,13 +1667,9 @@
         pretty (P.CxTuple _ assts) = myFsep [parenList (map pretty assts), text "=>"]
 
 instance SrcInfo loc => Pretty (P.PAsst loc) where
-        pretty (P.ClassA _ a ts)   = myFsep $ pretty ( a) : map (prettyPrec prec_atype) ts
-        pretty (P.AppA _ n ns)     = myFsep $ pretty n : map (prettyPrec prec_atype) ns
-        pretty (P.InfixA _ a op b) = myFsep [pretty a, ppQNameInfix op, pretty b]
+        pretty (P.TypeA _ t)       = pretty t
         pretty (P.IParam _ i t)    = myFsep [pretty i, text "::", pretty t]
-        pretty (P.EqualP _ t1 t2)  = myFsep [pretty t1, text "~", pretty t2]
         pretty (P.ParenA _ a)      = parens (pretty a)
-        pretty (P.WildCardA _ mn)  = char '_' <> maybePP pretty mn
 
 instance SrcInfo loc => Pretty (P.PType loc) where
         prettyPrec p (P.TyForall _ mtvs ctxt htype) = parensIf (p > 0) $
@@ -1701,6 +1698,7 @@
         prettyPrec _ (P.TyInfix _ a op b) = myFsep [pretty a, pretty op, pretty b]
         prettyPrec _ (P.TyKind _ t k) = parens (myFsep [pretty t, text "::", pretty k])
         prettyPrec _ (P.TyPromoted _ p) = pretty p
+        prettyPrec _ (P.TyEquals _ a b) = myFsep [pretty a, text "~", pretty b]
         prettyPrec _ (P.TySplice _ s) = pretty s
         prettyPrec _ (P.TyBang _ b u t) = pretty u <+> pretty b <> prettyPrec prec_atype t
         prettyPrec _ (P.TyWildCard _ mn) = char '_' <> maybePP pretty mn
diff --git a/src/Language/Haskell/Exts/Syntax.hs b/src/Language/Haskell/Exts/Syntax.hs
--- a/src/Language/Haskell/Exts/Syntax.hs
+++ b/src/Language/Haskell/Exts/Syntax.hs
@@ -299,6 +299,8 @@
      -- ^ A declaration of default types
      | SpliceDecl   l (Exp l)
      -- ^ A Template Haskell splicing declaration
+     | TSpliceDecl  l (Exp l)
+     -- ^ A typed Template Haskell splicing declaration
      | TypeSig      l [Name l] (Type l)
      -- ^ A type signature declaration
      | PatSynSig    l [Name l] (Maybe [TyVarBind l]) (Maybe (Context l))
@@ -692,17 +694,10 @@
   deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)
 
 -- | Class assertions.
---   In Haskell 98, the argument would be a /tyvar/, but this definition
---   allows multiple parameters, and allows them to be /type/s.
---   Also extended with support for implicit parameters and equality constraints.
 data Asst l
-        = ClassA l (QName l) [Type l]           -- ^ ordinary class assertion
-        | AppA l (Name l) [Type l]              -- ^ constraint kind assertion, @Dict :: cxt a => Dict cxt@
-        | InfixA l (Type l) (QName l) (Type l)  -- ^ class assertion where the class name is given infix
+        = TypeA l (Type l)                      -- ^ type assertion
         | IParam l (IPName l) (Type l)          -- ^ implicit parameter assertion
-        | EqualP l (Type l) (Type l)            -- ^ type equality constraint
         | ParenA l (Asst l)                     -- ^ parenthesised class assertion
-        | WildCardA l (Maybe (Name l))          -- ^ Context Wildcard
   deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)
 
 -- | /literal/
@@ -825,6 +820,7 @@
 -- | A template haskell bracket expression.
 data Bracket l
     = ExpBracket l (Exp l)        -- ^ expression bracket: @[| ... |]@
+    | TExpBracket l (Exp l)       -- ^ typed expression bracket: @[|| ... ||]@
     | PatBracket l (Pat l)        -- ^ pattern bracket: @[p| ... |]@
     | TypeBracket l (Type l)      -- ^ type bracket: @[t| ... |]@
     | DeclBracket l [Decl l]      -- ^ declaration bracket: @[d| ... |]@
@@ -833,7 +829,9 @@
 -- | A template haskell splice expression
 data Splice l
     = IdSplice l String           -- ^ variable splice: @$var@
+    | TIdSplice l String          -- ^ typed variable splice: @$$var@
     | ParenSplice l (Exp l)       -- ^ parenthesised expression splice: @$(/exp/)@
+    | TParenSplice l (Exp l)      -- ^ parenthesised typed expression splice: @$$(/exp/)@
   deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)
 
 -- | The safety of a foreign function call.
@@ -1290,6 +1288,7 @@
         InfixDecl    l _ _ _            -> l
         DefaultDecl  l _                -> l
         SpliceDecl   l _                -> l
+        TSpliceDecl  l _                -> l
         TypeSig      l _ _              -> l
         PatSynSig    l _ _ _ _ _ _      -> l
         FunBind      l _                -> l
@@ -1327,6 +1326,7 @@
         InfixDecl    l a k ops           -> InfixDecl (f l) a k ops
         DefaultDecl  l ts                -> DefaultDecl (f l) ts
         SpliceDecl   l sp                -> SpliceDecl (f l) sp
+        TSpliceDecl  l sp                -> TSpliceDecl (f l) sp
         TypeSig      l ns t              -> TypeSig (f l) ns t
         PatSynSig    l n dh c1 dh2 c2 t      -> PatSynSig (f l) n dh c1 dh2 c2 t
         FunBind      l ms                -> FunBind (f l) ms
@@ -1568,21 +1568,13 @@
 
 instance Annotated Asst where
     ann asst = case asst of
-        ClassA l _ _     -> l
-        AppA l _ _       -> l
-        InfixA l _ _ _   -> l
+        TypeA l _        -> l
         IParam l _ _     -> l
-        EqualP l _ _     -> l
         ParenA l _       -> l
-        WildCardA l _    -> l
     amap f asst = case asst of
-        ClassA l qn ts      -> ClassA (f l) qn ts
-        AppA   l n ns       -> AppA   (f l) n ns
-        InfixA l ta qn tb   -> InfixA (f l) ta qn tb
+        TypeA l t           -> TypeA (f l) t
         IParam l ipn t      -> IParam (f l) ipn t
-        EqualP l t1 t2      -> EqualP (f l) t1 t2
         ParenA l a          -> ParenA (f l) a
-        WildCardA l mn      -> WildCardA (f l) mn
 
 instance Annotated Literal where
     ann lit = case lit of
@@ -1739,19 +1731,25 @@
 
 instance Annotated Bracket where
     ann (ExpBracket l _)  = l
+    ann (TExpBracket l _) = l
     ann (PatBracket l _)  = l
     ann (TypeBracket l _) = l
     ann (DeclBracket l _) = l
     amap f (ExpBracket l e) = ExpBracket (f l) e
+    amap f (TExpBracket l e) = TExpBracket (f l) e
     amap f (PatBracket l p) = PatBracket (f l) p
     amap f (TypeBracket l t) = TypeBracket (f l) t
     amap f (DeclBracket l ds) = DeclBracket (f l) ds
 
 instance Annotated Splice where
     ann (IdSplice l _)    = l
+    ann (TIdSplice l _)   = l
     ann (ParenSplice l _) = l
+    ann (TParenSplice l _) = l
     amap f (IdSplice l s) = IdSplice (f l) s
+    amap f (TIdSplice l s) = TIdSplice (f l) s
     amap f (ParenSplice l e) = ParenSplice (f l) e
+    amap f (TParenSplice l e) = TParenSplice (f l) e
 
 instance Annotated Safety where
     ann (PlayRisky l) = l
diff --git a/tests/examples/BracketInstanceHead.hs.parser.golden b/tests/examples/BracketInstanceHead.hs.parser.golden
--- a/tests/examples/BracketInstanceHead.hs.parser.golden
+++ b/tests/examples/BracketInstanceHead.hs.parser.golden
@@ -51,40 +51,53 @@
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 21 1 23 ]
                         }
-                      (ClassA
+                      (TypeA
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 23
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 21 1 23 ]
                            }
-                         (UnQual
+                         (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 18
-                              , srcInfoPoints = []
+                                  SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 23
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 21 1 23 ]
                               }
-                            (Ident
+                            (TyCon
                                SrcSpanInfo
                                  { srcInfoSpan =
-                                     SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 18
+                                     SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 23
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 21 1 23 ]
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 18
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 18
+                                       , srcInfoPoints = []
+                                       }
+                                     "Bounded")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/BracketInstanceHead.hs" 1 19 1 20
                                  , srcInfoPoints = []
                                  }
-                               "Bounded"))
-                         [ TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/BracketInstanceHead.hs" 1 19 1 20
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/BracketInstanceHead.hs" 1 19 1 20
-                                  , srcInfoPoints = []
-                                  }
-                                "a")
-                         ])))
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/BracketInstanceHead.hs" 1 19 1 20
+                                    , srcInfoPoints = []
+                                    }
+                                  "a"))))))
                 (IHApp
                    SrcSpanInfo
                      { srcInfoSpan =
diff --git a/tests/examples/ClassContext.hs.parser.golden b/tests/examples/ClassContext.hs.parser.golden
--- a/tests/examples/ClassContext.hs.parser.golden
+++ b/tests/examples/ClassContext.hs.parser.golden
@@ -40,67 +40,80 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/ClassContext.hs" 1 18 1 20 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 20
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/ClassContext.hs" 1 18 1 20 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 9
-                           , srcInfoPoints = []
+                           { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 20
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/ClassContext.hs" 1 18 1 20 ]
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 9
-                              , srcInfoPoints = []
+                              { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 20
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/ClassContext.hs" 1 18 1 20 ]
                               }
-                            "Ord"))
-                      [ TyParen
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 10 1 17
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/ClassContext.hs" 1 10 1 11
-                                , SrcSpan "tests/examples/ClassContext.hs" 1 16 1 17
-                                ]
-                            }
-                          (TyApp
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 11 1 16
-                               , srcInfoPoints = []
-                               }
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 11 1 12
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/ClassContext.hs" 1 11 1 12
-                                     , srcInfoPoints = []
-                                     }
-                                   "i"))
-                             (TyCon
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 13 1 16
-                                  , srcInfoPoints = []
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/ClassContext.hs" 1 13 1 16
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/ClassContext.hs" 1 13 1 16
-                                        , srcInfoPoints = []
-                                        }
-                                      "Int"))))
-                      ])))
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 9
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 9
+                                    , srcInfoPoints = []
+                                    }
+                                  "Ord")))
+                         (TyParen
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 10 1 17
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/ClassContext.hs" 1 10 1 11
+                                  , SrcSpan "tests/examples/ClassContext.hs" 1 16 1 17
+                                  ]
+                              }
+                            (TyApp
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 11 1 16
+                                 , srcInfoPoints = []
+                                 }
+                               (TyVar
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/ClassContext.hs" 1 11 1 12
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/ClassContext.hs" 1 11 1 12
+                                       , srcInfoPoints = []
+                                       }
+                                     "i"))
+                               (TyCon
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/ClassContext.hs" 1 13 1 16
+                                    , srcInfoPoints = []
+                                    }
+                                  (UnQual
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/ClassContext.hs" 1 13 1 16
+                                       , srcInfoPoints = []
+                                       }
+                                     (Ident
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/ClassContext.hs" 1 13 1 16
+                                          , srcInfoPoints = []
+                                          }
+                                        "Int")))))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 21 1 35
diff --git a/tests/examples/ConstraintKinds.hs.parser.golden b/tests/examples/ConstraintKinds.hs.parser.golden
--- a/tests/examples/ConstraintKinds.hs.parser.golden
+++ b/tests/examples/ConstraintKinds.hs.parser.golden
@@ -342,53 +342,73 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 20 9 22 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 22
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 20 9 22 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 15
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 22
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 20 9 22 ]
                            }
-                         (Ident
+                         (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 15
+                                  SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 22
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 20 9 22 ]
+                              }
+                            (TyCon
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 22
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 20 9 22 ]
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 15
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 15
+                                       , srcInfoPoints = []
+                                       }
+                                     "Bazable")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/ConstraintKinds.hs" 9 16 9 17
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/ConstraintKinds.hs" 9 16 9 17
+                                    , srcInfoPoints = []
+                                    }
+                                  "a")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/ConstraintKinds.hs" 9 18 9 19
                               , srcInfoPoints = []
                               }
-                            "Bazable"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/ConstraintKinds.hs" 9 16 9 17
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/ConstraintKinds.hs" 9 16 9 17
-                               , srcInfoPoints = []
-                               }
-                             "a")
-                      , TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/ConstraintKinds.hs" 9 18 9 19
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/ConstraintKinds.hs" 9 18 9 19
-                               , srcInfoPoints = []
-                               }
-                             "b")
-                      ])))
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/ConstraintKinds.hs" 9 18 9 19
+                                 , srcInfoPoints = []
+                                 }
+                               "b"))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/ConstraintKinds2.hs.parser.golden b/tests/examples/ConstraintKinds2.hs.parser.golden
--- a/tests/examples/ConstraintKinds2.hs.parser.golden
+++ b/tests/examples/ConstraintKinds2.hs.parser.golden
@@ -150,21 +150,27 @@
                          , srcInfoPoints =
                              [ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 15 6 17 ]
                          }
-                       (AppA
+                       (TypeA
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/ConstraintKinds2.hs" 6 13 6 17
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 15 6 17 ]
                             }
-                          (Ident
+                          (TyVar
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/ConstraintKinds2.hs" 6 13 6 14
-                               , srcInfoPoints = []
+                                   SrcSpan "tests/examples/ConstraintKinds2.hs" 6 13 6 17
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 15 6 17 ]
                                }
-                             "p")
-                          [])))
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/ConstraintKinds2.hs" 6 13 6 14
+                                  , srcInfoPoints = []
+                                  }
+                                "p")))))
                  (TyApp
                     SrcSpanInfo
                       { srcInfoSpan =
diff --git a/tests/examples/ConstraintKinds3.hs.parser.golden b/tests/examples/ConstraintKinds3.hs.parser.golden
--- a/tests/examples/ConstraintKinds3.hs.parser.golden
+++ b/tests/examples/ConstraintKinds3.hs.parser.golden
@@ -165,34 +165,48 @@
                                       , SrcSpan "tests/examples/ConstraintKinds3.hs" 6 16 6 18
                                       ]
                                   }
-                                (AppA
+                                (TypeA
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/ConstraintKinds3.hs" 6 11 6 14
                                      , srcInfoPoints = []
                                      }
-                                   (Ident
+                                   (TyApp
                                       SrcSpanInfo
                                         { srcInfoSpan =
-                                            SrcSpan "tests/examples/ConstraintKinds3.hs" 6 11 6 12
+                                            SrcSpan "tests/examples/ConstraintKinds3.hs" 6 11 6 14
                                         , srcInfoPoints = []
                                         }
-                                      "c")
-                                   [ TyVar
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/ConstraintKinds3.hs" 6 13 6 14
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/ConstraintKinds3.hs" 6 13 6 14
-                                            , srcInfoPoints = []
-                                            }
-                                          "a")
-                                   ]))))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan
+                                                 "tests/examples/ConstraintKinds3.hs" 6 11 6 14
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/ConstraintKinds3.hs" 6 11 6 12
+                                              , srcInfoPoints = []
+                                              }
+                                            "c"))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan
+                                                 "tests/examples/ConstraintKinds3.hs" 6 13 6 14
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/ConstraintKinds3.hs" 6 13 6 14
+                                              , srcInfoPoints = []
+                                              }
+                                            "a")))))))
                        (TyFun
                           SrcSpanInfo
                             { srcInfoSpan =
diff --git a/tests/examples/ConstructorAndClassOperators.hs.parser.golden b/tests/examples/ConstructorAndClassOperators.hs.parser.golden
--- a/tests/examples/ConstructorAndClassOperators.hs.parser.golden
+++ b/tests/examples/ConstructorAndClassOperators.hs.parser.golden
@@ -76,7 +76,7 @@
                              "tests/examples/ConstructorAndClassOperators.hs" 3 18 3 20
                          ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 20
@@ -85,53 +85,97 @@
                                 "tests/examples/ConstructorAndClassOperators.hs" 3 18 3 20
                             ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 13
+                               SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 20
                            , srcInfoPoints =
-                               [ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 9
-                               , SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 9 3 12
-                               , SrcSpan
-                                   "tests/examples/ConstructorAndClassOperators.hs" 3 12 3 13
+                               [ SrcSpan
+                                   "tests/examples/ConstructorAndClassOperators.hs" 3 18 3 20
                                ]
                            }
-                         (Symbol
+                         (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 9 3 12
+                                  SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 20
+                              , srcInfoPoints =
+                                  [ SrcSpan
+                                      "tests/examples/ConstructorAndClassOperators.hs" 3 18 3 20
+                                  ]
+                              }
+                            (TyCon
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan
+                                       "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 20
+                                 , srcInfoPoints =
+                                     [ SrcSpan
+                                         "tests/examples/ConstructorAndClassOperators.hs" 3 18 3 20
+                                     ]
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan
+                                          "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 13
+                                    , srcInfoPoints =
+                                        [ SrcSpan
+                                            "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 9
+                                        , SrcSpan
+                                            "tests/examples/ConstructorAndClassOperators.hs"
+                                            3
+                                            9
+                                            3
+                                            12
+                                        , SrcSpan
+                                            "tests/examples/ConstructorAndClassOperators.hs"
+                                            3
+                                            12
+                                            3
+                                            13
+                                        ]
+                                    }
+                                  (Symbol
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan
+                                             "tests/examples/ConstructorAndClassOperators.hs"
+                                             3
+                                             9
+                                             3
+                                             12
+                                       , srcInfoPoints = []
+                                       }
+                                     ":=>")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan
+                                       "tests/examples/ConstructorAndClassOperators.hs" 3 14 3 15
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan
+                                          "tests/examples/ConstructorAndClassOperators.hs" 3 14 3 15
+                                    , srcInfoPoints = []
+                                    }
+                                  "b")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 16 3 17
                               , srcInfoPoints = []
                               }
-                            ":=>"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 14 3 15
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan
-                                     "tests/examples/ConstructorAndClassOperators.hs" 3 14 3 15
-                               , srcInfoPoints = []
-                               }
-                             "b")
-                      , TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 16 3 17
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan
-                                     "tests/examples/ConstructorAndClassOperators.hs" 3 16 3 17
-                               , srcInfoPoints = []
-                               }
-                             "h")
-                      ])))
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan
+                                       "tests/examples/ConstructorAndClassOperators.hs" 3 16 3 17
+                                 , srcInfoPoints = []
+                                 }
+                               "h"))))))
              (TyInfix
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/ContextOrdering.hs.parser.golden b/tests/examples/ContextOrdering.hs.parser.golden
--- a/tests/examples/ContextOrdering.hs.parser.golden
+++ b/tests/examples/ContextOrdering.hs.parser.golden
@@ -92,46 +92,63 @@
                             , SrcSpan "tests/examples/ContextOrdering.hs" 4 16 4 18
                             ]
                         }
-                      (AppA
+                      (TypeA
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/ContextOrdering.hs" 4 9 4 14
                            , srcInfoPoints = []
                            }
-                         (Ident
+                         (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/ContextOrdering.hs" 4 9 4 10
+                                  SrcSpan "tests/examples/ContextOrdering.hs" 4 9 4 14
                               , srcInfoPoints = []
                               }
-                            "x")
-                         [ TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/ContextOrdering.hs" 4 11 4 12
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/ContextOrdering.hs" 4 11 4 12
-                                  , srcInfoPoints = []
-                                  }
-                                "m")
-                         , TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/ContextOrdering.hs" 4 13 4 14
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/ContextOrdering.hs" 4 13 4 14
-                                  , srcInfoPoints = []
-                                  }
-                                "a")
-                         ]))))
+                            (TyApp
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/ContextOrdering.hs" 4 9 4 14
+                                 , srcInfoPoints = []
+                                 }
+                               (TyVar
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/ContextOrdering.hs" 4 9 4 14
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/ContextOrdering.hs" 4 9 4 10
+                                       , srcInfoPoints = []
+                                       }
+                                     "x"))
+                               (TyVar
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/ContextOrdering.hs" 4 11 4 12
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/ContextOrdering.hs" 4 11 4 12
+                                       , srcInfoPoints = []
+                                       }
+                                     "m")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/ContextOrdering.hs" 4 13 4 14
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/ContextOrdering.hs" 4 13 4 14
+                                    , srcInfoPoints = []
+                                    }
+                                  "a")))))))
              (TyCon
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/CxtWhitespace.hs.parser.golden b/tests/examples/CxtWhitespace.hs.parser.golden
--- a/tests/examples/CxtWhitespace.hs.parser.golden
+++ b/tests/examples/CxtWhitespace.hs.parser.golden
@@ -46,35 +46,46 @@
                             , SrcSpan "tests/examples/CxtWhitespace.hs" 2 18 2 20
                             ]
                         }
-                      (ClassA
+                      (TypeA
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 16
                            , srcInfoPoints = []
                            }
-                         (UnQual
+                         (TyApp
                             SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 14
+                              { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 16
                               , srcInfoPoints = []
                               }
-                            (Ident
+                            (TyCon
                                SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 14
+                                 { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 16
                                  , srcInfoPoints = []
                                  }
-                               "Eq"))
-                         [ TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 15 2 16
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/CxtWhitespace.hs" 2 15 2 16
-                                  , srcInfoPoints = []
-                                  }
-                                "h")
-                         ]))))
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 14
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 14
+                                       , srcInfoPoints = []
+                                       }
+                                     "Eq")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 15 2 16
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/CxtWhitespace.hs" 2 15 2 16
+                                    , srcInfoPoints = []
+                                    }
+                                  "h")))))))
              (IHApp
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 21 2 25
@@ -132,62 +143,86 @@
                          , SrcSpan "tests/examples/CxtWhitespace.hs" 5 24 5 26
                          ]
                      }
-                   [ ClassA
+                   [ TypeA
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 16
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 14
+                            { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 16
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 14
+                               { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 16
                                , srcInfoPoints = []
                                }
-                             "Eq"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 15 5 16
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 15 5 16
-                                , srcInfoPoints = []
-                                }
-                              "h")
-                       ]
-                   , ClassA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 14
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 14
+                                     , srcInfoPoints = []
+                                     }
+                                   "Eq")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 15 5 16
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/CxtWhitespace.hs" 5 15 5 16
+                                  , srcInfoPoints = []
+                                  }
+                                "h")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 22
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 20
+                            { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 22
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 20
+                               { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 22
                                , srcInfoPoints = []
                                }
-                             "Eq"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 21 5 22
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 21 5 22
-                                , srcInfoPoints = []
-                                }
-                              "h")
-                       ]
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 20
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "Eq")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 21 5 22
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/CxtWhitespace.hs" 5 21 5 22
+                                  , srcInfoPoints = []
+                                  }
+                                "h")))
                    ]))
              (IHApp
                 SrcSpanInfo
diff --git a/tests/examples/DefaultSignatures.hs.parser.golden b/tests/examples/DefaultSignatures.hs.parser.golden
--- a/tests/examples/DefaultSignatures.hs.parser.golden
+++ b/tests/examples/DefaultSignatures.hs.parser.golden
@@ -205,39 +205,53 @@
                                    , SrcSpan "tests/examples/DefaultSignatures.hs" 4 25 4 27
                                    ]
                                }
-                             (ClassA
+                             (TypeA
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DefaultSignatures.hs" 4 19 4 23
                                   , srcInfoPoints = []
                                   }
-                                (UnQual
+                                (TyApp
                                    SrcSpanInfo
                                      { srcInfoSpan =
-                                         SrcSpan "tests/examples/DefaultSignatures.hs" 4 19 4 21
+                                         SrcSpan "tests/examples/DefaultSignatures.hs" 4 19 4 23
                                      , srcInfoPoints = []
                                      }
-                                   (Ident
+                                   (TyCon
                                       SrcSpanInfo
                                         { srcInfoSpan =
-                                            SrcSpan "tests/examples/DefaultSignatures.hs" 4 19 4 21
+                                            SrcSpan "tests/examples/DefaultSignatures.hs" 4 19 4 23
                                         , srcInfoPoints = []
                                         }
-                                      "Eq"))
-                                [ TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DefaultSignatures.hs" 4 22 4 23
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DefaultSignatures.hs" 4 22 4 23
-                                         , srcInfoPoints = []
-                                         }
-                                       "a")
-                                ]))))
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan
+                                                 "tests/examples/DefaultSignatures.hs" 4 19 4 21
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DefaultSignatures.hs" 4 19 4 21
+                                              , srcInfoPoints = []
+                                              }
+                                            "Eq")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DefaultSignatures.hs" 4 22 4 23
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan
+                                                 "tests/examples/DefaultSignatures.hs" 4 22 4 23
+                                           , srcInfoPoints = []
+                                           }
+                                         "a")))))))
                     (TyFun
                        SrcSpanInfo
                          { srcInfoSpan =
diff --git a/tests/examples/DerivingStrategies.hs.parser.golden b/tests/examples/DerivingStrategies.hs.parser.golden
--- a/tests/examples/DerivingStrategies.hs.parser.golden
+++ b/tests/examples/DerivingStrategies.hs.parser.golden
@@ -477,40 +477,53 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingStrategies.hs" 16 32 16 34 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 34
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingStrategies.hs" 16 32 16 34 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 29
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 34
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingStrategies.hs" 16 32 16 34 ]
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 29
+                                  SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 34
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingStrategies.hs" 16 32 16 34 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 29
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 29
+                                    , srcInfoPoints = []
+                                    }
+                                  "Read")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingStrategies.hs" 16 30 16 31
                               , srcInfoPoints = []
                               }
-                            "Read"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingStrategies.hs" 16 30 16 31
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingStrategies.hs" 16 30 16 31
-                               , srcInfoPoints = []
-                               }
-                             "a")
-                      ])))
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingStrategies.hs" 16 30 16 31
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))))))
              (IHApp
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -615,40 +628,53 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingStrategies.hs" 17 33 17 35 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 35
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingStrategies.hs" 17 33 17 35 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 30
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 35
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingStrategies.hs" 17 33 17 35 ]
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 30
+                                  SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 35
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingStrategies.hs" 17 33 17 35 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 30
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 30
+                                    , srcInfoPoints = []
+                                    }
+                                  "Num")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingStrategies.hs" 17 31 17 32
                               , srcInfoPoints = []
                               }
-                            "Num"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingStrategies.hs" 17 31 17 32
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingStrategies.hs" 17 31 17 32
-                               , srcInfoPoints = []
-                               }
-                             "a")
-                      ])))
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingStrategies.hs" 17 31 17 32
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))))))
              (IHApp
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/DerivingVia.hs.parser.golden b/tests/examples/DerivingVia.hs.parser.golden
--- a/tests/examples/DerivingVia.hs.parser.golden
+++ b/tests/examples/DerivingVia.hs.parser.golden
@@ -1231,28534 +1231,29255 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 52 22 52 24 ]
                      }
-                   (ClassA
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 24
-                        , srcInfoPoints =
-                            [ SrcSpan "tests/examples/DerivingVia.hs" 52 22 52 24 ]
-                        }
-                      (UnQual
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 19
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 19
-                              , srcInfoPoints = []
-                              }
-                            "Bifunctor"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 20 52 21
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 20 52 21
-                               , srcInfoPoints = []
-                               }
-                             "p")
-                      ])))
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 43
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 34
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 34
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 34
-                           , srcInfoPoints = []
-                           }
-                         "Bifunctor")))
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 35 52 43
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 52 35 52 36
-                         , SrcSpan "tests/examples/DerivingVia.hs" 52 42 52 43
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 42
-                        , srcInfoPoints = []
-                        }
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 40
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 40
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 40
-                                 , srcInfoPoints = []
-                                 }
-                               "Flip")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 41 52 42
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 41 52 42
-                              , srcInfoPoints = []
-                              }
-                            "p"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 41
-                   , srcInfoPoints = []
-                   }
-                 (FunBind
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 41
-                      , srcInfoPoints = []
-                      }
-                    [ Match
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 41
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 8
-                             , srcInfoPoints = []
-                             }
-                           "bimap")
-                        [ PVar
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 9 53 10
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 9 53 10
-                                 , srcInfoPoints = []
-                                 }
-                               "f")
-                        , PVar
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 11 53 12
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 11 53 12
-                                 , srcInfoPoints = []
-                                 }
-                               "g")
-                        ]
-                        (UnGuardedRhs
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 13 53 41
-                             , srcInfoPoints =
-                                 [ SrcSpan "tests/examples/DerivingVia.hs" 53 13 53 14 ]
-                             }
-                           (InfixApp
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 41
-                                , srcInfoPoints = []
-                                }
-                              (Con
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 19
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 19
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 19
-                                         , srcInfoPoints = []
-                                         }
-                                       "Flip")))
-                              (QVarOp
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 53 20 53 21
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 53 20 53 21
-                                      , srcInfoPoints = []
-                                      }
-                                    (Symbol
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 53 20 53 21
-                                         , srcInfoPoints = []
-                                         }
-                                       ".")))
-                              (InfixApp
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 41
-                                   , srcInfoPoints = []
-                                   }
-                                 (App
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 31
-                                      , srcInfoPoints = []
-                                      }
-                                    (App
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 29
-                                         , srcInfoPoints = []
-                                         }
-                                       (Var
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 27
-                                            , srcInfoPoints = []
-                                            }
-                                          (UnQual
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 53 22 53 27
-                                               , srcInfoPoints = []
-                                               }
-                                             (Ident
-                                                SrcSpanInfo
-                                                  { srcInfoSpan =
-                                                      SrcSpan
-                                                        "tests/examples/DerivingVia.hs" 53 22 53 27
-                                                  , srcInfoPoints = []
-                                                  }
-                                                "bimap")))
-                                       (Var
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan "tests/examples/DerivingVia.hs" 53 28 53 29
-                                            , srcInfoPoints = []
-                                            }
-                                          (UnQual
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 53 28 53 29
-                                               , srcInfoPoints = []
-                                               }
-                                             (Ident
-                                                SrcSpanInfo
-                                                  { srcInfoSpan =
-                                                      SrcSpan
-                                                        "tests/examples/DerivingVia.hs" 53 28 53 29
-                                                  , srcInfoPoints = []
-                                                  }
-                                                "g"))))
-                                    (Var
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 53 30 53 31
-                                         , srcInfoPoints = []
-                                         }
-                                       (UnQual
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan "tests/examples/DerivingVia.hs" 53 30 53 31
-                                            , srcInfoPoints = []
-                                            }
-                                          (Ident
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 53 30 53 31
-                                               , srcInfoPoints = []
-                                               }
-                                             "f"))))
-                                 (QVarOp
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 53 32 53 33
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 53 32 53 33
-                                         , srcInfoPoints = []
-                                         }
-                                       (Symbol
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan "tests/examples/DerivingVia.hs" 53 32 53 33
-                                            , srcInfoPoints = []
-                                            }
-                                          ".")))
-                                 (Var
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 53 34 53 41
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 53 34 53 41
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan "tests/examples/DerivingVia.hs" 53 34 53 41
-                                            , srcInfoPoints = []
-                                            }
-                                          "runFlip"))))))
-                        Nothing
-                    ])
-             ])
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 1 58 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 55 1 55 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 55 44 55 49
-                , SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 58 1 58 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 43
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxSingle
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 24
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 55 22 55 24 ]
-                     }
-                   (ClassA
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 24
-                        , srcInfoPoints =
-                            [ SrcSpan "tests/examples/DerivingVia.hs" 55 22 55 24 ]
-                        }
-                      (UnQual
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 19
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 19
-                              , srcInfoPoints = []
-                              }
-                            "Bifunctor"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 20 55 21
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 20 55 21
-                               , srcInfoPoints = []
-                               }
-                             "p")
-                      ])))
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 43
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 32
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 32
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 32
-                           , srcInfoPoints = []
-                           }
-                         "Functor")))
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 33 55 43
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 55 33 55 34
-                         , SrcSpan "tests/examples/DerivingVia.hs" 55 42 55 43
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 42
-                        , srcInfoPoints = []
-                        }
-                      (TyApp
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 40
-                           , srcInfoPoints = []
-                           }
-                         (TyCon
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 38
-                              , srcInfoPoints = []
-                              }
-                            (UnQual
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 38
-                                 , srcInfoPoints = []
-                                 }
-                               (Ident
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 38
-                                    , srcInfoPoints = []
-                                    }
-                                  "Flip")))
-                         (TyVar
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 39 55 40
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 39 55 40
-                                 , srcInfoPoints = []
-                                 }
-                               "p")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 41 55 42
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 41 55 42
-                              , srcInfoPoints = []
-                              }
-                            "a"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 36
-                   , srcInfoPoints = []
-                   }
-                 (FunBind
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 36
-                      , srcInfoPoints = []
-                      }
-                    [ Match
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 36
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 7
-                             , srcInfoPoints = []
-                             }
-                           "fmap")
-                        [ PVar
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 8 56 9
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 8 56 9
-                                 , srcInfoPoints = []
-                                 }
-                               "f")
-                        ]
-                        (UnGuardedRhs
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 10 56 36
-                             , srcInfoPoints =
-                                 [ SrcSpan "tests/examples/DerivingVia.hs" 56 10 56 11 ]
-                             }
-                           (InfixApp
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 36
-                                , srcInfoPoints = []
-                                }
-                              (Con
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 16
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 16
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 16
-                                         , srcInfoPoints = []
-                                         }
-                                       "Flip")))
-                              (QVarOp
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 56 17 56 18
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 56 17 56 18
-                                      , srcInfoPoints = []
-                                      }
-                                    (Symbol
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 56 17 56 18
-                                         , srcInfoPoints = []
-                                         }
-                                       ".")))
-                              (InfixApp
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 36
-                                   , srcInfoPoints = []
-                                   }
-                                 (App
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 26
-                                      , srcInfoPoints = []
-                                      }
-                                    (Var
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 24
-                                         , srcInfoPoints = []
-                                         }
-                                       (UnQual
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 24
-                                            , srcInfoPoints = []
-                                            }
-                                          (Ident
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 56 19 56 24
-                                               , srcInfoPoints = []
-                                               }
-                                             "first")))
-                                    (Var
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 56 25 56 26
-                                         , srcInfoPoints = []
-                                         }
-                                       (UnQual
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan "tests/examples/DerivingVia.hs" 56 25 56 26
-                                            , srcInfoPoints = []
-                                            }
-                                          (Ident
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 56 25 56 26
-                                               , srcInfoPoints = []
-                                               }
-                                             "f"))))
-                                 (QVarOp
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 56 27 56 28
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 56 27 56 28
-                                         , srcInfoPoints = []
-                                         }
-                                       (Symbol
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan "tests/examples/DerivingVia.hs" 56 27 56 28
-                                            , srcInfoPoints = []
-                                            }
-                                          ".")))
-                                 (Var
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 56 29 56 36
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 56 29 56 36
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan "tests/examples/DerivingVia.hs" 56 29 56 36
-                                            , srcInfoPoints = []
-                                            }
-                                          "runFlip"))))))
-                        Nothing
-                    ])
-             ])
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 1 59 19
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 58 15 58 16 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 1 58 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 9 58 14
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 9 58 12
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 9 58 12
-                     , srcInfoPoints = []
-                     }
-                   "Bar"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 13 58 14
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 13 58 14
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 17 58 37
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 17 58 37
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 17 58 22
-                      , srcInfoPoints = []
-                      }
-                    "MkBar")
-                 [ TyParen
-                     SrcSpanInfo
-                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 23 58 37
-                       , srcInfoPoints =
-                           [ SrcSpan "tests/examples/DerivingVia.hs" 58 23 58 24
-                           , SrcSpan "tests/examples/DerivingVia.hs" 58 36 58 37
-                           ]
-                       }
-                     (TyApp
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 36
-                          , srcInfoPoints = []
-                          }
-                        (TyApp
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 32
-                             , srcInfoPoints = []
-                             }
-                           (TyCon
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 30
-                                , srcInfoPoints = []
-                                }
-                              (UnQual
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 30
-                                   , srcInfoPoints = []
-                                   }
-                                 (Ident
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 30
-                                      , srcInfoPoints = []
-                                      }
-                                    "Either")))
-                           (TyVar
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 31 58 32
-                                , srcInfoPoints = []
-                                }
-                              (Ident
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 58 31 58 32
-                                   , srcInfoPoints = []
-                                   }
-                                 "a")))
-                        (TyCon
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 33 58 36
-                             , srcInfoPoints = []
-                             }
-                           (UnQual
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 33 58 36
-                                , srcInfoPoints = []
-                                }
-                              (Ident
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 58 33 58 36
-                                   , srcInfoPoints = []
-                                   }
-                                 "Int"))))
-                 ])
-          ]
-          [ Deriving
-              SrcSpanInfo
-                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 3 59 19
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 59 3 59 11 ]
-                }
-              (Just
-                 (DerivVia
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 8 60 11
-                      , srcInfoPoints = []
-                      }
-                    (TyParen
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 12 60 29
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 60 12 60 13
-                             , SrcSpan "tests/examples/DerivingVia.hs" 60 28 60 29
-                             ]
-                         }
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 28
-                            , srcInfoPoints = []
-                            }
-                          (TyApp
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 24
-                               , srcInfoPoints = []
-                               }
-                             (TyCon
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 17
-                                  , srcInfoPoints = []
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 17
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 17
-                                        , srcInfoPoints = []
-                                        }
-                                      "Flip")))
-                             (TyCon
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 60 18 60 24
-                                  , srcInfoPoints = []
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 60 18 60 24
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 60 18 60 24
-                                        , srcInfoPoints = []
-                                        }
-                                      "Either"))))
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 25 60 28
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 60 25 60 28
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 60 25 60 28
-                                     , srcInfoPoints = []
-                                     }
-                                   "Int")))))))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19
-                             , srcInfoPoints = []
-                             }
-                           "Functor")))
-              ]
-          ]
-      , TypeDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 1 66 47
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 66 1 66 5
-                , SrcSpan "tests/examples/DerivingVia.hs" 66 13 66 14
-                ]
-            }
-          (DHead
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 6 66 12
-               , srcInfoPoints = []
-               }
-             (Ident
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 6 66 12
-                  , srcInfoPoints = []
-                  }
-                "MTrans"))
-          (TyFun
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 15 66 47
-               , srcInfoPoints =
-                   [ SrcSpan "tests/examples/DerivingVia.hs" 66 30 66 32 ]
-               }
-             (TyParen
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 15 66 29
-                  , srcInfoPoints =
-                      [ SrcSpan "tests/examples/DerivingVia.hs" 66 15 66 16
-                      , SrcSpan "tests/examples/DerivingVia.hs" 66 28 66 29
-                      ]
-                  }
-                (TyFun
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 28
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 66 21 66 23 ]
-                     }
-                   (TyCon
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 20
-                        , srcInfoPoints = []
-                        }
-                      (UnQual
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 20
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 20
-                              , srcInfoPoints = []
-                              }
-                            "Type")))
-                   (TyCon
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 24 66 28
-                        , srcInfoPoints = []
-                        }
-                      (UnQual
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 24 66 28
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 24 66 28
-                              , srcInfoPoints = []
-                              }
-                            "Type")))))
-             (TyParen
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 33 66 47
-                  , srcInfoPoints =
-                      [ SrcSpan "tests/examples/DerivingVia.hs" 66 33 66 34
-                      , SrcSpan "tests/examples/DerivingVia.hs" 66 46 66 47
-                      ]
-                  }
-                (TyFun
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 46
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 66 39 66 41 ]
-                     }
-                   (TyCon
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 38
-                        , srcInfoPoints = []
-                        }
-                      (UnQual
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 38
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 38
-                              , srcInfoPoints = []
-                              }
-                            "Type")))
-                   (TyCon
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 42 66 46
-                        , srcInfoPoints = []
-                        }
-                      (UnQual
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 42 66 46
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 42 66 46
-                              , srcInfoPoints = []
-                              }
-                            "Type"))))))
-      , GDataDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 1 72 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 69 13 69 18
-                , SrcSpan "tests/examples/DerivingVia.hs" 70 3 70 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 72 1 72 0
-                ]
-            }
-          (DataType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 1 69 5
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 6 69 12
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 6 69 10
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 6 69 10
-                     , srcInfoPoints = []
-                     }
-                   "Dict"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 11 69 12
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 11 69 12
-                     , srcInfoPoints = []
-                     }
-                   "c")))
-          Nothing
-          [ GadtDecl
-              SrcSpanInfo
-                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 3 70 22
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 70 8 70 10 ]
-                }
-              (Ident
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 3 70 7
-                   , srcInfoPoints = []
-                   }
-                 "Dict")
-              Nothing
-              Nothing
-              Nothing
-              (TyForall
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 22
-                   , srcInfoPoints = []
-                   }
-                 Nothing
-                 (Just
-                    (CxSingle
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 15
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 70 13 70 15 ]
-                         }
-                       (AppA
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 15
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 70 13 70 15 ]
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 12
-                               , srcInfoPoints = []
-                               }
-                             "c")
-                          [])))
-                 (TyApp
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 22
-                      , srcInfoPoints = []
-                      }
-                    (TyCon
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 20
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 20
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 20
-                               , srcInfoPoints = []
-                               }
-                             "Dict")))
-                    (TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 21 70 22
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 21 70 22
-                            , srcInfoPoints = []
-                            }
-                          "c"))))
-          ]
-          []
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 1 72 35
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 72 16 72 17 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 1 72 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 15
-               , srcInfoPoints = []
-               }
-             (DHInfix
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 15
-                  , srcInfoPoints = []
-                  }
-                (UnkindedVar
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 10
-                     , srcInfoPoints = []
-                     }
-                   (Ident
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 10
-                        , srcInfoPoints = []
-                        }
-                      "a"))
-                (Symbol
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 11 72 13
-                     , srcInfoPoints = []
-                     }
-                   ":-"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 14 72 15
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 14 72 15
-                     , srcInfoPoints = []
-                     }
-                   "b")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 18 72 35
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 18 72 35
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 18 72 21
-                      , srcInfoPoints = []
-                      }
-                    "Sub")
-                 [ TyParen
-                     SrcSpanInfo
-                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 22 72 35
-                       , srcInfoPoints =
-                           [ SrcSpan "tests/examples/DerivingVia.hs" 72 22 72 23
-                           , SrcSpan "tests/examples/DerivingVia.hs" 72 34 72 35
-                           ]
-                       }
-                     (TyForall
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 34
-                          , srcInfoPoints = []
-                          }
-                        Nothing
-                        (Just
-                           (CxSingle
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 27
-                                , srcInfoPoints =
-                                    [ SrcSpan "tests/examples/DerivingVia.hs" 72 25 72 27 ]
-                                }
-                              (AppA
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 27
-                                   , srcInfoPoints =
-                                       [ SrcSpan "tests/examples/DerivingVia.hs" 72 25 72 27 ]
-                                   }
-                                 (Ident
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 24
-                                      , srcInfoPoints = []
-                                      }
-                                    "a")
-                                 [])))
-                        (TyApp
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 34
-                             , srcInfoPoints = []
-                             }
-                           (TyCon
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 32
-                                , srcInfoPoints = []
-                                }
-                              (UnQual
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 32
-                                   , srcInfoPoints = []
-                                   }
-                                 (Ident
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 32
-                                      , srcInfoPoints = []
-                                      }
-                                    "Dict")))
-                           (TyVar
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 33 72 34
-                                , srcInfoPoints = []
-                                }
-                              (Ident
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 72 33 72 34
-                                   , srcInfoPoints = []
-                                   }
-                                 "b"))))
-                 ])
-          ]
-          []
-      , InfixDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 1 74 12
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 74 8 74 9 ]
-            }
-          (AssocLeft
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 1 74 7
-               , srcInfoPoints = []
-               })
-          (Just 1)
-          [ VarOp
-              SrcSpanInfo
-                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 10 74 12
-                , srcInfoPoints = []
-                }
-              (Symbol
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 10 74 12
-                   , srcInfoPoints = []
-                   }
-                 "\\\\")
-          ]
-      , TypeSig
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 1 75 39
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 75 6 75 8 ]
-            }
-          [ Symbol
-              SrcSpanInfo
-                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 1 75 5
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 75 1 75 2
-                    , SrcSpan "tests/examples/DerivingVia.hs" 75 2 75 4
-                    , SrcSpan "tests/examples/DerivingVia.hs" 75 4 75 5
-                    ]
-                }
-              "\\\\"
-          ]
-          (TyForall
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 39
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxSingle
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 13
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 75 11 75 13 ]
-                     }
-                   (AppA
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 13
-                        , srcInfoPoints =
-                            [ SrcSpan "tests/examples/DerivingVia.hs" 75 11 75 13 ]
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 10
-                           , srcInfoPoints = []
-                           }
-                         "a")
-                      [])))
-             (TyFun
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 14 75 39
-                  , srcInfoPoints =
-                      [ SrcSpan "tests/examples/DerivingVia.hs" 75 23 75 25 ]
-                  }
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 14 75 22
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 75 14 75 15
-                         , SrcSpan "tests/examples/DerivingVia.hs" 75 21 75 22
-                         ]
-                     }
-                   (TyForall
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 21
-                        , srcInfoPoints = []
-                        }
-                      Nothing
-                      (Just
-                         (CxSingle
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 19
-                              , srcInfoPoints =
-                                  [ SrcSpan "tests/examples/DerivingVia.hs" 75 17 75 19 ]
-                              }
-                            (AppA
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 19
-                                 , srcInfoPoints =
-                                     [ SrcSpan "tests/examples/DerivingVia.hs" 75 17 75 19 ]
-                                 }
-                               (Ident
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 16
-                                    , srcInfoPoints = []
-                                    }
-                                  "b")
-                               [])))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 20 75 21
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 20 75 21
-                              , srcInfoPoints = []
-                              }
-                            "r"))))
-                (TyFun
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 26 75 39
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 75 35 75 37 ]
-                     }
-                   (TyParen
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 26 75 34
-                        , srcInfoPoints =
-                            [ SrcSpan "tests/examples/DerivingVia.hs" 75 26 75 27
-                            , SrcSpan "tests/examples/DerivingVia.hs" 75 33 75 34
-                            ]
-                        }
-                      (TyInfix
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 27 75 33
-                           , srcInfoPoints = []
-                           }
-                         (TyVar
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 27 75 28
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 27 75 28
-                                 , srcInfoPoints = []
-                                 }
-                               "a"))
-                         (UnpromotedName
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 29 75 31
-                              , srcInfoPoints = []
-                              }
-                            (UnQual
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 29 75 31
-                                 , srcInfoPoints = []
-                                 }
-                               (Symbol
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 75 29 75 31
-                                    , srcInfoPoints = []
-                                    }
-                                  ":-")))
-                         (TyVar
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 32 75 33
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 32 75 33
-                                 , srcInfoPoints = []
-                                 }
-                               "b"))))
-                   (TyVar
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 38 75 39
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 38 75 39
-                           , srcInfoPoints = []
-                           }
-                         "r")))))
-      , FunBind
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 18
-            , srcInfoPoints = []
-            }
-          [ InfixMatch
-              SrcSpanInfo
-                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 18
-                , srcInfoPoints = []
-                }
-              (PVar
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 2
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 2
-                      , srcInfoPoints = []
-                      }
-                    "r"))
-              (Symbol
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 3 76 5
-                   , srcInfoPoints = []
-                   }
-                 "\\\\")
-              [ PApp
-                  SrcSpanInfo
-                    { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 6 76 14
-                    , srcInfoPoints = []
-                    }
-                  (UnQual
-                     SrcSpanInfo
-                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 6 76 9
-                       , srcInfoPoints = []
-                       }
-                     (Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 6 76 9
-                          , srcInfoPoints = []
-                          }
-                        "Sub"))
-                  [ PApp
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 10 76 14
-                        , srcInfoPoints = []
-                        }
-                      (UnQual
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 10 76 14
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 10 76 14
-                              , srcInfoPoints = []
-                              }
-                            "Dict"))
-                      []
-                  ]
-              ]
-              (UnGuardedRhs
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 15 76 18
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 76 15 76 16 ]
-                   }
-                 (Var
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 17 76 18
-                      , srcInfoPoints = []
-                      }
-                    (UnQual
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 17 76 18
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 17 76 18
-                            , srcInfoPoints = []
-                            }
-                          "r"))))
-              Nothing
-          ]
-      , ClassDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 1 85 38
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 84 1 84 6
-                , SrcSpan "tests/examples/DerivingVia.hs" 84 38 84 43
-                , SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 87 1 87 0
-                ]
-            }
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 7 84 37
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 7 84 19
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 7 84 19
-                     , srcInfoPoints = []
-                     }
-                   "LiftingMonad"))
-             (KindedVar
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 20 84 37
-                  , srcInfoPoints =
-                      [ SrcSpan "tests/examples/DerivingVia.hs" 84 20 84 21
-                      , SrcSpan "tests/examples/DerivingVia.hs" 84 27 84 29
-                      , SrcSpan "tests/examples/DerivingVia.hs" 84 36 84 37
-                      ]
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 21 84 26
-                     , srcInfoPoints = []
-                     }
-                   "trans")
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 30 84 36
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 30 84 36
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 30 84 36
-                           , srcInfoPoints = []
-                           }
-                         "MTrans")))))
-          []
-          (Just
-             [ ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 38
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 85 9 85 11 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 38
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 85 9 85 11 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 8
-                          , srcInfoPoints = []
-                          }
-                        "proof"
-                    ]
-                    (TyInfix
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 38
-                         , srcInfoPoints = []
-                         }
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 19
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 17
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 17
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 17
-                                     , srcInfoPoints = []
-                                     }
-                                   "Monad")))
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 18 85 19
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 85 18 85 19
-                                  , srcInfoPoints = []
-                                  }
-                                "m")))
-                       (UnpromotedName
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 20 85 22
-                            , srcInfoPoints = []
-                            }
-                          (UnQual
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 20 85 22
-                               , srcInfoPoints = []
-                               }
-                             (Symbol
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 85 20 85 22
-                                  , srcInfoPoints = []
-                                  }
-                                ":-")))
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 38
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 28
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 28
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 28
-                                     , srcInfoPoints = []
-                                     }
-                                   "Monad")))
-                          (TyParen
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 29 85 38
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 85 29 85 30
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 85 37 85 38
-                                   ]
-                               }
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 85 30 85 37
-                                  , srcInfoPoints = []
-                                  }
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 85 30 85 35
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 85 30 85 35
-                                        , srcInfoPoints = []
-                                        }
-                                      "trans"))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 85 36 85 37
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 85 36 85 37
-                                        , srcInfoPoints = []
-                                        }
-                                      "m")))))))
-             ])
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 1 91 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 87 1 87 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 87 44 87 49
-                , SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 91 1 91 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 43
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 43
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 22
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 22
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 22
-                           , srcInfoPoints = []
-                           }
-                         "LiftingMonad")))
-                (TyKind
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 23 87 43
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 87 23 87 24
-                         , SrcSpan "tests/examples/DerivingVia.hs" 87 33 87 35
-                         , SrcSpan "tests/examples/DerivingVia.hs" 87 42 87 43
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 32
-                        , srcInfoPoints = []
-                        }
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 30
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 30
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 30
-                                 , srcInfoPoints = []
-                                 }
-                               "StateT")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 31 87 32
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 31 87 32
-                              , srcInfoPoints = []
-                              }
-                            "s")))
-                   (TyCon
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 36 87 42
-                        , srcInfoPoints = []
-                        }
-                      (UnQual
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 36 87 42
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 36 87 42
-                              , srcInfoPoints = []
-                              }
-                            "MTrans"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 41
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 88 9 88 11 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 41
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 88 9 88 11 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 8
-                          , srcInfoPoints = []
-                          }
-                        "proof"
-                    ]
-                    (TyInfix
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 41
-                         , srcInfoPoints = []
-                         }
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 19
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 17
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 17
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 17
-                                     , srcInfoPoints = []
-                                     }
-                                   "Monad")))
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 18 88 19
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 88 18 88 19
-                                  , srcInfoPoints = []
-                                  }
-                                "m")))
-                       (UnpromotedName
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 20 88 22
-                            , srcInfoPoints = []
-                            }
-                          (UnQual
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 20 88 22
-                               , srcInfoPoints = []
-                               }
-                             (Symbol
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 88 20 88 22
-                                  , srcInfoPoints = []
-                                  }
-                                ":-")))
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 41
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 28
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 28
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 28
-                                     , srcInfoPoints = []
-                                     }
-                                   "Monad")))
-                          (TyParen
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 29 88 41
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 88 29 88 30
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 88 40 88 41
-                                   ]
-                               }
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 40
-                                  , srcInfoPoints = []
-                                  }
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 38
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyCon
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 36
-                                        , srcInfoPoints = []
-                                        }
-                                      (UnQual
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 36
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 88 30 88 36
-                                              , srcInfoPoints = []
-                                              }
-                                            "StateT")))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 88 37 88 38
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 88 37 88 38
-                                           , srcInfoPoints = []
-                                           }
-                                         "s")))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 88 39 88 40
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 88 39 88 40
-                                        , srcInfoPoints = []
-                                        }
-                                      "m")))))))
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 19
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 19
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 8
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 8
-                            , srcInfoPoints = []
-                            }
-                          "proof"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 9 89 19
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 89 9 89 10 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 19
-                            , srcInfoPoints = []
-                            }
-                          (Con
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 14
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 14
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 14
-                                     , srcInfoPoints = []
-                                     }
-                                   "Sub")))
-                          (Con
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 15 89 19
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 89 15 89 19
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 89 15 89 19
-                                     , srcInfoPoints = []
-                                     }
-                                   "Dict")))))
-                    Nothing)
-             ])
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 1 95 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 91 1 91 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 91 57 91 62
-                , SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 95 1 95 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 56
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxSingle
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 21
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 91 19 91 21 ]
-                     }
-                   (ClassA
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 21
-                        , srcInfoPoints =
-                            [ SrcSpan "tests/examples/DerivingVia.hs" 91 19 91 21 ]
-                        }
-                      (UnQual
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 16
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 16
-                              , srcInfoPoints = []
-                              }
-                            "Monoid"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 17 91 18
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 17 91 18
-                               , srcInfoPoints = []
-                               }
-                             "w")
-                      ])))
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 56
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 34
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 34
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 34
-                           , srcInfoPoints = []
-                           }
-                         "LiftingMonad")))
-                (TyKind
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 35 91 56
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 91 35 91 36
-                         , SrcSpan "tests/examples/DerivingVia.hs" 91 46 91 48
-                         , SrcSpan "tests/examples/DerivingVia.hs" 91 55 91 56
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 45
-                        , srcInfoPoints = []
-                        }
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 43
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 43
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 43
-                                 , srcInfoPoints = []
-                                 }
-                               "WriterT")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 44 91 45
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 44 91 45
-                              , srcInfoPoints = []
-                              }
-                            "w")))
-                   (TyCon
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 49 91 55
-                        , srcInfoPoints = []
-                        }
-                      (UnQual
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 49 91 55
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 49 91 55
-                              , srcInfoPoints = []
-                              }
-                            "MTrans"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 42
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 92 9 92 11 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 42
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 92 9 92 11 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 8
-                          , srcInfoPoints = []
-                          }
-                        "proof"
-                    ]
-                    (TyInfix
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 42
-                         , srcInfoPoints = []
-                         }
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 19
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 17
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 17
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 17
-                                     , srcInfoPoints = []
-                                     }
-                                   "Monad")))
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 18 92 19
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 92 18 92 19
-                                  , srcInfoPoints = []
-                                  }
-                                "m")))
-                       (UnpromotedName
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 20 92 22
-                            , srcInfoPoints = []
-                            }
-                          (UnQual
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 20 92 22
-                               , srcInfoPoints = []
-                               }
-                             (Symbol
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 92 20 92 22
-                                  , srcInfoPoints = []
-                                  }
-                                ":-")))
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 42
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 28
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 28
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 28
-                                     , srcInfoPoints = []
-                                     }
-                                   "Monad")))
-                          (TyParen
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 29 92 42
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 92 29 92 30
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 92 41 92 42
-                                   ]
-                               }
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 41
-                                  , srcInfoPoints = []
-                                  }
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 39
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyCon
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 37
-                                        , srcInfoPoints = []
-                                        }
-                                      (UnQual
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 37
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 92 30 92 37
-                                              , srcInfoPoints = []
-                                              }
-                                            "WriterT")))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 92 38 92 39
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 92 38 92 39
-                                           , srcInfoPoints = []
-                                           }
-                                         "w")))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 92 40 92 41
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 92 40 92 41
-                                        , srcInfoPoints = []
-                                        }
-                                      "m")))))))
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 19
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 19
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 8
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 8
-                            , srcInfoPoints = []
-                            }
-                          "proof"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 9 93 19
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 93 9 93 10 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 19
-                            , srcInfoPoints = []
-                            }
-                          (Con
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 14
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 14
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 14
-                                     , srcInfoPoints = []
-                                     }
-                                   "Sub")))
-                          (Con
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 15 93 19
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 93 15 93 19
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 93 15 93 19
-                                     , srcInfoPoints = []
-                                     }
-                                   "Dict")))))
-                    Nothing)
-             ])
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 1 99 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 95 1 95 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 95 102 95 107
-                , SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 99 1 99 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 95 10 95 101
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxTuple
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 10 95 54
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 95 10 95 11
-                         , SrcSpan "tests/examples/DerivingVia.hs" 95 29 95 30
-                         , SrcSpan "tests/examples/DerivingVia.hs" 95 50 95 51
-                         , SrcSpan "tests/examples/DerivingVia.hs" 95 52 95 54
-                         ]
-                     }
-                   [ ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 29
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 23
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 23
-                               , srcInfoPoints = []
-                               }
-                             "LiftingMonad"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 24 95 29
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 24 95 29
-                                , srcInfoPoints = []
-                                }
-                              "trans")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 50
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 43
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 43
-                               , srcInfoPoints = []
-                               }
-                             "LiftingMonad"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 44 95 50
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 44 95 50
-                                , srcInfoPoints = []
-                                }
-                              "trans'")
-                       ]
-                   ]))
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 101
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 67
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 67
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 67
-                           , srcInfoPoints = []
-                           }
-                         "LiftingMonad")))
-                (TyKind
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 95 68 95 101
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 95 68 95 69
-                         , SrcSpan "tests/examples/DerivingVia.hs" 95 91 95 93
-                         , SrcSpan "tests/examples/DerivingVia.hs" 95 100 95 101
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 90
-                        , srcInfoPoints = []
-                        }
-                      (TyApp
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 83
-                           , srcInfoPoints = []
-                           }
-                         (TyCon
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 77
-                              , srcInfoPoints = []
-                              }
-                            (UnQual
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 77
-                                 , srcInfoPoints = []
-                                 }
-                               (Ident
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 77
-                                    , srcInfoPoints = []
-                                    }
-                                  "ComposeT")))
-                         (TyVar
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 78 95 83
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 78 95 83
-                                 , srcInfoPoints = []
-                                 }
-                               "trans")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 84 95 90
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 84 95 90
-                              , srcInfoPoints = []
-                              }
-                            "trans'")))
-                   (TyCon
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 95 94 95 100
-                        , srcInfoPoints = []
-                        }
-                      (UnQual
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 95 94 95 100
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 95 94 95 100
-                              , srcInfoPoints = []
-                              }
-                            "MTrans"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 64
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 96 9 96 11 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 64
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 96 9 96 11 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 8
-                          , srcInfoPoints = []
-                          }
-                        "proof"
-                    ]
-                    (TyForall
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 12 96 64
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 96 12 96 18
-                             , SrcSpan "tests/examples/DerivingVia.hs" 96 20 96 21
-                             ]
-                         }
-                       (Just
-                          [ UnkindedVar
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 19 96 20
-                                , srcInfoPoints = []
-                                }
-                              (Ident
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 96 19 96 20
-                                   , srcInfoPoints = []
-                                   }
-                                 "m")
-                          ])
-                       Nothing
-                       (TyInfix
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 64
-                            , srcInfoPoints = []
-                            }
-                          (TyApp
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 29
-                               , srcInfoPoints = []
-                               }
-                             (TyCon
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 27
-                                  , srcInfoPoints = []
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 27
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 27
-                                        , srcInfoPoints = []
-                                        }
-                                      "Monad")))
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 96 28 96 29
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 96 28 96 29
-                                     , srcInfoPoints = []
-                                     }
-                                   "m")))
-                          (UnpromotedName
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 30 96 32
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 96 30 96 32
-                                  , srcInfoPoints = []
-                                  }
-                                (Symbol
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 96 30 96 32
-                                     , srcInfoPoints = []
-                                     }
-                                   ":-")))
-                          (TyApp
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 64
-                               , srcInfoPoints = []
-                               }
-                             (TyCon
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 38
-                                  , srcInfoPoints = []
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 38
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 38
-                                        , srcInfoPoints = []
-                                        }
-                                      "Monad")))
-                             (TyParen
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 96 39 96 64
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 96 39 96 40
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 96 63 96 64
-                                      ]
-                                  }
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 96 40 96 63
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyApp
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 96 40 96 61
-                                        , srcInfoPoints = []
-                                        }
-                                      (TyApp
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 96 40 96 54
-                                           , srcInfoPoints = []
-                                           }
-                                         (TyCon
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 96 40 96 48
-                                              , srcInfoPoints = []
-                                              }
-                                            (UnQual
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 96 40 96 48
-                                                 , srcInfoPoints = []
-                                                 }
-                                               (Ident
-                                                  SrcSpanInfo
-                                                    { srcInfoSpan =
-                                                        SrcSpan
-                                                          "tests/examples/DerivingVia.hs"
-                                                          96
-                                                          40
-                                                          96
-                                                          48
-                                                    , srcInfoPoints = []
-                                                    }
-                                                  "ComposeT")))
-                                         (TyVar
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 96 49 96 54
-                                              , srcInfoPoints = []
-                                              }
-                                            (Ident
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 96 49 96 54
-                                                 , srcInfoPoints = []
-                                                 }
-                                               "trans")))
-                                      (TyVar
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 96 55 96 61
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 96 55 96 61
-                                              , srcInfoPoints = []
-                                              }
-                                            "trans'")))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 96 62 96 63
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 96 62 96 63
-                                           , srcInfoPoints = []
-                                           }
-                                         "m"))))))))
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 69
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 69
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 8
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 8
-                            , srcInfoPoints = []
-                            }
-                          "proof"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 9 97 69
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 97 9 97 10 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 69
-                            , srcInfoPoints = []
-                            }
-                          (Con
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 14
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 14
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 14
-                                     , srcInfoPoints = []
-                                     }
-                                   "Sub")))
-                          (Paren
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 15 97 69
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 97 15 97 16
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 97 68 97 69
-                                   ]
-                               }
-                             (InfixApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 68
-                                  , srcInfoPoints = []
-                                  }
-                                (InfixApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 48
-                                     , srcInfoPoints = []
-                                     }
-                                   (Con
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 20
-                                        , srcInfoPoints = []
-                                        }
-                                      (UnQual
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 20
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 97 16 97 20
-                                              , srcInfoPoints = []
-                                              }
-                                            "Dict")))
-                                   (QVarOp
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 97 21 97 23
-                                        , srcInfoPoints = []
-                                        }
-                                      (UnQual
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 97 21 97 23
-                                           , srcInfoPoints = []
-                                           }
-                                         (Symbol
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 97 21 97 23
-                                              , srcInfoPoints = []
-                                              }
-                                            "\\\\")))
-                                   (App
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 97 24 97 48
-                                        , srcInfoPoints = []
-                                        }
-                                      (App
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 97 24 97 36
-                                           , srcInfoPoints = []
-                                           }
-                                         (Var
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 97 24 97 29
-                                              , srcInfoPoints = []
-                                              }
-                                            (UnQual
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 97 24 97 29
-                                                 , srcInfoPoints = []
-                                                 }
-                                               (Ident
-                                                  SrcSpanInfo
-                                                    { srcInfoSpan =
-                                                        SrcSpan
-                                                          "tests/examples/DerivingVia.hs"
-                                                          97
-                                                          24
-                                                          97
-                                                          29
-                                                    , srcInfoPoints = []
-                                                    }
-                                                  "proof")))
-                                         (TypeApp
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 97 30 97 36
-                                              , srcInfoPoints =
-                                                  [ SrcSpan
-                                                      "tests/examples/DerivingVia.hs" 97 30 97 31
-                                                  ]
-                                              }
-                                            (TyVar
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 97 31 97 36
-                                                 , srcInfoPoints = []
-                                                 }
-                                               (Ident
-                                                  SrcSpanInfo
-                                                    { srcInfoSpan =
-                                                        SrcSpan
-                                                          "tests/examples/DerivingVia.hs"
-                                                          97
-                                                          31
-                                                          97
-                                                          36
-                                                    , srcInfoPoints = []
-                                                    }
-                                                  "trans"))))
-                                      (TypeApp
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 97 37 97 48
-                                           , srcInfoPoints =
-                                               [ SrcSpan "tests/examples/DerivingVia.hs" 97 37 97 38
-                                               ]
-                                           }
-                                         (TyParen
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 97 38 97 48
-                                              , srcInfoPoints =
-                                                  [ SrcSpan
-                                                      "tests/examples/DerivingVia.hs" 97 38 97 39
-                                                  , SrcSpan
-                                                      "tests/examples/DerivingVia.hs" 97 47 97 48
-                                                  ]
-                                              }
-                                            (TyApp
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 97 39 97 47
-                                                 , srcInfoPoints = []
-                                                 }
-                                               (TyVar
-                                                  SrcSpanInfo
-                                                    { srcInfoSpan =
-                                                        SrcSpan
-                                                          "tests/examples/DerivingVia.hs"
-                                                          97
-                                                          39
-                                                          97
-                                                          45
-                                                    , srcInfoPoints = []
-                                                    }
-                                                  (Ident
-                                                     SrcSpanInfo
-                                                       { srcInfoSpan =
-                                                           SrcSpan
-                                                             "tests/examples/DerivingVia.hs"
-                                                             97
-                                                             39
-                                                             97
-                                                             45
-                                                       , srcInfoPoints = []
-                                                       }
-                                                     "trans'"))
-                                               (TyVar
-                                                  SrcSpanInfo
-                                                    { srcInfoSpan =
-                                                        SrcSpan
-                                                          "tests/examples/DerivingVia.hs"
-                                                          97
-                                                          46
-                                                          97
-                                                          47
-                                                    , srcInfoPoints = []
-                                                    }
-                                                  (Ident
-                                                     SrcSpanInfo
-                                                       { srcInfoSpan =
-                                                           SrcSpan
-                                                             "tests/examples/DerivingVia.hs"
-                                                             97
-                                                             46
-                                                             97
-                                                             47
-                                                       , srcInfoPoints = []
-                                                       }
-                                                     "m")))))))
-                                (QVarOp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 97 49 97 51
-                                     , srcInfoPoints = []
-                                     }
-                                   (UnQual
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 97 49 97 51
-                                        , srcInfoPoints = []
-                                        }
-                                      (Symbol
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 97 49 97 51
-                                           , srcInfoPoints = []
-                                           }
-                                         "\\\\")))
-                                (App
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 97 52 97 68
-                                     , srcInfoPoints = []
-                                     }
-                                   (App
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 97 52 97 65
-                                        , srcInfoPoints = []
-                                        }
-                                      (Var
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 97 52 97 57
-                                           , srcInfoPoints = []
-                                           }
-                                         (UnQual
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 97 52 97 57
-                                              , srcInfoPoints = []
-                                              }
-                                            (Ident
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 97 52 97 57
-                                                 , srcInfoPoints = []
-                                                 }
-                                               "proof")))
-                                      (TypeApp
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 97 58 97 65
-                                           , srcInfoPoints =
-                                               [ SrcSpan "tests/examples/DerivingVia.hs" 97 58 97 59
-                                               ]
-                                           }
-                                         (TyVar
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 97 59 97 65
-                                              , srcInfoPoints = []
-                                              }
-                                            (Ident
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 97 59 97 65
-                                                 , srcInfoPoints = []
-                                                 }
-                                               "trans'"))))
-                                   (TypeApp
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 97 66 97 68
-                                        , srcInfoPoints =
-                                            [ SrcSpan "tests/examples/DerivingVia.hs" 97 66 97 67 ]
-                                        }
-                                      (TyVar
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 97 67 97 68
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 97 67 97 68
-                                              , srcInfoPoints = []
-                                              }
-                                            "m"))))))))
-                    Nothing)
-             ])
-      , GDataDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 1 109 34
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 99 15 99 17
-                , SrcSpan "tests/examples/DerivingVia.hs" 99 25 99 30
-                , SrcSpan "tests/examples/DerivingVia.hs" 100 3 100 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 101 3 101 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 101 3 101 3
-                ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 1 99 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHead
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 9 99 14
-               , srcInfoPoints = []
-               }
-             (Ident
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 9 99 14
-                  , srcInfoPoints = []
-                  }
-                "Stack"))
-          (Just
-             (TyCon
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 18 99 24
-                  , srcInfoPoints = []
-                  }
-                (UnQual
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 18 99 24
-                     , srcInfoPoints = []
-                     }
-                   (Ident
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 18 99 24
-                        , srcInfoPoints = []
-                        }
-                      "MTrans"))))
-          [ GadtDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 100 3 100 71
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 100 9 100 11 ]
-                }
-              (Ident
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 100 3 100 8
-                   , srcInfoPoints = []
-                   }
-                 "Stack")
-              Nothing
-              Nothing
-              Nothing
-              (TyFun
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 71
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 100 59 100 61 ]
-                   }
-                 (TyApp
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 58
-                      , srcInfoPoints = []
-                      }
-                    (TyApp
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 56
-                         , srcInfoPoints = []
-                         }
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 23
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 19
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 19
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 19
-                                     , srcInfoPoints = []
-                                     }
-                                   "ReaderT")))
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 100 20 100 23
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 100 20 100 23
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 100 20 100 23
-                                     , srcInfoPoints = []
-                                     }
-                                   "Int"))))
-                       (TyParen
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 100 24 100 56
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 100 24 100 25
-                                , SrcSpan "tests/examples/DerivingVia.hs" 100 55 100 56
-                                ]
-                            }
-                          (TyApp
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 55
-                               , srcInfoPoints = []
-                               }
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 36
-                                  , srcInfoPoints = []
-                                  }
-                                (TyCon
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 31
-                                     , srcInfoPoints = []
-                                     }
-                                   (UnQual
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 31
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 31
-                                           , srcInfoPoints = []
-                                           }
-                                         "StateT")))
-                                (TyCon
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 100 32 100 36
-                                     , srcInfoPoints = []
-                                     }
-                                   (UnQual
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 100 32 100 36
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 100 32 100 36
-                                           , srcInfoPoints = []
-                                           }
-                                         "Bool"))))
-                             (TyParen
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 100 37 100 55
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 100 37 100 38
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 100 54 100 55
-                                      ]
-                                  }
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 100 38 100 54
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyApp
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 100 38 100 52
-                                        , srcInfoPoints = []
-                                        }
-                                      (TyCon
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 100 38 100 45
-                                           , srcInfoPoints = []
-                                           }
-                                         (UnQual
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 100 38 100 45
-                                              , srcInfoPoints = []
-                                              }
-                                            (Ident
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 100 38 100 45
-                                                 , srcInfoPoints = []
-                                                 }
-                                               "WriterT")))
-                                      (TyCon
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 100 46 100 52
-                                           , srcInfoPoints = []
-                                           }
-                                         (UnQual
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 100 46 100 52
-                                              , srcInfoPoints = []
-                                              }
-                                            (Ident
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 100 46 100 52
-                                                 , srcInfoPoints = []
-                                                 }
-                                               "String"))))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 100 53 100 54
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 100 53 100 54
-                                           , srcInfoPoints = []
-                                           }
-                                         "m")))))))
-                    (TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 100 57 100 58
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 100 57 100 58
-                            , srcInfoPoints = []
-                            }
-                          "a")))
-                 (TyApp
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 71
-                      , srcInfoPoints = []
-                      }
-                    (TyApp
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 69
-                         , srcInfoPoints = []
-                         }
-                       (TyCon
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 67
-                            , srcInfoPoints = []
-                            }
-                          (UnQual
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 67
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 67
-                                  , srcInfoPoints = []
-                                  }
-                                "Stack")))
-                       (TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 100 68 100 69
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 100 68 100 69
-                               , srcInfoPoints = []
-                               }
-                             "m")))
-                    (TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 100 70 100 71
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 100 70 100 71
-                            , srcInfoPoints = []
-                            }
-                          "a"))))
-          ]
-          [ Deriving
-              SrcSpanInfo
-                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 101 3 108 6
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 101 3 101 11
-                    , SrcSpan "tests/examples/DerivingVia.hs" 102 5 102 6
-                    , SrcSpan "tests/examples/DerivingVia.hs" 103 5 103 6
-                    , SrcSpan "tests/examples/DerivingVia.hs" 104 5 104 6
-                    , SrcSpan "tests/examples/DerivingVia.hs" 105 5 105 6
-                    , SrcSpan "tests/examples/DerivingVia.hs" 106 5 106 6
-                    , SrcSpan "tests/examples/DerivingVia.hs" 107 5 107 6
-                    , SrcSpan "tests/examples/DerivingVia.hs" 108 5 108 6
-                    ]
-                }
-              (Just
-                 (DerivNewtype
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 101 12 101 19
-                      , srcInfoPoints = []
-                      }))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14
-                             , srcInfoPoints = []
-                             }
-                           "Functor")))
-              , IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18
-                             , srcInfoPoints = []
-                             }
-                           "Applicative")))
-              , IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12
-                             , srcInfoPoints = []
-                             }
-                           "Monad")))
-              , IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 22
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHApp
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 22
-                       , srcInfoPoints = []
-                       }
-                     (IHCon
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 18
-                          , srcInfoPoints = []
-                          }
-                        (UnQual
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 18
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 18
-                                , srcInfoPoints = []
-                                }
-                              "MonadReader")))
-                     (TyCon
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 105 19 105 22
-                          , srcInfoPoints = []
-                          }
-                        (UnQual
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 105 19 105 22
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 105 19 105 22
-                                , srcInfoPoints = []
-                                }
-                              "Int"))))
-              , IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 22
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHApp
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 22
-                       , srcInfoPoints = []
-                       }
-                     (IHCon
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 17
-                          , srcInfoPoints = []
-                          }
-                        (UnQual
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 17
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 17
-                                , srcInfoPoints = []
-                                }
-                              "MonadState")))
-                     (TyCon
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 106 18 106 22
-                          , srcInfoPoints = []
-                          }
-                        (UnQual
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 106 18 106 22
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 106 18 106 22
-                                , srcInfoPoints = []
-                                }
-                              "Bool"))))
-              , IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 25
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHApp
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 25
-                       , srcInfoPoints = []
-                       }
-                     (IHCon
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 18
-                          , srcInfoPoints = []
-                          }
-                        (UnQual
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 18
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 18
-                                , srcInfoPoints = []
-                                }
-                              "MonadWriter")))
-                     (TyCon
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 107 19 107 25
-                          , srcInfoPoints = []
-                          }
-                        (UnQual
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 107 19 107 25
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 107 19 107 25
-                                , srcInfoPoints = []
-                                }
-                              "String"))))
-              ]
-          , Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 109 3 109 34
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 109 3 109 11
-                    , SrcSpan "tests/examples/DerivingVia.hs" 109 12 109 13
-                    , SrcSpan "tests/examples/DerivingVia.hs" 109 23 109 24
-                    , SrcSpan "tests/examples/DerivingVia.hs" 109 33 109 34
-                    ]
-                }
-              (Just
-                 (DerivVia
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 110 8 110 11
-                      , srcInfoPoints = []
-                      }
-                    (TyParen
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 110 12 110 74
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 110 12 110 13
-                             , SrcSpan "tests/examples/DerivingVia.hs" 110 73 110 74
-                             ]
-                         }
-                       (TyInfix
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 73
-                            , srcInfoPoints = []
-                            }
-                          (TyApp
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 24
-                               , srcInfoPoints = []
-                               }
-                             (TyCon
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 20
-                                  , srcInfoPoints = []
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 20
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 20
-                                        , srcInfoPoints = []
-                                        }
-                                      "ReaderT")))
-                             (TyCon
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 110 21 110 24
-                                  , srcInfoPoints = []
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 110 21 110 24
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 110 21 110 24
-                                        , srcInfoPoints = []
-                                        }
-                                      "Int"))))
-                          (UnpromotedName
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 35
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 26
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 110 26 110 34
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 110 34 110 35
-                                   ]
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 35
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 26
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 110 26 110 34
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 110 34 110 35
-                                      ]
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 110 26 110 34
-                                     , srcInfoPoints = []
-                                     }
-                                   "ComposeT")))
-                          (TyInfix
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 73
-                               , srcInfoPoints = []
-                               }
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 47
-                                  , srcInfoPoints = []
-                                  }
-                                (TyCon
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 42
-                                     , srcInfoPoints = []
-                                     }
-                                   (UnQual
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 42
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 42
-                                           , srcInfoPoints = []
-                                           }
-                                         "StateT")))
-                                (TyCon
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 110 43 110 47
-                                     , srcInfoPoints = []
-                                     }
-                                   (UnQual
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 110 43 110 47
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 110 43 110 47
-                                           , srcInfoPoints = []
-                                           }
-                                         "Bool"))))
-                             (UnpromotedName
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 58
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 49
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 110 49 110 57
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 110 57 110 58
-                                      ]
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 58
-                                     , srcInfoPoints =
-                                         [ SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 49
-                                         , SrcSpan "tests/examples/DerivingVia.hs" 110 49 110 57
-                                         , SrcSpan "tests/examples/DerivingVia.hs" 110 57 110 58
-                                         ]
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 110 49 110 57
-                                        , srcInfoPoints = []
-                                        }
-                                      "ComposeT")))
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 73
-                                  , srcInfoPoints = []
-                                  }
-                                (TyCon
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 66
-                                     , srcInfoPoints = []
-                                     }
-                                   (UnQual
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 66
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 66
-                                           , srcInfoPoints = []
-                                           }
-                                         "WriterT")))
-                                (TyCon
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 110 67 110 73
-                                     , srcInfoPoints = []
-                                     }
-                                   (UnQual
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 110 67 110 73
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 110 67 110 73
-                                           , srcInfoPoints = []
-                                           }
-                                         "String")))))))))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23
-                             , srcInfoPoints = []
-                             }
-                           "MonadTrans")))
-              , IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33
-                             , srcInfoPoints = []
-                             }
-                           "MFunctor")))
-              ]
-          ]
-      , ClassDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 112 1 113 57
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 112 1 112 6
-                , SrcSpan "tests/examples/DerivingVia.hs" 112 34 112 39
-                , SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 115 1 115 0
-                ]
-            }
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 112 7 112 33
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 112 7 112 15
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 112 7 112 15
-                     , srcInfoPoints = []
-                     }
-                   "MFunctor"))
-             (KindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 112 16 112 33
-                  , srcInfoPoints =
-                      [ SrcSpan "tests/examples/DerivingVia.hs" 112 16 112 17
-                      , SrcSpan "tests/examples/DerivingVia.hs" 112 23 112 25
-                      , SrcSpan "tests/examples/DerivingVia.hs" 112 32 112 33
-                      ]
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 112 17 112 22
-                     , srcInfoPoints = []
-                     }
-                   "trans")
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 112 26 112 32
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 112 26 112 32
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 112 26 112 32
-                           , srcInfoPoints = []
-                           }
-                         "MTrans")))))
-          []
-          (Just
-             [ ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 57
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 113 9 113 11 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 57
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 113 9 113 11 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 8
-                          , srcInfoPoints = []
-                          }
-                        "hoist"
-                    ]
-                    (TyForall
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 57
-                         , srcInfoPoints = []
-                         }
-                       Nothing
-                       (Just
-                          (CxSingle
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 22
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 113 20 113 22 ]
-                               }
-                             (ClassA
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 22
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 113 20 113 22 ]
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 17
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 17
-                                        , srcInfoPoints = []
-                                        }
-                                      "Monad"))
-                                [ TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 113 18 113 19
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 113 18 113 19
-                                         , srcInfoPoints = []
-                                         }
-                                       "m")
-                                ])))
-                       (TyFun
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 113 23 113 57
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 113 33 113 35 ]
-                            }
-                          (TyParen
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 113 23 113 32
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 113 23 113 24
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 113 31 113 32
-                                   ]
-                               }
-                             (TyInfix
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 113 24 113 31
-                                  , srcInfoPoints = []
-                                  }
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 113 24 113 25
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 113 24 113 25
-                                        , srcInfoPoints = []
-                                        }
-                                      "m"))
-                                (UnpromotedName
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 113 26 113 28
-                                     , srcInfoPoints = []
-                                     }
-                                   (UnQual
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 113 26 113 28
-                                        , srcInfoPoints = []
-                                        }
-                                      (Symbol
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 113 26 113 28
-                                           , srcInfoPoints = []
-                                           }
-                                         "~>")))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 113 29 113 31
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 113 29 113 31
-                                        , srcInfoPoints = []
-                                        }
-                                      "m'"))))
-                          (TyParen
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 113 36 113 57
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 113 36 113 37
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 113 56 113 57
-                                   ]
-                               }
-                             (TyInfix
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 56
-                                  , srcInfoPoints = []
-                                  }
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 44
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 42
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 42
-                                           , srcInfoPoints = []
-                                           }
-                                         "trans"))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 113 43 113 44
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 113 43 113 44
-                                           , srcInfoPoints = []
-                                           }
-                                         "m")))
-                                (UnpromotedName
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 113 45 113 47
-                                     , srcInfoPoints = []
-                                     }
-                                   (UnQual
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 113 45 113 47
-                                        , srcInfoPoints = []
-                                        }
-                                      (Symbol
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 113 45 113 47
-                                           , srcInfoPoints = []
-                                           }
-                                         "~>")))
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 113 48 113 56
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 113 48 113 53
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 113 48 113 53
-                                           , srcInfoPoints = []
-                                           }
-                                         "trans"))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 113 54 113 56
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 113 54 113 56
-                                           , srcInfoPoints = []
-                                           }
-                                         "m'"))))))))
-             ])
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 115 1 119 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 115 1 115 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 115 41 115 46
-                , SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 119 1 119 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 40
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 40
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 18
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 18
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 18
-                           , srcInfoPoints = []
-                           }
-                         "MFunctor")))
-                (TyKind
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 115 19 115 40
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 115 19 115 20
-                         , SrcSpan "tests/examples/DerivingVia.hs" 115 30 115 32
-                         , SrcSpan "tests/examples/DerivingVia.hs" 115 39 115 40
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 29
-                        , srcInfoPoints = []
-                        }
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 27
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 27
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 27
-                                 , srcInfoPoints = []
-                                 }
-                               "ReaderT")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 115 28 115 29
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 115 28 115 29
-                              , srcInfoPoints = []
-                              }
-                            "r")))
-                   (TyCon
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 115 33 115 39
-                        , srcInfoPoints = []
-                        }
-                      (UnQual
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 115 33 115 39
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 115 33 115 39
-                              , srcInfoPoints = []
-                              }
-                            "MTrans"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 65
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 116 9 116 11 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 65
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 116 9 116 11 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 8
-                          , srcInfoPoints = []
-                          }
-                        "hoist"
-                    ]
-                    (TyForall
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 65
-                         , srcInfoPoints = []
-                         }
-                       Nothing
-                       (Just
-                          (CxSingle
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 22
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 116 20 116 22 ]
-                               }
-                             (ClassA
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 22
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 116 20 116 22 ]
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 17
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 17
-                                        , srcInfoPoints = []
-                                        }
-                                      "Monad"))
-                                [ TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 116 18 116 19
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 116 18 116 19
-                                         , srcInfoPoints = []
-                                         }
-                                       "m")
-                                ])))
-                       (TyFun
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 116 23 116 65
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 116 33 116 35 ]
-                            }
-                          (TyParen
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 116 23 116 32
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 116 23 116 24
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 116 31 116 32
-                                   ]
-                               }
-                             (TyInfix
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 116 24 116 31
-                                  , srcInfoPoints = []
-                                  }
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 116 24 116 25
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 116 24 116 25
-                                        , srcInfoPoints = []
-                                        }
-                                      "m"))
-                                (UnpromotedName
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 116 26 116 28
-                                     , srcInfoPoints = []
-                                     }
-                                   (UnQual
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 116 26 116 28
-                                        , srcInfoPoints = []
-                                        }
-                                      (Symbol
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 116 26 116 28
-                                           , srcInfoPoints = []
-                                           }
-                                         "~>")))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 116 29 116 31
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 116 29 116 31
-                                        , srcInfoPoints = []
-                                        }
-                                      "m'"))))
-                          (TyParen
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 116 36 116 65
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 116 36 116 37
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 116 64 116 65
-                                   ]
-                               }
-                             (TyInfix
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 64
-                                  , srcInfoPoints = []
-                                  }
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 48
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyApp
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 46
-                                        , srcInfoPoints = []
-                                        }
-                                      (TyCon
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 44
-                                           , srcInfoPoints = []
-                                           }
-                                         (UnQual
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 116 37 116 44
-                                              , srcInfoPoints = []
-                                              }
-                                            (Ident
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 116 37 116 44
-                                                 , srcInfoPoints = []
-                                                 }
-                                               "ReaderT")))
-                                      (TyVar
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 116 45 116 46
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 116 45 116 46
-                                              , srcInfoPoints = []
-                                              }
-                                            "r")))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 116 47 116 48
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 116 47 116 48
-                                           , srcInfoPoints = []
-                                           }
-                                         "m")))
-                                (UnpromotedName
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 116 49 116 51
-                                     , srcInfoPoints = []
-                                     }
-                                   (UnQual
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 116 49 116 51
-                                        , srcInfoPoints = []
-                                        }
-                                      (Symbol
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 116 49 116 51
-                                           , srcInfoPoints = []
-                                           }
-                                         "~>")))
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 116 52 116 64
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyApp
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 116 52 116 61
-                                        , srcInfoPoints = []
-                                        }
-                                      (TyCon
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 116 52 116 59
-                                           , srcInfoPoints = []
-                                           }
-                                         (UnQual
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 116 52 116 59
-                                              , srcInfoPoints = []
-                                              }
-                                            (Ident
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 116 52 116 59
-                                                 , srcInfoPoints = []
-                                                 }
-                                               "ReaderT")))
-                                      (TyVar
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 116 60 116 61
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 116 60 116 61
-                                              , srcInfoPoints = []
-                                              }
-                                            "r")))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 116 62 116 64
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 116 62 116 64
-                                           , srcInfoPoints = []
-                                           }
-                                         "m'"))))))))
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 46
-                   , srcInfoPoints = []
-                   }
-                 (FunBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 46
-                      , srcInfoPoints = []
-                      }
-                    [ Match
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 46
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 8
-                             , srcInfoPoints = []
-                             }
-                           "hoist")
-                        [ PVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 117 9 117 12
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 117 9 117 12
-                                 , srcInfoPoints = []
-                                 }
-                               "nat")
-                        ]
-                        (UnGuardedRhs
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 117 13 117 46
-                             , srcInfoPoints =
-                                 [ SrcSpan "tests/examples/DerivingVia.hs" 117 13 117 14 ]
-                             }
-                           (InfixApp
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 46
-                                , srcInfoPoints = []
-                                }
-                              (Con
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 22
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 22
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 22
-                                         , srcInfoPoints = []
-                                         }
-                                       "ReaderT")))
-                              (QVarOp
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 117 23 117 24
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 117 23 117 24
-                                      , srcInfoPoints = []
-                                      }
-                                    (Symbol
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 117 23 117 24
-                                         , srcInfoPoints = []
-                                         }
-                                       ".")))
-                              (InfixApp
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 117 25 117 46
-                                   , srcInfoPoints = []
-                                   }
-                                 (App
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 117 25 117 33
-                                      , srcInfoPoints = []
-                                      }
-                                    (Var
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 117 25 117 29
-                                         , srcInfoPoints = []
-                                         }
-                                       (UnQual
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 117 25 117 29
-                                            , srcInfoPoints = []
-                                            }
-                                          (Ident
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 117 25 117 29
-                                               , srcInfoPoints = []
-                                               }
-                                             "fmap")))
-                                    (Var
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 117 30 117 33
-                                         , srcInfoPoints = []
-                                         }
-                                       (UnQual
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 117 30 117 33
-                                            , srcInfoPoints = []
-                                            }
-                                          (Ident
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 117 30 117 33
-                                               , srcInfoPoints = []
-                                               }
-                                             "nat"))))
-                                 (QVarOp
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 117 34 117 35
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 117 34 117 35
-                                         , srcInfoPoints = []
-                                         }
-                                       (Symbol
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 117 34 117 35
-                                            , srcInfoPoints = []
-                                            }
-                                          ".")))
-                                 (Var
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 117 36 117 46
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 117 36 117 46
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 117 36 117 46
-                                            , srcInfoPoints = []
-                                            }
-                                          "runReaderT"))))))
-                        Nothing
-                    ])
-             ])
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 119 1 123 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 119 1 119 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 119 40 119 45
-                , SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 123 1 123 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 39
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 39
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 18
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 18
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 18
-                           , srcInfoPoints = []
-                           }
-                         "MFunctor")))
-                (TyKind
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 119 19 119 39
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 119 19 119 20
-                         , SrcSpan "tests/examples/DerivingVia.hs" 119 29 119 31
-                         , SrcSpan "tests/examples/DerivingVia.hs" 119 38 119 39
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 28
-                        , srcInfoPoints = []
-                        }
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 26
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 26
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 26
-                                 , srcInfoPoints = []
-                                 }
-                               "StateT")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 119 27 119 28
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 119 27 119 28
-                              , srcInfoPoints = []
-                              }
-                            "s")))
-                   (TyCon
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 119 32 119 38
-                        , srcInfoPoints = []
-                        }
-                      (UnQual
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 119 32 119 38
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 119 32 119 38
-                              , srcInfoPoints = []
-                              }
-                            "MTrans"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 63
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 120 9 120 11 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 63
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 120 9 120 11 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 8
-                          , srcInfoPoints = []
-                          }
-                        "hoist"
-                    ]
-                    (TyForall
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 63
-                         , srcInfoPoints = []
-                         }
-                       Nothing
-                       (Just
-                          (CxSingle
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 22
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 120 20 120 22 ]
-                               }
-                             (ClassA
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 22
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 120 20 120 22 ]
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 17
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 17
-                                        , srcInfoPoints = []
-                                        }
-                                      "Monad"))
-                                [ TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 120 18 120 19
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 120 18 120 19
-                                         , srcInfoPoints = []
-                                         }
-                                       "m")
-                                ])))
-                       (TyFun
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 120 23 120 63
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 120 33 120 35 ]
-                            }
-                          (TyParen
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 120 23 120 32
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 120 23 120 24
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 120 31 120 32
-                                   ]
-                               }
-                             (TyInfix
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 120 24 120 31
-                                  , srcInfoPoints = []
-                                  }
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 120 24 120 25
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 120 24 120 25
-                                        , srcInfoPoints = []
-                                        }
-                                      "m"))
-                                (UnpromotedName
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 120 26 120 28
-                                     , srcInfoPoints = []
-                                     }
-                                   (UnQual
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 120 26 120 28
-                                        , srcInfoPoints = []
-                                        }
-                                      (Symbol
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 120 26 120 28
-                                           , srcInfoPoints = []
-                                           }
-                                         "~>")))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 120 29 120 31
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 120 29 120 31
-                                        , srcInfoPoints = []
-                                        }
-                                      "m'"))))
-                          (TyParen
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 120 36 120 63
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 120 36 120 37
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 120 62 120 63
-                                   ]
-                               }
-                             (TyInfix
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 62
-                                  , srcInfoPoints = []
-                                  }
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 47
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyApp
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 45
-                                        , srcInfoPoints = []
-                                        }
-                                      (TyCon
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 43
-                                           , srcInfoPoints = []
-                                           }
-                                         (UnQual
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 120 37 120 43
-                                              , srcInfoPoints = []
-                                              }
-                                            (Ident
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 120 37 120 43
-                                                 , srcInfoPoints = []
-                                                 }
-                                               "StateT")))
-                                      (TyVar
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 120 44 120 45
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 120 44 120 45
-                                              , srcInfoPoints = []
-                                              }
-                                            "s")))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 120 46 120 47
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 120 46 120 47
-                                           , srcInfoPoints = []
-                                           }
-                                         "m")))
-                                (UnpromotedName
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 120 48 120 50
-                                     , srcInfoPoints = []
-                                     }
-                                   (UnQual
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 120 48 120 50
-                                        , srcInfoPoints = []
-                                        }
-                                      (Symbol
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 120 48 120 50
-                                           , srcInfoPoints = []
-                                           }
-                                         "~>")))
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 120 51 120 62
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyApp
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 120 51 120 59
-                                        , srcInfoPoints = []
-                                        }
-                                      (TyCon
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 120 51 120 57
-                                           , srcInfoPoints = []
-                                           }
-                                         (UnQual
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 120 51 120 57
-                                              , srcInfoPoints = []
-                                              }
-                                            (Ident
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 120 51 120 57
-                                                 , srcInfoPoints = []
-                                                 }
-                                               "StateT")))
-                                      (TyVar
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 120 58 120 59
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 120 58 120 59
-                                              , srcInfoPoints = []
-                                              }
-                                            "s")))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 120 60 120 62
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 120 60 120 62
-                                           , srcInfoPoints = []
-                                           }
-                                         "m'"))))))))
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 44
-                   , srcInfoPoints = []
-                   }
-                 (FunBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 44
-                      , srcInfoPoints = []
-                      }
-                    [ Match
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 44
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 8
-                             , srcInfoPoints = []
-                             }
-                           "hoist")
-                        [ PVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 121 9 121 12
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 121 9 121 12
-                                 , srcInfoPoints = []
-                                 }
-                               "nat")
-                        ]
-                        (UnGuardedRhs
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 121 13 121 44
-                             , srcInfoPoints =
-                                 [ SrcSpan "tests/examples/DerivingVia.hs" 121 13 121 14 ]
-                             }
-                           (InfixApp
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 44
-                                , srcInfoPoints = []
-                                }
-                              (Con
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 21
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 21
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 21
-                                         , srcInfoPoints = []
-                                         }
-                                       "StateT")))
-                              (QVarOp
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 121 22 121 23
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 121 22 121 23
-                                      , srcInfoPoints = []
-                                      }
-                                    (Symbol
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 121 22 121 23
-                                         , srcInfoPoints = []
-                                         }
-                                       ".")))
-                              (InfixApp
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 121 24 121 44
-                                   , srcInfoPoints = []
-                                   }
-                                 (App
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 121 24 121 32
-                                      , srcInfoPoints = []
-                                      }
-                                    (Var
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 121 24 121 28
-                                         , srcInfoPoints = []
-                                         }
-                                       (UnQual
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 121 24 121 28
-                                            , srcInfoPoints = []
-                                            }
-                                          (Ident
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 121 24 121 28
-                                               , srcInfoPoints = []
-                                               }
-                                             "fmap")))
-                                    (Var
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 121 29 121 32
-                                         , srcInfoPoints = []
-                                         }
-                                       (UnQual
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 121 29 121 32
-                                            , srcInfoPoints = []
-                                            }
-                                          (Ident
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 121 29 121 32
-                                               , srcInfoPoints = []
-                                               }
-                                             "nat"))))
-                                 (QVarOp
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 121 33 121 34
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 121 33 121 34
-                                         , srcInfoPoints = []
-                                         }
-                                       (Symbol
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 121 33 121 34
-                                            , srcInfoPoints = []
-                                            }
-                                          ".")))
-                                 (Var
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 121 35 121 44
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 121 35 121 44
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 121 35 121 44
-                                            , srcInfoPoints = []
-                                            }
-                                          "runStateT"))))))
-                        Nothing
-                    ])
-             ])
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 123 1 127 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 123 1 123 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 123 41 123 46
-                , SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 127 1 127 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 40
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 40
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 18
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 18
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 18
-                           , srcInfoPoints = []
-                           }
-                         "MFunctor")))
-                (TyKind
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 123 19 123 40
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 123 19 123 20
-                         , SrcSpan "tests/examples/DerivingVia.hs" 123 30 123 32
-                         , SrcSpan "tests/examples/DerivingVia.hs" 123 39 123 40
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 29
-                        , srcInfoPoints = []
-                        }
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 27
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 27
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 27
-                                 , srcInfoPoints = []
-                                 }
-                               "WriterT")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 123 28 123 29
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 123 28 123 29
-                              , srcInfoPoints = []
-                              }
-                            "w")))
-                   (TyCon
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 123 33 123 39
-                        , srcInfoPoints = []
-                        }
-                      (UnQual
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 123 33 123 39
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 123 33 123 39
-                              , srcInfoPoints = []
-                              }
-                            "MTrans"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 65
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 124 9 124 11 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 65
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 124 9 124 11 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 8
-                          , srcInfoPoints = []
-                          }
-                        "hoist"
-                    ]
-                    (TyForall
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 65
-                         , srcInfoPoints = []
-                         }
-                       Nothing
-                       (Just
-                          (CxSingle
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 22
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 124 20 124 22 ]
-                               }
-                             (ClassA
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 22
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 124 20 124 22 ]
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 17
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 17
-                                        , srcInfoPoints = []
-                                        }
-                                      "Monad"))
-                                [ TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 124 18 124 19
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 124 18 124 19
-                                         , srcInfoPoints = []
-                                         }
-                                       "m")
-                                ])))
-                       (TyFun
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 124 23 124 65
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 124 33 124 35 ]
-                            }
-                          (TyParen
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 124 23 124 32
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 124 23 124 24
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 124 31 124 32
-                                   ]
-                               }
-                             (TyInfix
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 124 24 124 31
-                                  , srcInfoPoints = []
-                                  }
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 124 24 124 25
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 124 24 124 25
-                                        , srcInfoPoints = []
-                                        }
-                                      "m"))
-                                (UnpromotedName
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 124 26 124 28
-                                     , srcInfoPoints = []
-                                     }
-                                   (UnQual
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 124 26 124 28
-                                        , srcInfoPoints = []
-                                        }
-                                      (Symbol
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 124 26 124 28
-                                           , srcInfoPoints = []
-                                           }
-                                         "~>")))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 124 29 124 31
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 124 29 124 31
-                                        , srcInfoPoints = []
-                                        }
-                                      "m'"))))
-                          (TyParen
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 124 36 124 65
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 124 36 124 37
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 124 64 124 65
-                                   ]
-                               }
-                             (TyInfix
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 64
-                                  , srcInfoPoints = []
-                                  }
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 48
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyApp
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 46
-                                        , srcInfoPoints = []
-                                        }
-                                      (TyCon
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 44
-                                           , srcInfoPoints = []
-                                           }
-                                         (UnQual
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 124 37 124 44
-                                              , srcInfoPoints = []
-                                              }
-                                            (Ident
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 124 37 124 44
-                                                 , srcInfoPoints = []
-                                                 }
-                                               "WriterT")))
-                                      (TyVar
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 124 45 124 46
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 124 45 124 46
-                                              , srcInfoPoints = []
-                                              }
-                                            "w")))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 124 47 124 48
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 124 47 124 48
-                                           , srcInfoPoints = []
-                                           }
-                                         "m")))
-                                (UnpromotedName
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 124 49 124 51
-                                     , srcInfoPoints = []
-                                     }
-                                   (UnQual
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 124 49 124 51
-                                        , srcInfoPoints = []
-                                        }
-                                      (Symbol
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 124 49 124 51
-                                           , srcInfoPoints = []
-                                           }
-                                         "~>")))
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 124 52 124 64
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyApp
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 124 52 124 61
-                                        , srcInfoPoints = []
-                                        }
-                                      (TyCon
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 124 52 124 59
-                                           , srcInfoPoints = []
-                                           }
-                                         (UnQual
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 124 52 124 59
-                                              , srcInfoPoints = []
-                                              }
-                                            (Ident
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 124 52 124 59
-                                                 , srcInfoPoints = []
-                                                 }
-                                               "WriterT")))
-                                      (TyVar
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 124 60 124 61
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 124 60 124 61
-                                              , srcInfoPoints = []
-                                              }
-                                            "w")))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 124 62 124 64
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 124 62 124 64
-                                           , srcInfoPoints = []
-                                           }
-                                         "m'"))))))))
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 41
-                   , srcInfoPoints = []
-                   }
-                 (FunBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 41
-                      , srcInfoPoints = []
-                      }
-                    [ Match
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 41
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 8
-                             , srcInfoPoints = []
-                             }
-                           "hoist")
-                        [ PVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 125 9 125 12
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 125 9 125 12
-                                 , srcInfoPoints = []
-                                 }
-                               "nat")
-                        ]
-                        (UnGuardedRhs
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 125 13 125 41
-                             , srcInfoPoints =
-                                 [ SrcSpan "tests/examples/DerivingVia.hs" 125 13 125 14 ]
-                             }
-                           (InfixApp
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 41
-                                , srcInfoPoints = []
-                                }
-                              (Con
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 22
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 22
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 22
-                                         , srcInfoPoints = []
-                                         }
-                                       "WriterT")))
-                              (QVarOp
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 125 23 125 24
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 125 23 125 24
-                                      , srcInfoPoints = []
-                                      }
-                                    (Symbol
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 125 23 125 24
-                                         , srcInfoPoints = []
-                                         }
-                                       ".")))
-                              (InfixApp
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 125 25 125 41
-                                   , srcInfoPoints = []
-                                   }
-                                 (Var
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 125 25 125 28
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 125 25 125 28
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 125 25 125 28
-                                            , srcInfoPoints = []
-                                            }
-                                          "nat")))
-                                 (QVarOp
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 125 29 125 30
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 125 29 125 30
-                                         , srcInfoPoints = []
-                                         }
-                                       (Symbol
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 125 29 125 30
-                                            , srcInfoPoints = []
-                                            }
-                                          ".")))
-                                 (Var
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 125 31 125 41
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 125 31 125 41
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 125 31 125 41
-                                            , srcInfoPoints = []
-                                            }
-                                          "runWriterT"))))))
-                        Nothing
-                    ])
-             ])
-      , InfixDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 127 1 127 20
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 127 8 127 9 ]
-            }
-          (AssocRight
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 127 1 127 7
-               , srcInfoPoints = []
-               })
-          (Just 9)
-          [ ConOp
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 20
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 11
-                    , SrcSpan "tests/examples/DerivingVia.hs" 127 11 127 19
-                    , SrcSpan "tests/examples/DerivingVia.hs" 127 19 127 20
-                    ]
-                }
-              (Ident
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 20
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 11
-                       , SrcSpan "tests/examples/DerivingVia.hs" 127 11 127 19
-                       , SrcSpan "tests/examples/DerivingVia.hs" 127 19 127 20
-                       ]
-                   }
-                 "ComposeT")
-          ]
-      , GDataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 128 1 130 49
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 128 18 128 20
-                , SrcSpan "tests/examples/DerivingVia.hs" 128 48 128 53
-                , SrcSpan "tests/examples/DerivingVia.hs" 129 3 129 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 3
-                ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 128 1 128 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHead
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 128 9 128 17
-               , srcInfoPoints = []
-               }
-             (Ident
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 128 9 128 17
-                  , srcInfoPoints = []
-                  }
-                "ComposeT"))
-          (Just
-             (TyFun
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 47
-                  , srcInfoPoints =
-                      [ SrcSpan "tests/examples/DerivingVia.hs" 128 28 128 30 ]
-                  }
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 27
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 27
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 27
-                           , srcInfoPoints = []
-                           }
-                         "MTrans")))
-                (TyFun
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 47
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 128 38 128 40 ]
-                     }
-                   (TyCon
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 37
-                        , srcInfoPoints = []
-                        }
-                      (UnQual
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 37
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 37
-                              , srcInfoPoints = []
-                              }
-                            "MTrans")))
-                   (TyCon
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 128 41 128 47
-                        , srcInfoPoints = []
-                        }
-                      (UnQual
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 128 41 128 47
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 128 41 128 47
-                              , srcInfoPoints = []
-                              }
-                            "MTrans"))))))
-          [ GadtDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 129 3 129 63
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 129 12 129 14
-                    , SrcSpan "tests/examples/DerivingVia.hs" 129 15 129 16
-                    , SrcSpan "tests/examples/DerivingVia.hs" 129 42 129 43
-                    , SrcSpan "tests/examples/DerivingVia.hs" 129 44 129 46
-                    ]
-                }
-              (Ident
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 129 3 129 11
-                   , srcInfoPoints = []
-                   }
-                 "ComposeT")
-              Nothing
-              Nothing
-              (Just
-                 [ FieldDecl
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 129 17 129 41
-                       , srcInfoPoints =
-                           [ SrcSpan "tests/examples/DerivingVia.hs" 129 29 129 31 ]
-                       }
-                     [ Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 129 17 129 28
-                           , srcInfoPoints = []
-                           }
-                         "getComposeT"
-                     ]
-                     (TyApp
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 41
-                          , srcInfoPoints = []
-                          }
-                        (TyApp
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 39
-                             , srcInfoPoints = []
-                             }
-                           (TyVar
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 33
-                                , srcInfoPoints = []
-                                }
-                              (Ident
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 33
-                                   , srcInfoPoints = []
-                                   }
-                                 "f"))
-                           (TyParen
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 129 34 129 39
-                                , srcInfoPoints =
-                                    [ SrcSpan "tests/examples/DerivingVia.hs" 129 34 129 35
-                                    , SrcSpan "tests/examples/DerivingVia.hs" 129 38 129 39
-                                    ]
-                                }
-                              (TyApp
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 129 35 129 38
-                                   , srcInfoPoints = []
-                                   }
-                                 (TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 129 35 129 36
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 129 35 129 36
-                                         , srcInfoPoints = []
-                                         }
-                                       "g"))
-                                 (TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 129 37 129 38
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 129 37 129 38
-                                         , srcInfoPoints = []
-                                         }
-                                       "m")))))
-                        (TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 129 40 129 41
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 129 40 129 41
-                                , srcInfoPoints = []
-                                }
-                              "a")))
-                 ])
-              (TyApp
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 63
-                   , srcInfoPoints = []
-                   }
-                 (TyApp
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 61
-                      , srcInfoPoints = []
-                      }
-                    (TyApp
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 59
-                         , srcInfoPoints = []
-                         }
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 57
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 55
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 55
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 55
-                                     , srcInfoPoints = []
-                                     }
-                                   "ComposeT")))
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 129 56 129 57
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 129 56 129 57
-                                  , srcInfoPoints = []
-                                  }
-                                "f")))
-                       (TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 129 58 129 59
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 129 58 129 59
-                               , srcInfoPoints = []
-                               }
-                             "g")))
-                    (TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 129 60 129 61
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 129 60 129 61
-                            , srcInfoPoints = []
-                            }
-                          "m")))
-                 (TyVar
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 129 62 129 63
-                      , srcInfoPoints = []
-                      }
-                    (Ident
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 129 62 129 63
-                         , srcInfoPoints = []
-                         }
-                       "a")))
-          ]
-          [ Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 49
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 11
-                    , SrcSpan "tests/examples/DerivingVia.hs" 130 20 130 21
-                    , SrcSpan "tests/examples/DerivingVia.hs" 130 28 130 29
-                    , SrcSpan "tests/examples/DerivingVia.hs" 130 41 130 42
-                    , SrcSpan "tests/examples/DerivingVia.hs" 130 48 130 49
-                    ]
-                }
-              (Just
-                 (DerivNewtype
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 130 12 130 19
-                      , srcInfoPoints = []
-                      }))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28
-                             , srcInfoPoints = []
-                             }
-                           "Functor")))
-              , IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41
-                             , srcInfoPoints = []
-                             }
-                           "Applicative")))
-              , IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48
-                             , srcInfoPoints = []
-                             }
-                           "Monad")))
-              ]
-          ]
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 132 1 137 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 132 1 132 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 132 84 132 89
-                , SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 134 3 134 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 137 1 137 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 132 10 132 83
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxTuple
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 132 10 132 57
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 132 10 132 11
-                         , SrcSpan "tests/examples/DerivingVia.hs" 132 23 132 24
-                         , SrcSpan "tests/examples/DerivingVia.hs" 132 37 132 38
-                         , SrcSpan "tests/examples/DerivingVia.hs" 132 53 132 54
-                         , SrcSpan "tests/examples/DerivingVia.hs" 132 55 132 57
-                         ]
-                     }
-                   [ ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 23
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 21
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 21
-                               , srcInfoPoints = []
-                               }
-                             "MonadTrans"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 132 22 132 23
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 132 22 132 23
-                                , srcInfoPoints = []
-                                }
-                              "f")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 37
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 35
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 35
-                               , srcInfoPoints = []
-                               }
-                             "MonadTrans"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 132 36 132 37
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 132 36 132 37
-                                , srcInfoPoints = []
-                                }
-                              "g")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 53
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 51
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 51
-                               , srcInfoPoints = []
-                               }
-                             "LiftingMonad"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 132 52 132 53
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 132 52 132 53
-                                , srcInfoPoints = []
-                                }
-                              "g")
-                       ]
-                   ]))
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 83
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 68
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 68
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 68
-                           , srcInfoPoints = []
-                           }
-                         "MonadTrans")))
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 132 69 132 83
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 132 69 132 70
-                         , SrcSpan "tests/examples/DerivingVia.hs" 132 82 132 83
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 82
-                        , srcInfoPoints = []
-                        }
-                      (TyApp
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 80
-                           , srcInfoPoints = []
-                           }
-                         (TyCon
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 78
-                              , srcInfoPoints = []
-                              }
-                            (UnQual
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 78
-                                 , srcInfoPoints = []
-                                 }
-                               (Ident
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 78
-                                    , srcInfoPoints = []
-                                    }
-                                  "ComposeT")))
-                         (TyVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 132 79 132 80
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 132 79 132 80
-                                 , srcInfoPoints = []
-                                 }
-                               "f")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 132 81 132 82
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 132 81 132 82
-                              , srcInfoPoints = []
-                              }
-                            "g"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 51
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 133 8 133 10 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 51
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 133 8 133 10 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 7
-                          , srcInfoPoints = []
-                          }
-                        "lift"
-                    ]
-                    (TyForall
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 133 11 133 51
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 133 11 133 17
-                             , SrcSpan "tests/examples/DerivingVia.hs" 133 19 133 20
-                             ]
-                         }
-                       (Just
-                          [ UnkindedVar
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 133 18 133 19
-                                , srcInfoPoints = []
-                                }
-                              (Ident
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 133 18 133 19
-                                   , srcInfoPoints = []
-                                   }
-                                 "m")
-                          ])
-                       (Just
-                          (CxSingle
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 31
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 133 29 133 31 ]
-                               }
-                             (ClassA
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 31
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 133 29 133 31 ]
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 26
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 26
-                                        , srcInfoPoints = []
-                                        }
-                                      "Monad"))
-                                [ TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 133 27 133 28
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 133 27 133 28
-                                         , srcInfoPoints = []
-                                         }
-                                       "m")
-                                ])))
-                       (TyInfix
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 133 32 133 51
-                            , srcInfoPoints = []
-                            }
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 133 32 133 33
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 133 32 133 33
-                                  , srcInfoPoints = []
-                                  }
-                                "m"))
-                          (UnpromotedName
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 133 34 133 36
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 133 34 133 36
-                                  , srcInfoPoints = []
-                                  }
-                                (Symbol
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 133 34 133 36
-                                     , srcInfoPoints = []
-                                     }
-                                   "~>")))
-                          (TyApp
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 51
-                               , srcInfoPoints = []
-                               }
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 49
-                                  , srcInfoPoints = []
-                                  }
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 47
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyCon
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 45
-                                        , srcInfoPoints = []
-                                        }
-                                      (UnQual
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 45
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 133 37 133 45
-                                              , srcInfoPoints = []
-                                              }
-                                            "ComposeT")))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 133 46 133 47
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 133 46 133 47
-                                           , srcInfoPoints = []
-                                           }
-                                         "f")))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 133 48 133 49
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 133 48 133 49
-                                        , srcInfoPoints = []
-                                        }
-                                      "g")))
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 133 50 133 51
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 133 50 133 51
-                                     , srcInfoPoints = []
-                                     }
-                                   "m"))))))
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 134 3 135 19
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 134 3 135 19
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 134 3 134 7
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 134 3 134 7
-                            , srcInfoPoints = []
-                            }
-                          "lift"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 134 8 135 19
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 134 8 134 9 ]
-                         }
-                       (InfixApp
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 134 10 135 19
-                            , srcInfoPoints = []
-                            }
-                          (InfixApp
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 32
-                               , srcInfoPoints = []
-                               }
-                             (Con
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 18
-                                  , srcInfoPoints = []
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 18
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 18
-                                        , srcInfoPoints = []
-                                        }
-                                      "ComposeT")))
-                             (QVarOp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 134 19 134 20
-                                  , srcInfoPoints = []
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 134 19 134 20
-                                     , srcInfoPoints = []
-                                     }
-                                   (Symbol
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 134 19 134 20
-                                        , srcInfoPoints = []
-                                        }
-                                      ".")))
-                             (InfixApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 32
-                                  , srcInfoPoints = []
-                                  }
-                                (Var
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 25
-                                     , srcInfoPoints = []
-                                     }
-                                   (UnQual
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 25
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 25
-                                           , srcInfoPoints = []
-                                           }
-                                         "lift")))
-                                (QVarOp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 134 26 134 27
-                                     , srcInfoPoints = []
-                                     }
-                                   (UnQual
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 134 26 134 27
-                                        , srcInfoPoints = []
-                                        }
-                                      (Symbol
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 134 26 134 27
-                                           , srcInfoPoints = []
-                                           }
-                                         ".")))
-                                (Var
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 134 28 134 32
-                                     , srcInfoPoints = []
-                                     }
-                                   (UnQual
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 134 28 134 32
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 134 28 134 32
-                                           , srcInfoPoints = []
-                                           }
-                                         "lift")))))
-                          (QVarOp
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 135 5 135 7
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 135 5 135 7
-                                  , srcInfoPoints = []
-                                  }
-                                (Symbol
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 135 5 135 7
-                                     , srcInfoPoints = []
-                                     }
-                                   "\\\\")))
-                          (App
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 19
-                               , srcInfoPoints = []
-                               }
-                             (App
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 16
-                                  , srcInfoPoints = []
-                                  }
-                                (Var
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 13
-                                     , srcInfoPoints = []
-                                     }
-                                   (UnQual
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 13
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 13
-                                           , srcInfoPoints = []
-                                           }
-                                         "proof")))
-                                (TypeApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 135 14 135 16
-                                     , srcInfoPoints =
-                                         [ SrcSpan "tests/examples/DerivingVia.hs" 135 14 135 15 ]
-                                     }
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 135 15 135 16
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 135 15 135 16
-                                           , srcInfoPoints = []
-                                           }
-                                         "g"))))
-                             (TypeApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 135 17 135 19
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 135 17 135 18 ]
-                                  }
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 135 18 135 19
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 135 18 135 19
-                                        , srcInfoPoints = []
-                                        }
-                                      "m"))))))
-                    Nothing)
-             ])
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 137 1 146 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 137 1 137 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 137 78 137 83
-                , SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 139 3 139 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 146 1 146 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 137 10 137 77
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxTuple
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 137 10 137 53
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 137 10 137 11
-                         , SrcSpan "tests/examples/DerivingVia.hs" 137 21 137 22
-                         , SrcSpan "tests/examples/DerivingVia.hs" 137 33 137 34
-                         , SrcSpan "tests/examples/DerivingVia.hs" 137 49 137 50
-                         , SrcSpan "tests/examples/DerivingVia.hs" 137 51 137 53
-                         ]
-                     }
-                   [ ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 21
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 19
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 19
-                               , srcInfoPoints = []
-                               }
-                             "MFunctor"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 137 20 137 21
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 137 20 137 21
-                                , srcInfoPoints = []
-                                }
-                              "f")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 33
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 31
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 31
-                               , srcInfoPoints = []
-                               }
-                             "MFunctor"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 137 32 137 33
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 137 32 137 33
-                                , srcInfoPoints = []
-                                }
-                              "g")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 49
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 47
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 47
-                               , srcInfoPoints = []
-                               }
-                             "LiftingMonad"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 137 48 137 49
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 137 48 137 49
-                                , srcInfoPoints = []
-                                }
-                              "g")
-                       ]
-                   ]))
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 77
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 62
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 62
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 62
-                           , srcInfoPoints = []
-                           }
-                         "MFunctor")))
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 137 63 137 77
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 137 63 137 64
-                         , SrcSpan "tests/examples/DerivingVia.hs" 137 76 137 77
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 76
-                        , srcInfoPoints = []
-                        }
-                      (TyApp
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 74
-                           , srcInfoPoints = []
-                           }
-                         (TyCon
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 72
-                              , srcInfoPoints = []
-                              }
-                            (UnQual
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 72
-                                 , srcInfoPoints = []
-                                 }
-                               (Ident
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 72
-                                    , srcInfoPoints = []
-                                    }
-                                  "ComposeT")))
-                         (TyVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 137 73 137 74
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 137 73 137 74
-                                 , srcInfoPoints = []
-                                 }
-                               "f")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 137 75 137 76
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 137 75 137 76
-                              , srcInfoPoints = []
-                              }
-                            "g"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 84
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 138 9 138 11 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 84
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 138 9 138 11 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 8
-                          , srcInfoPoints = []
-                          }
-                        "hoist"
-                    ]
-                    (TyForall
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 138 12 138 84
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 138 12 138 18
-                             , SrcSpan "tests/examples/DerivingVia.hs" 138 23 138 24
-                             ]
-                         }
-                       (Just
-                          [ UnkindedVar
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 138 19 138 20
-                                , srcInfoPoints = []
-                                }
-                              (Ident
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 138 19 138 20
-                                   , srcInfoPoints = []
-                                   }
-                                 "m")
-                          , UnkindedVar
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 138 21 138 23
-                                , srcInfoPoints = []
-                                }
-                              (Ident
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 138 21 138 23
-                                   , srcInfoPoints = []
-                                   }
-                                 "m'")
-                          ])
-                       (Just
-                          (CxSingle
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 35
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 138 33 138 35 ]
-                               }
-                             (ClassA
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 35
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 138 33 138 35 ]
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 30
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 30
-                                        , srcInfoPoints = []
-                                        }
-                                      "Monad"))
-                                [ TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 138 31 138 32
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 138 31 138 32
-                                         , srcInfoPoints = []
-                                         }
-                                       "m")
-                                ])))
-                       (TyFun
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 138 36 138 84
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 138 46 138 48 ]
-                            }
-                          (TyParen
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 138 36 138 45
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 138 36 138 37
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 138 44 138 45
-                                   ]
-                               }
-                             (TyInfix
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 138 37 138 44
-                                  , srcInfoPoints = []
-                                  }
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 138 37 138 38
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 138 37 138 38
-                                        , srcInfoPoints = []
-                                        }
-                                      "m"))
-                                (UnpromotedName
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 138 39 138 41
-                                     , srcInfoPoints = []
-                                     }
-                                   (UnQual
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 138 39 138 41
-                                        , srcInfoPoints = []
-                                        }
-                                      (Symbol
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 138 39 138 41
-                                           , srcInfoPoints = []
-                                           }
-                                         "~>")))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 138 42 138 44
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 138 42 138 44
-                                        , srcInfoPoints = []
-                                        }
-                                      "m'"))))
-                          (TyParen
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 138 49 138 84
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 138 49 138 50
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 138 83 138 84
-                                   ]
-                               }
-                             (TyInfix
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 83
-                                  , srcInfoPoints = []
-                                  }
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 64
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyApp
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 62
-                                        , srcInfoPoints = []
-                                        }
-                                      (TyApp
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 60
-                                           , srcInfoPoints = []
-                                           }
-                                         (TyCon
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 138 50 138 58
-                                              , srcInfoPoints = []
-                                              }
-                                            (UnQual
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 138 50 138 58
-                                                 , srcInfoPoints = []
-                                                 }
-                                               (Ident
-                                                  SrcSpanInfo
-                                                    { srcInfoSpan =
-                                                        SrcSpan
-                                                          "tests/examples/DerivingVia.hs"
-                                                          138
-                                                          50
-                                                          138
-                                                          58
-                                                    , srcInfoPoints = []
-                                                    }
-                                                  "ComposeT")))
-                                         (TyVar
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 138 59 138 60
-                                              , srcInfoPoints = []
-                                              }
-                                            (Ident
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 138 59 138 60
-                                                 , srcInfoPoints = []
-                                                 }
-                                               "f")))
-                                      (TyVar
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 138 61 138 62
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 138 61 138 62
-                                              , srcInfoPoints = []
-                                              }
-                                            "g")))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 138 63 138 64
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 138 63 138 64
-                                           , srcInfoPoints = []
-                                           }
-                                         "m")))
-                                (UnpromotedName
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 138 65 138 67
-                                     , srcInfoPoints = []
-                                     }
-                                   (UnQual
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 138 65 138 67
-                                        , srcInfoPoints = []
-                                        }
-                                      (Symbol
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 138 65 138 67
-                                           , srcInfoPoints = []
-                                           }
-                                         "~>")))
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 138 68 138 83
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyApp
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 138 68 138 80
-                                        , srcInfoPoints = []
-                                        }
-                                      (TyApp
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 138 68 138 78
-                                           , srcInfoPoints = []
-                                           }
-                                         (TyCon
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 138 68 138 76
-                                              , srcInfoPoints = []
-                                              }
-                                            (UnQual
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 138 68 138 76
-                                                 , srcInfoPoints = []
-                                                 }
-                                               (Ident
-                                                  SrcSpanInfo
-                                                    { srcInfoSpan =
-                                                        SrcSpan
-                                                          "tests/examples/DerivingVia.hs"
-                                                          138
-                                                          68
-                                                          138
-                                                          76
-                                                    , srcInfoPoints = []
-                                                    }
-                                                  "ComposeT")))
-                                         (TyVar
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 138 77 138 78
-                                              , srcInfoPoints = []
-                                              }
-                                            (Ident
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 138 77 138 78
-                                                 , srcInfoPoints = []
-                                                 }
-                                               "f")))
-                                      (TyVar
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 138 79 138 80
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 138 79 138 80
-                                              , srcInfoPoints = []
-                                              }
-                                            "g")))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 138 81 138 83
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 138 81 138 83
-                                           , srcInfoPoints = []
-                                           }
-                                         "m'"))))))))
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 139 3 140 19
-                   , srcInfoPoints = []
-                   }
-                 (FunBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 139 3 140 19
-                      , srcInfoPoints = []
-                      }
-                    [ Match
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 139 3 140 19
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 139 3 139 8
-                             , srcInfoPoints = []
-                             }
-                           "hoist")
-                        [ PVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 139 9 139 10
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 139 9 139 10
-                                 , srcInfoPoints = []
-                                 }
-                               "f")
-                        ]
-                        (UnGuardedRhs
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 139 11 140 19
-                             , srcInfoPoints =
-                                 [ SrcSpan "tests/examples/DerivingVia.hs" 139 11 139 12 ]
-                             }
-                           (InfixApp
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 139 13 140 19
-                                , srcInfoPoints = []
-                                }
-                              (InfixApp
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 139 13 139 53
-                                   , srcInfoPoints = []
-                                   }
-                                 (Con
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 139 13 139 21
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 139 13 139 21
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 139 13 139 21
-                                            , srcInfoPoints = []
-                                            }
-                                          "ComposeT")))
-                                 (QVarOp
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 139 22 139 23
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 139 22 139 23
-                                         , srcInfoPoints = []
-                                         }
-                                       (Symbol
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 139 22 139 23
-                                            , srcInfoPoints = []
-                                            }
-                                          ".")))
-                                 (InfixApp
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 139 24 139 53
-                                      , srcInfoPoints = []
-                                      }
-                                    (App
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 139 24 139 39
-                                         , srcInfoPoints = []
-                                         }
-                                       (Var
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 139 24 139 29
-                                            , srcInfoPoints = []
-                                            }
-                                          (UnQual
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 139 24 139 29
-                                               , srcInfoPoints = []
-                                               }
-                                             (Ident
-                                                SrcSpanInfo
-                                                  { srcInfoSpan =
-                                                      SrcSpan
-                                                        "tests/examples/DerivingVia.hs"
-                                                        139
-                                                        24
-                                                        139
-                                                        29
-                                                  , srcInfoPoints = []
-                                                  }
-                                                "hoist")))
-                                       (Paren
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 139 30 139 39
-                                            , srcInfoPoints =
-                                                [ SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 139 30 139 31
-                                                , SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 139 38 139 39
-                                                ]
-                                            }
-                                          (App
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 139 31 139 38
-                                               , srcInfoPoints = []
-                                               }
-                                             (Var
-                                                SrcSpanInfo
-                                                  { srcInfoSpan =
-                                                      SrcSpan
-                                                        "tests/examples/DerivingVia.hs"
-                                                        139
-                                                        31
-                                                        139
-                                                        36
-                                                  , srcInfoPoints = []
-                                                  }
-                                                (UnQual
-                                                   SrcSpanInfo
-                                                     { srcInfoSpan =
-                                                         SrcSpan
-                                                           "tests/examples/DerivingVia.hs"
-                                                           139
-                                                           31
-                                                           139
-                                                           36
-                                                     , srcInfoPoints = []
-                                                     }
-                                                   (Ident
-                                                      SrcSpanInfo
-                                                        { srcInfoSpan =
-                                                            SrcSpan
-                                                              "tests/examples/DerivingVia.hs"
-                                                              139
-                                                              31
-                                                              139
-                                                              36
-                                                        , srcInfoPoints = []
-                                                        }
-                                                      "hoist")))
-                                             (Var
-                                                SrcSpanInfo
-                                                  { srcInfoSpan =
-                                                      SrcSpan
-                                                        "tests/examples/DerivingVia.hs"
-                                                        139
-                                                        37
-                                                        139
-                                                        38
-                                                  , srcInfoPoints = []
-                                                  }
-                                                (UnQual
-                                                   SrcSpanInfo
-                                                     { srcInfoSpan =
-                                                         SrcSpan
-                                                           "tests/examples/DerivingVia.hs"
-                                                           139
-                                                           37
-                                                           139
-                                                           38
-                                                     , srcInfoPoints = []
-                                                     }
-                                                   (Ident
-                                                      SrcSpanInfo
-                                                        { srcInfoSpan =
-                                                            SrcSpan
-                                                              "tests/examples/DerivingVia.hs"
-                                                              139
-                                                              37
-                                                              139
-                                                              38
-                                                        , srcInfoPoints = []
-                                                        }
-                                                      "f"))))))
-                                    (QVarOp
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 139 40 139 41
-                                         , srcInfoPoints = []
-                                         }
-                                       (UnQual
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 139 40 139 41
-                                            , srcInfoPoints = []
-                                            }
-                                          (Symbol
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 139 40 139 41
-                                               , srcInfoPoints = []
-                                               }
-                                             ".")))
-                                    (Var
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 139 42 139 53
-                                         , srcInfoPoints = []
-                                         }
-                                       (UnQual
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 139 42 139 53
-                                            , srcInfoPoints = []
-                                            }
-                                          (Ident
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 139 42 139 53
-                                               , srcInfoPoints = []
-                                               }
-                                             "getComposeT")))))
-                              (QVarOp
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 140 5 140 7
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 140 5 140 7
-                                      , srcInfoPoints = []
-                                      }
-                                    (Symbol
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 140 5 140 7
-                                         , srcInfoPoints = []
-                                         }
-                                       "\\\\")))
-                              (App
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 19
-                                   , srcInfoPoints = []
-                                   }
-                                 (App
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 16
-                                      , srcInfoPoints = []
-                                      }
-                                    (Var
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 13
-                                         , srcInfoPoints = []
-                                         }
-                                       (UnQual
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 13
-                                            , srcInfoPoints = []
-                                            }
-                                          (Ident
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 140 8 140 13
-                                               , srcInfoPoints = []
-                                               }
-                                             "proof")))
-                                    (TypeApp
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 140 14 140 16
-                                         , srcInfoPoints =
-                                             [ SrcSpan "tests/examples/DerivingVia.hs" 140 14 140 15
-                                             ]
-                                         }
-                                       (TyVar
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 140 15 140 16
-                                            , srcInfoPoints = []
-                                            }
-                                          (Ident
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 140 15 140 16
-                                               , srcInfoPoints = []
-                                               }
-                                             "g"))))
-                                 (TypeApp
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 140 17 140 19
-                                      , srcInfoPoints =
-                                          [ SrcSpan "tests/examples/DerivingVia.hs" 140 17 140 18 ]
-                                      }
-                                    (TyVar
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 140 18 140 19
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 140 18 140 19
-                                            , srcInfoPoints = []
-                                            }
-                                          "m"))))))
-                        Nothing
-                    ])
-             ])
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 146 1 150 22
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 146 13 146 14 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 146 1 146 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 146 9 146 12
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 146 9 146 10
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 146 9 146 10
-                     , srcInfoPoints = []
-                     }
-                   "X"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 146 11 146 12
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 146 11 146 12
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 146 15 146 23
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 146 15 146 23
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 146 15 146 16
-                      , srcInfoPoints = []
-                      }
-                    "X")
-                 [ TyTuple
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 146 17 146 23
-                       , srcInfoPoints =
-                           [ SrcSpan "tests/examples/DerivingVia.hs" 146 17 146 18
-                           , SrcSpan "tests/examples/DerivingVia.hs" 146 19 146 20
-                           , SrcSpan "tests/examples/DerivingVia.hs" 146 22 146 23
-                           ]
-                       }
-                     Boxed
-                     [ TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 146 18 146 19
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 146 18 146 19
-                              , srcInfoPoints = []
-                              }
-                            "a")
-                     , TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 146 21 146 22
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 146 21 146 22
-                              , srcInfoPoints = []
-                              }
-                            "a")
-                     ]
-                 ])
-          ]
-          [ Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 147 3 147 31
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 147 3 147 11
-                    , SrcSpan "tests/examples/DerivingVia.hs" 147 12 147 13
-                    , SrcSpan "tests/examples/DerivingVia.hs" 147 22 147 23
-                    , SrcSpan "tests/examples/DerivingVia.hs" 147 30 147 31
-                    ]
-                }
-              (Just
-                 (DerivVia
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 148 8 148 11
-                      , srcInfoPoints = []
-                      }
-                    (TyTuple
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 148 12 148 30
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 148 12 148 13
-                             , SrcSpan "tests/examples/DerivingVia.hs" 148 22 148 23
-                             , SrcSpan "tests/examples/DerivingVia.hs" 148 29 148 30
-                             ]
-                         }
-                       Boxed
-                       [ TyApp
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 22
-                             , srcInfoPoints = []
-                             }
-                           (TyCon
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 20
-                                , srcInfoPoints = []
-                                }
-                              (UnQual
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 20
-                                   , srcInfoPoints = []
-                                   }
-                                 (Ident
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 20
-                                      , srcInfoPoints = []
-                                      }
-                                    "Product")))
-                           (TyVar
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 148 21 148 22
-                                , srcInfoPoints = []
-                                }
-                              (Ident
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 148 21 148 22
-                                   , srcInfoPoints = []
-                                   }
-                                 "a"))
-                       , TyApp
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 29
-                             , srcInfoPoints = []
-                             }
-                           (TyCon
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 27
-                                , srcInfoPoints = []
-                                }
-                              (UnQual
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 27
-                                   , srcInfoPoints = []
-                                   }
-                                 (Ident
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 27
-                                      , srcInfoPoints = []
-                                      }
-                                    "Sum")))
-                           (TyVar
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 148 28 148 29
-                                , srcInfoPoints = []
-                                }
-                              (Ident
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 148 28 148 29
-                                   , srcInfoPoints = []
-                                   }
-                                 "a"))
-                       ])))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22
-                             , srcInfoPoints = []
-                             }
-                           "Semigroup")))
-              , IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30
-                             , srcInfoPoints = []
-                             }
-                           "Monoid")))
-              ]
-          , Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 150 3 150 22
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 150 3 150 11
-                    , SrcSpan "tests/examples/DerivingVia.hs" 150 12 150 13
-                    , SrcSpan "tests/examples/DerivingVia.hs" 150 17 150 18
-                    , SrcSpan "tests/examples/DerivingVia.hs" 150 21 150 22
-                    ]
-                }
-              (Just
-                 (DerivVia
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 151 8 151 11
-                      , srcInfoPoints = []
-                      }
-                    (TyTuple
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 151 12 151 18
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 151 12 151 13
-                             , SrcSpan "tests/examples/DerivingVia.hs" 151 14 151 15
-                             , SrcSpan "tests/examples/DerivingVia.hs" 151 17 151 18
-                             ]
-                         }
-                       Boxed
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 151 13 151 14
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 151 13 151 14
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 151 16 151 17
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 151 16 151 17
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ])))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17
-                             , srcInfoPoints = []
-                             }
-                           "Show")))
-              , IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21
-                             , srcInfoPoints = []
-                             }
-                           "Eq")))
-              ]
-          ]
-      , ClassDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 157 1 158 18
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 157 1 157 6
-                , SrcSpan "tests/examples/DerivingVia.hs" 157 11 157 16
-                , SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 160 1 160 0
-                ]
-            }
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 157 7 157 10
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 157 7 157 8
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 157 7 157 8
-                     , srcInfoPoints = []
-                     }
-                   "C"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 157 9 157 10
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 157 9 157 10
-                     , srcInfoPoints = []
-                     }
-                   "f")))
-          []
-          (Just
-             [ ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 18
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 158 5 158 7 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 18
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 158 5 158 7 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 4
-                          , srcInfoPoints = []
-                          }
-                        "c"
-                    ]
-                    (TyFun
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 18
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 158 12 158 14 ]
-                         }
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 11
-                            , srcInfoPoints = []
-                            }
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 9
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 9
-                                  , srcInfoPoints = []
-                                  }
-                                "f"))
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 158 10 158 11
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 158 10 158 11
-                                  , srcInfoPoints = []
-                                  }
-                                "a")))
-                       (TyCon
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 158 15 158 18
-                            , srcInfoPoints = []
-                            }
-                          (UnQual
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 158 15 158 18
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 158 15 158 18
-                                  , srcInfoPoints = []
-                                  }
-                                "Int")))))
-             ])
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 160 1 160 26
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 160 16 160 17 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 160 1 160 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 15
-               , srcInfoPoints = []
-               }
-             (DHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 13
-                  , srcInfoPoints = []
-                  }
-                (DHead
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 11
-                     , srcInfoPoints = []
-                     }
-                   (Ident
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 11
-                        , srcInfoPoints = []
-                        }
-                      "X2"))
-                (UnkindedVar
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 160 12 160 13
-                     , srcInfoPoints = []
-                     }
-                   (Ident
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 160 12 160 13
-                        , srcInfoPoints = []
-                        }
-                      "f")))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 160 14 160 15
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 160 14 160 15
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 160 18 160 26
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 160 18 160 26
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 160 18 160 20
-                      , srcInfoPoints = []
-                      }
-                    "X2")
-                 [ TyParen
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 160 21 160 26
-                       , srcInfoPoints =
-                           [ SrcSpan "tests/examples/DerivingVia.hs" 160 21 160 22
-                           , SrcSpan "tests/examples/DerivingVia.hs" 160 25 160 26
-                           ]
-                       }
-                     (TyApp
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 160 22 160 25
-                          , srcInfoPoints = []
-                          }
-                        (TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 160 22 160 23
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 160 22 160 23
-                                , srcInfoPoints = []
-                                }
-                              "f"))
-                        (TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 160 24 160 25
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 160 24 160 25
-                                , srcInfoPoints = []
-                                }
-                              "a")))
-                 ])
-          ]
-          []
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 162 1 165 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 162 1 162 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 162 19 162 24
-                , SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 165 1 165 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 18
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 18
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 11
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 11
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 11
-                           , srcInfoPoints = []
-                           }
-                         "C")))
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 162 12 162 18
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 162 12 162 13
-                         , SrcSpan "tests/examples/DerivingVia.hs" 162 17 162 18
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 17
-                        , srcInfoPoints = []
-                        }
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 15
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 15
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 15
-                                 , srcInfoPoints = []
-                                 }
-                               "X2")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 162 16 162 17
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 162 16 162 17
-                              , srcInfoPoints = []
-                              }
-                            "f"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 14
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 14
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 4
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 4
-                            , srcInfoPoints = []
-                            }
-                          "c"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 163 5 163 14
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 163 5 163 6 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 14
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 12
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 12
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 12
-                                     , srcInfoPoints = []
-                                     }
-                                   "const")))
-                          (Lit
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 163 13 163 14
-                               , srcInfoPoints = []
-                               }
-                             (Int
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 163 13 163 14
-                                  , srcInfoPoints = []
-                                  }
-                                0
-                                "0"))))
-                    Nothing)
-             ])
-      , DerivDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 165 1 165 35
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 165 1 165 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 165 22 165 30
-                ]
-            }
-          (Just
-             (DerivVia
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 165 10 165 13
-                  , srcInfoPoints = []
-                  }
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 165 14 165 21
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 165 14 165 15
-                         , SrcSpan "tests/examples/DerivingVia.hs" 165 20 165 21
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 20
-                        , srcInfoPoints = []
-                        }
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 17
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 17
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 17
-                                 , srcInfoPoints = []
-                                 }
-                               "X2")))
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 165 18 165 20
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 165 18 165 20
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 165 18 165 20
-                                 , srcInfoPoints = []
-                                 }
-                               "IO")))))))
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 35
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 35
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 32
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 32
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 32
-                           , srcInfoPoints = []
-                           }
-                         "C")))
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 165 33 165 35
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 165 33 165 35
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 165 33 165 35
-                           , srcInfoPoints = []
-                           }
-                         "IO")))))
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 171 1 171 46
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 171 14 171 15 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 171 1 171 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 171 9 171 13
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 171 9 171 11
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 171 9 171 11
-                     , srcInfoPoints = []
-                     }
-                   "P0"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 171 12 171 13
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 171 12 171 13
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 171 16 171 20
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 171 16 171 20
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 171 16 171 18
-                      , srcInfoPoints = []
-                      }
-                    "P0")
-                 [ TyVar
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 171 19 171 20
-                       , srcInfoPoints = []
-                       }
-                     (Ident
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 171 19 171 20
-                          , srcInfoPoints = []
-                          }
-                        "a")
-                 ])
-          ]
-          [ Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 171 33 171 46
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 171 33 171 41 ]
-                }
-              (Just
-                 (DerivVia
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 171 47 171 50
-                      , srcInfoPoints = []
-                      }
-                    (TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 171 51 171 52
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 171 51 171 52
-                            , srcInfoPoints = []
-                            }
-                          "a"))))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46
-                             , srcInfoPoints = []
-                             }
-                           "Show")))
-              ]
-          ]
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 172 1 172 46
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 172 14 172 15 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 172 1 172 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 172 9 172 13
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 172 9 172 11
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 172 9 172 11
-                     , srcInfoPoints = []
-                     }
-                   "P1"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 172 12 172 13
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 172 12 172 13
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 172 16 172 22
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 172 16 172 22
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 172 16 172 18
-                      , srcInfoPoints = []
-                      }
-                    "P1")
-                 [ TyList
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 172 19 172 22
-                       , srcInfoPoints =
-                           [ SrcSpan "tests/examples/DerivingVia.hs" 172 19 172 20
-                           , SrcSpan "tests/examples/DerivingVia.hs" 172 21 172 22
-                           ]
-                       }
-                     (TyVar
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 172 20 172 21
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 172 20 172 21
-                             , srcInfoPoints = []
-                             }
-                           "a"))
-                 ])
-          ]
-          [ Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 172 33 172 46
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 172 33 172 41 ]
-                }
-              (Just
-                 (DerivVia
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 172 47 172 50
-                      , srcInfoPoints = []
-                      }
-                    (TyList
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 172 51 172 54
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 172 51 172 52
-                             , SrcSpan "tests/examples/DerivingVia.hs" 172 53 172 54
-                             ]
-                         }
-                       (TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 172 52 172 53
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 172 52 172 53
-                               , srcInfoPoints = []
-                               }
-                             "a")))))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46
-                             , srcInfoPoints = []
-                             }
-                           "Show")))
-              ]
-          ]
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 173 1 173 46
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 173 14 173 15 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 173 1 173 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 173 9 173 13
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 173 9 173 11
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 173 9 173 11
-                     , srcInfoPoints = []
-                     }
-                   "P2"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 173 12 173 13
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 173 12 173 13
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 173 16 173 25
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 173 16 173 25
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 173 16 173 18
-                      , srcInfoPoints = []
-                      }
-                    "P2")
-                 [ TyTuple
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 173 19 173 25
-                       , srcInfoPoints =
-                           [ SrcSpan "tests/examples/DerivingVia.hs" 173 19 173 20
-                           , SrcSpan "tests/examples/DerivingVia.hs" 173 21 173 22
-                           , SrcSpan "tests/examples/DerivingVia.hs" 173 24 173 25
-                           ]
-                       }
-                     Boxed
-                     [ TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 173 20 173 21
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 173 20 173 21
-                              , srcInfoPoints = []
-                              }
-                            "a")
-                     , TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 173 23 173 24
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 173 23 173 24
-                              , srcInfoPoints = []
-                              }
-                            "a")
-                     ]
-                 ])
-          ]
-          [ Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 173 33 173 46
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 173 33 173 41 ]
-                }
-              (Just
-                 (DerivVia
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 173 47 173 50
-                      , srcInfoPoints = []
-                      }
-                    (TyTuple
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 173 51 173 57
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 173 51 173 52
-                             , SrcSpan "tests/examples/DerivingVia.hs" 173 53 173 54
-                             , SrcSpan "tests/examples/DerivingVia.hs" 173 56 173 57
-                             ]
-                         }
-                       Boxed
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 173 52 173 53
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 173 52 173 53
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 173 55 173 56
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 173 55 173 56
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ])))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46
-                             , srcInfoPoints = []
-                             }
-                           "Show")))
-              ]
-          ]
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 174 1 174 46
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 174 14 174 15 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 174 1 174 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 174 9 174 13
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 174 9 174 11
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 174 9 174 11
-                     , srcInfoPoints = []
-                     }
-                   "P3"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 174 12 174 13
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 174 12 174 13
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 174 16 174 28
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 174 16 174 28
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 174 16 174 18
-                      , srcInfoPoints = []
-                      }
-                    "P3")
-                 [ TyParen
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 174 19 174 28
-                       , srcInfoPoints =
-                           [ SrcSpan "tests/examples/DerivingVia.hs" 174 19 174 20
-                           , SrcSpan "tests/examples/DerivingVia.hs" 174 27 174 28
-                           ]
-                       }
-                     (TyApp
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 27
-                          , srcInfoPoints = []
-                          }
-                        (TyCon
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 25
-                             , srcInfoPoints = []
-                             }
-                           (UnQual
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 25
-                                , srcInfoPoints = []
-                                }
-                              (Ident
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 25
-                                   , srcInfoPoints = []
-                                   }
-                                 "Maybe")))
-                        (TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 174 26 174 27
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 174 26 174 27
-                                , srcInfoPoints = []
-                                }
-                              "a")))
-                 ])
-          ]
-          [ Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 174 33 174 46
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 174 33 174 41 ]
-                }
-              (Just
-                 (DerivVia
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 174 47 174 50
-                      , srcInfoPoints = []
-                      }
-                    (TyParen
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 174 51 174 60
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 174 51 174 52
-                             , SrcSpan "tests/examples/DerivingVia.hs" 174 59 174 60
-                             ]
-                         }
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 59
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 57
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 57
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 57
-                                     , srcInfoPoints = []
-                                     }
-                                   "First")))
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 174 58 174 59
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 174 58 174 59
-                                  , srcInfoPoints = []
-                                  }
-                                "a"))))))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46
-                             , srcInfoPoints = []
-                             }
-                           "Show")))
-              ]
-          ]
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 175 1 175 46
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 175 14 175 15 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 175 1 175 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 175 9 175 13
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 175 9 175 11
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 175 9 175 11
-                     , srcInfoPoints = []
-                     }
-                   "P4"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 175 12 175 13
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 175 12 175 13
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 175 16 175 28
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 175 16 175 28
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 175 16 175 18
-                      , srcInfoPoints = []
-                      }
-                    "P4")
-                 [ TyParen
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 175 19 175 28
-                       , srcInfoPoints =
-                           [ SrcSpan "tests/examples/DerivingVia.hs" 175 19 175 20
-                           , SrcSpan "tests/examples/DerivingVia.hs" 175 27 175 28
-                           ]
-                       }
-                     (TyApp
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 27
-                          , srcInfoPoints = []
-                          }
-                        (TyCon
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 25
-                             , srcInfoPoints = []
-                             }
-                           (UnQual
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 25
-                                , srcInfoPoints = []
-                                }
-                              (Ident
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 25
-                                   , srcInfoPoints = []
-                                   }
-                                 "Maybe")))
-                        (TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 175 26 175 27
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 175 26 175 27
-                                , srcInfoPoints = []
-                                }
-                              "a")))
-                 ])
-          ]
-          [ Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 175 33 175 46
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 175 33 175 41 ]
-                }
-              (Just
-                 (DerivVia
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 175 47 175 50
-                      , srcInfoPoints = []
-                      }
-                    (TyParen
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 175 51 175 62
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 175 51 175 52
-                             , SrcSpan "tests/examples/DerivingVia.hs" 175 61 175 62
-                             ]
-                         }
-                       (TyInfix
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 61
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 57
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 57
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 57
-                                     , srcInfoPoints = []
-                                     }
-                                   "First")))
-                          (UnpromotedName
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 175 58 175 59
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 175 58 175 59
-                                  , srcInfoPoints = []
-                                  }
-                                (Symbol
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 175 58 175 59
-                                     , srcInfoPoints = []
-                                     }
-                                   "$")))
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 175 60 175 61
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 175 60 175 61
-                                  , srcInfoPoints = []
-                                  }
-                                "a"))))))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46
-                             , srcInfoPoints = []
-                             }
-                           "Show")))
-              ]
-          ]
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 176 1 176 46
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 176 14 176 15 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 176 1 176 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 176 9 176 13
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 176 9 176 11
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 176 9 176 11
-                     , srcInfoPoints = []
-                     }
-                   "P5"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 176 12 176 13
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 176 12 176 13
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 176 16 176 20
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 176 16 176 20
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 176 16 176 18
-                      , srcInfoPoints = []
-                      }
-                    "P5")
-                 [ TyVar
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 176 19 176 20
-                       , srcInfoPoints = []
-                       }
-                     (Ident
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 176 19 176 20
-                          , srcInfoPoints = []
-                          }
-                        "a")
-                 ])
-          ]
-          [ Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 176 33 176 46
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 176 33 176 41 ]
-                }
-              (Just
-                 (DerivVia
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 176 47 176 50
-                      , srcInfoPoints = []
-                      }
-                    (TyParen
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 176 51 176 65
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 176 51 176 52
-                             , SrcSpan "tests/examples/DerivingVia.hs" 176 64 176 65
-                             ]
-                         }
-                       (TyInfix
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 64
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 60
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 60
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 60
-                                     , srcInfoPoints = []
-                                     }
-                                   "Identity")))
-                          (UnpromotedName
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 176 61 176 62
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 176 61 176 62
-                                  , srcInfoPoints = []
-                                  }
-                                (Symbol
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 176 61 176 62
-                                     , srcInfoPoints = []
-                                     }
-                                   "$")))
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 176 63 176 64
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 176 63 176 64
-                                  , srcInfoPoints = []
-                                  }
-                                "a"))))))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46
-                             , srcInfoPoints = []
-                             }
-                           "Show")))
-              ]
-          ]
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 177 1 177 46
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 177 14 177 15 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 177 1 177 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 177 9 177 13
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 177 9 177 11
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 177 9 177 11
-                     , srcInfoPoints = []
-                     }
-                   "P6"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 177 12 177 13
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 177 12 177 13
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 177 16 177 22
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 177 16 177 22
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 177 16 177 18
-                      , srcInfoPoints = []
-                      }
-                    "P6")
-                 [ TyList
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 177 19 177 22
-                       , srcInfoPoints =
-                           [ SrcSpan "tests/examples/DerivingVia.hs" 177 19 177 20
-                           , SrcSpan "tests/examples/DerivingVia.hs" 177 21 177 22
-                           ]
-                       }
-                     (TyVar
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 177 20 177 21
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 177 20 177 21
-                             , srcInfoPoints = []
-                             }
-                           "a"))
-                 ])
-          ]
-          [ Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 177 33 177 46
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 177 33 177 41 ]
-                }
-              (Just
-                 (DerivVia
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 177 47 177 50
-                      , srcInfoPoints = []
-                      }
-                    (TyParen
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 177 51 177 59
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 177 51 177 52
-                             , SrcSpan "tests/examples/DerivingVia.hs" 177 58 177 59
-                             ]
-                         }
-                       (TyInfix
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 58
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 54
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 53
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 177 53 177 54
-                                   ]
-                               }
-                             (Special
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 54
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 53
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 177 53 177 54
-                                      ]
-                                  }
-                                (ListCon
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 54
-                                     , srcInfoPoints =
-                                         [ SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 53
-                                         , SrcSpan "tests/examples/DerivingVia.hs" 177 53 177 54
-                                         ]
-                                     })))
-                          (UnpromotedName
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 177 55 177 56
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 177 55 177 56
-                                  , srcInfoPoints = []
-                                  }
-                                (Symbol
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 177 55 177 56
-                                     , srcInfoPoints = []
-                                     }
-                                   "$")))
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 177 57 177 58
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 177 57 177 58
-                                  , srcInfoPoints = []
-                                  }
-                                "a"))))))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46
-                             , srcInfoPoints = []
-                             }
-                           "Show")))
-              ]
-          ]
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 178 1 178 46
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 178 14 178 15 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 178 1 178 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 178 9 178 13
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 178 9 178 11
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 178 9 178 11
-                     , srcInfoPoints = []
-                     }
-                   "P7"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 178 12 178 13
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 178 12 178 13
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 178 16 178 25
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 178 16 178 25
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 178 16 178 18
-                      , srcInfoPoints = []
-                      }
-                    "P7")
-                 [ TyTuple
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 178 19 178 25
-                       , srcInfoPoints =
-                           [ SrcSpan "tests/examples/DerivingVia.hs" 178 19 178 20
-                           , SrcSpan "tests/examples/DerivingVia.hs" 178 21 178 22
-                           , SrcSpan "tests/examples/DerivingVia.hs" 178 24 178 25
-                           ]
-                       }
-                     Boxed
-                     [ TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 178 20 178 21
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 178 20 178 21
-                              , srcInfoPoints = []
-                              }
-                            "a")
-                     , TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 178 23 178 24
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 178 23 178 24
-                              , srcInfoPoints = []
-                              }
-                            "a")
-                     ]
-                 ])
-          ]
-          [ Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 178 33 178 46
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 178 33 178 41 ]
-                }
-              (Just
-                 (DerivVia
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 178 47 178 50
-                      , srcInfoPoints = []
-                      }
-                    (TyParen
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 178 51 178 70
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 178 51 178 52
-                             , SrcSpan "tests/examples/DerivingVia.hs" 178 69 178 70
-                             ]
-                         }
-                       (TyInfix
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 69
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 60
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 60
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 60
-                                     , srcInfoPoints = []
-                                     }
-                                   "Identity")))
-                          (UnpromotedName
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 178 61 178 62
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 178 61 178 62
-                                  , srcInfoPoints = []
-                                  }
-                                (Symbol
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 178 61 178 62
-                                     , srcInfoPoints = []
-                                     }
-                                   "$")))
-                          (TyTuple
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 178 63 178 69
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 178 63 178 64
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 178 65 178 66
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 178 68 178 69
-                                   ]
-                               }
-                             Boxed
-                             [ TyVar
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 178 64 178 65
-                                   , srcInfoPoints = []
-                                   }
-                                 (Ident
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 178 64 178 65
-                                      , srcInfoPoints = []
-                                      }
-                                    "a")
-                             , TyVar
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 178 67 178 68
-                                   , srcInfoPoints = []
-                                   }
-                                 (Ident
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 178 67 178 68
-                                      , srcInfoPoints = []
-                                      }
-                                    "a")
-                             ])))))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46
-                             , srcInfoPoints = []
-                             }
-                           "Show")))
-              ]
-          ]
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 179 1 179 49
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 179 14 179 15 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 179 1 179 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 179 9 179 13
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 179 9 179 11
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 179 9 179 11
-                     , srcInfoPoints = []
-                     }
-                   "P8"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 179 12 179 13
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 179 12 179 13
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 179 16 179 32
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 179 16 179 32
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 179 16 179 18
-                      , srcInfoPoints = []
-                      }
-                    "P8")
-                 [ TyParen
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 179 19 179 32
-                       , srcInfoPoints =
-                           [ SrcSpan "tests/examples/DerivingVia.hs" 179 19 179 20
-                           , SrcSpan "tests/examples/DerivingVia.hs" 179 31 179 32
-                           ]
-                       }
-                     (TyApp
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 31
-                          , srcInfoPoints = []
-                          }
-                        (TyApp
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 29
-                             , srcInfoPoints = []
-                             }
-                           (TyCon
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 26
-                                , srcInfoPoints = []
-                                }
-                              (UnQual
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 26
-                                   , srcInfoPoints = []
-                                   }
-                                 (Ident
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 26
-                                      , srcInfoPoints = []
-                                      }
-                                    "Either")))
-                           (TyCon
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 29
-                                , srcInfoPoints =
-                                    [ SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 28
-                                    , SrcSpan "tests/examples/DerivingVia.hs" 179 28 179 29
-                                    ]
-                                }
-                              (Special
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 29
-                                   , srcInfoPoints =
-                                       [ SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 28
-                                       , SrcSpan "tests/examples/DerivingVia.hs" 179 28 179 29
-                                       ]
-                                   }
-                                 (UnitCon
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 29
-                                      , srcInfoPoints =
-                                          [ SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 28
-                                          , SrcSpan "tests/examples/DerivingVia.hs" 179 28 179 29
-                                          ]
-                                      }))))
-                        (TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 179 30 179 31
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 179 30 179 31
-                                , srcInfoPoints = []
-                                }
-                              "a")))
-                 ])
-          ]
-          [ Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 179 33 179 49
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 179 33 179 41 ]
-                }
-              (Just
-                 (DerivVia
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 179 50 179 53
-                      , srcInfoPoints = []
-                      }
-                    (TyParen
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 179 54 179 71
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 179 54 179 55
-                             , SrcSpan "tests/examples/DerivingVia.hs" 179 70 179 71
-                             ]
-                         }
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 70
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 58
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 56
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 179 56 179 57
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 179 57 179 58
-                                   ]
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 58
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 56
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 179 56 179 57
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 179 57 179 58
-                                      ]
-                                  }
-                                (Symbol
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 179 56 179 57
-                                     , srcInfoPoints = []
-                                     }
-                                   "$")))
-                          (TyParen
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 179 59 179 70
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 179 59 179 60
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 179 69 179 70
-                                   ]
-                               }
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 69
-                                  , srcInfoPoints = []
-                                  }
-                                (TyCon
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 66
-                                     , srcInfoPoints = []
-                                     }
-                                   (UnQual
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 66
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 66
-                                           , srcInfoPoints = []
-                                           }
-                                         "Either")))
-                                (TyCon
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 69
-                                     , srcInfoPoints =
-                                         [ SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 68
-                                         , SrcSpan "tests/examples/DerivingVia.hs" 179 68 179 69
-                                         ]
-                                     }
-                                   (Special
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 69
-                                        , srcInfoPoints =
-                                            [ SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 68
-                                            , SrcSpan "tests/examples/DerivingVia.hs" 179 68 179 69
-                                            ]
-                                        }
-                                      (UnitCon
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 69
-                                           , srcInfoPoints =
-                                               [ SrcSpan
-                                                   "tests/examples/DerivingVia.hs" 179 67 179 68
-                                               , SrcSpan
-                                                   "tests/examples/DerivingVia.hs" 179 68 179 69
-                                               ]
-                                           })))))))))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49
-                             , srcInfoPoints = []
-                             }
-                           "Functor")))
-              ]
-          ]
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 181 1 181 73
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 181 15 181 16 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 181 1 181 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 14
-               , srcInfoPoints = []
-               }
-             (DHInfix
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 14
-                  , srcInfoPoints = []
-                  }
-                (UnkindedVar
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 10
-                     , srcInfoPoints = []
-                     }
-                   (Ident
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 10
-                        , srcInfoPoints = []
-                        }
-                      "f"))
-                (Symbol
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 181 11 181 12
-                     , srcInfoPoints = []
-                     }
-                   "$"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 181 13 181 14
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 181 13 181 14
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 181 17 181 26
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 181 17 181 26
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 181 17 181 20
-                      , srcInfoPoints = []
-                      }
-                    "APP")
-                 [ TyParen
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 181 21 181 26
-                       , srcInfoPoints =
-                           [ SrcSpan "tests/examples/DerivingVia.hs" 181 21 181 22
-                           , SrcSpan "tests/examples/DerivingVia.hs" 181 25 181 26
-                           ]
-                       }
-                     (TyApp
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 181 22 181 25
-                          , srcInfoPoints = []
-                          }
-                        (TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 181 22 181 23
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 181 22 181 23
-                                , srcInfoPoints = []
-                                }
-                              "f"))
-                        (TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 181 24 181 25
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 181 24 181 25
-                                , srcInfoPoints = []
-                                }
-                              "a")))
-                 ])
-          ]
-          [ Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 181 27 181 48
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 181 27 181 35 ]
-                }
-              (Just
-                 (DerivNewtype
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 181 36 181 43
-                      , srcInfoPoints = []
-                      }))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48
-                             , srcInfoPoints = []
-                             }
-                           "Show")))
-              ]
-          , Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 181 49 181 73
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 181 49 181 57 ]
-                }
-              (Just
-                 (DerivNewtype
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 181 58 181 65
-                      , srcInfoPoints = []
-                      }))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73
-                             , srcInfoPoints = []
-                             }
-                           "Functor")))
-              ]
-          ]
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 190 1 191 34
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 190 29 190 30 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 190 1 190 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 28
-               , srcInfoPoints = []
-               }
-             (DHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 26
-                  , srcInfoPoints = []
-                  }
-                (DHead
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 24
-                     , srcInfoPoints = []
-                     }
-                   (Ident
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 24
-                        , srcInfoPoints = []
-                        }
-                      "WrapApplicative"))
-                (UnkindedVar
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 190 25 190 26
-                     , srcInfoPoints = []
-                     }
-                   (Ident
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 190 25 190 26
-                        , srcInfoPoints = []
-                        }
-                      "f")))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 190 27 190 28
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 190 27 190 28
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 190 31 190 55
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 190 31 190 55
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 190 31 190 49
-                      , srcInfoPoints = []
-                      }
-                    "WrappedApplicative")
-                 [ TyParen
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 190 50 190 55
-                       , srcInfoPoints =
-                           [ SrcSpan "tests/examples/DerivingVia.hs" 190 50 190 51
-                           , SrcSpan "tests/examples/DerivingVia.hs" 190 54 190 55
-                           ]
-                       }
-                     (TyApp
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 190 51 190 54
-                          , srcInfoPoints = []
-                          }
-                        (TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 190 51 190 52
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 190 51 190 52
-                                , srcInfoPoints = []
-                                }
-                              "f"))
-                        (TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 190 53 190 54
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 190 53 190 54
-                                , srcInfoPoints = []
-                                }
-                              "a")))
-                 ])
-          ]
-          [ Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 191 3 191 34
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 191 3 191 11
-                    , SrcSpan "tests/examples/DerivingVia.hs" 191 12 191 13
-                    , SrcSpan "tests/examples/DerivingVia.hs" 191 20 191 21
-                    , SrcSpan "tests/examples/DerivingVia.hs" 191 33 191 34
-                    ]
-                }
-              Nothing
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20
-                             , srcInfoPoints = []
-                             }
-                           "Functor")))
-              , IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33
-                             , srcInfoPoints = []
-                             }
-                           "Applicative")))
-              ]
-          ]
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 193 1 201 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 193 1 193 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 193 62 193 67
-                , SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 201 1 201 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 193 10 193 61
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxTuple
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 193 10 193 35
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 193 10 193 11
-                         , SrcSpan "tests/examples/DerivingVia.hs" 193 24 193 25
-                         , SrcSpan "tests/examples/DerivingVia.hs" 193 31 193 32
-                         , SrcSpan "tests/examples/DerivingVia.hs" 193 33 193 35
-                         ]
-                     }
-                   [ ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 24
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 22
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 22
-                               , srcInfoPoints = []
-                               }
-                             "Applicative"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 193 23 193 24
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 193 23 193 24
-                                , srcInfoPoints = []
-                                }
-                              "f")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 31
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 29
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 29
-                               , srcInfoPoints = []
-                               }
-                             "Num"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 193 30 193 31
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 193 30 193 31
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   ]))
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 61
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 39
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 39
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 39
-                           , srcInfoPoints = []
-                           }
-                         "Num")))
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 193 40 193 61
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 193 40 193 41
-                         , SrcSpan "tests/examples/DerivingVia.hs" 193 60 193 61
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 60
-                        , srcInfoPoints = []
-                        }
-                      (TyApp
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 58
-                           , srcInfoPoints = []
-                           }
-                         (TyCon
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 56
-                              , srcInfoPoints = []
-                              }
-                            (UnQual
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 56
-                                 , srcInfoPoints = []
-                                 }
-                               (Ident
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 56
-                                    , srcInfoPoints = []
-                                    }
-                                  "WrapApplicative")))
-                         (TyVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 193 57 193 58
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 193 57 193 58
-                                 , srcInfoPoints = []
-                                 }
-                               "f")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 193 59 193 60
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 193 59 193 60
-                              , srcInfoPoints = []
-                              }
-                            "a"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 27
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 27
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 6
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 4
-                             , SrcSpan "tests/examples/DerivingVia.hs" 194 4 194 5
-                             , SrcSpan "tests/examples/DerivingVia.hs" 194 5 194 6
-                             ]
-                         }
-                       (Symbol
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 194 4 194 5
-                            , srcInfoPoints = []
-                            }
-                          "+"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 194 15 194 27
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 194 15 194 16 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 27
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 23
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 23
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 23
-                                     , srcInfoPoints = []
-                                     }
-                                   "liftA2")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 27
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 25
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 194 25 194 26
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 194 26 194 27
-                                   ]
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 27
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 25
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 194 25 194 26
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 194 26 194 27
-                                      ]
-                                  }
-                                (Symbol
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 194 25 194 26
-                                     , srcInfoPoints = []
-                                     }
-                                   "+")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 27
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 27
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 6
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 4
-                             , SrcSpan "tests/examples/DerivingVia.hs" 195 4 195 5
-                             , SrcSpan "tests/examples/DerivingVia.hs" 195 5 195 6
-                             ]
-                         }
-                       (Symbol
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 195 4 195 5
-                            , srcInfoPoints = []
-                            }
-                          "*"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 195 15 195 27
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 195 15 195 16 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 27
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 23
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 23
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 23
-                                     , srcInfoPoints = []
-                                     }
-                                   "liftA2")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 27
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 25
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 195 25 195 26
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 195 26 195 27
-                                   ]
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 27
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 25
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 195 25 195 26
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 195 26 195 27
-                                      ]
-                                  }
-                                (Symbol
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 195 25 195 26
-                                     , srcInfoPoints = []
-                                     }
-                                   "*")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 28
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 28
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 9
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 9
-                            , srcInfoPoints = []
-                            }
-                          "negate"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 196 15 196 28
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 196 15 196 16 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 28
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 21
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 21
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 21
-                                     , srcInfoPoints = []
-                                     }
-                                   "fmap")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 196 22 196 28
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 196 22 196 28
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 196 22 196 28
-                                     , srcInfoPoints = []
-                                     }
-                                   "negate")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 35
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 35
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 14
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 14
-                            , srcInfoPoints = []
-                            }
-                          "fromInteger"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 197 15 197 35
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 197 15 197 16 ]
-                         }
-                       (InfixApp
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 35
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 21
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 21
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 21
-                                     , srcInfoPoints = []
-                                     }
-                                   "pure")))
-                          (QVarOp
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 197 22 197 23
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 197 22 197 23
-                                  , srcInfoPoints = []
-                                  }
-                                (Symbol
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 197 22 197 23
-                                     , srcInfoPoints = []
-                                     }
-                                   ".")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 197 24 197 35
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 197 24 197 35
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 197 24 197 35
-                                     , srcInfoPoints = []
-                                     }
-                                   "fromInteger")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 25
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 25
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 6
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 6
-                            , srcInfoPoints = []
-                            }
-                          "abs"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 198 15 198 25
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 198 15 198 16 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 25
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 21
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 21
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 21
-                                     , srcInfoPoints = []
-                                     }
-                                   "fmap")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 198 22 198 25
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 198 22 198 25
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 198 22 198 25
-                                     , srcInfoPoints = []
-                                     }
-                                   "abs")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 28
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 28
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 9
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 9
-                            , srcInfoPoints = []
-                            }
-                          "signum"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 199 15 199 28
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 199 15 199 16 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 28
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 21
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 21
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 21
-                                     , srcInfoPoints = []
-                                     }
-                                   "fmap")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 199 22 199 28
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 199 22 199 28
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 199 22 199 28
-                                     , srcInfoPoints = []
-                                     }
-                                   "signum")))))
-                    Nothing)
-             ])
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 201 1 205 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 201 1 201 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 201 76 201 81
-                , SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 205 1 205 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 201 10 201 75
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxTuple
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 201 10 201 42
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 201 10 201 11
-                         , SrcSpan "tests/examples/DerivingVia.hs" 201 24 201 25
-                         , SrcSpan "tests/examples/DerivingVia.hs" 201 38 201 39
-                         , SrcSpan "tests/examples/DerivingVia.hs" 201 40 201 42
-                         ]
-                     }
-                   [ ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 24
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 22
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 22
-                               , srcInfoPoints = []
-                               }
-                             "Applicative"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 201 23 201 24
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 201 23 201 24
-                                , srcInfoPoints = []
-                                }
-                              "f")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 38
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 36
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 36
-                               , srcInfoPoints = []
-                               }
-                             "Fractional"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 201 37 201 38
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 201 37 201 38
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   ]))
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 75
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 53
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 53
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 53
-                           , srcInfoPoints = []
-                           }
-                         "Fractional")))
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 201 54 201 75
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 201 54 201 55
-                         , SrcSpan "tests/examples/DerivingVia.hs" 201 74 201 75
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 74
-                        , srcInfoPoints = []
-                        }
-                      (TyApp
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 72
-                           , srcInfoPoints = []
-                           }
-                         (TyCon
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 70
-                              , srcInfoPoints = []
-                              }
-                            (UnQual
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 70
-                                 , srcInfoPoints = []
-                                 }
-                               (Ident
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 70
-                                    , srcInfoPoints = []
-                                    }
-                                  "WrapApplicative")))
-                         (TyVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 201 71 201 72
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 201 71 201 72
-                                 , srcInfoPoints = []
-                                 }
-                               "f")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 201 73 201 74
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 201 73 201 74
-                              , srcInfoPoints = []
-                              }
-                            "a"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 28
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 28
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 8
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 8
-                            , srcInfoPoints = []
-                            }
-                          "recip"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 202 16 202 28
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 202 16 202 17 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 28
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 22
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 22
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 22
-                                     , srcInfoPoints = []
-                                     }
-                                   "fmap")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 202 23 202 28
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 202 23 202 28
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 202 23 202 28
-                                     , srcInfoPoints = []
-                                     }
-                                   "recip")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 37
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 37
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 15
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 15
-                            , srcInfoPoints = []
-                            }
-                          "fromRational"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 203 16 203 37
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 203 16 203 17 ]
-                         }
-                       (InfixApp
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 37
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 22
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 22
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 22
-                                     , srcInfoPoints = []
-                                     }
-                                   "pure")))
-                          (QVarOp
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 203 23 203 24
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 203 23 203 24
-                                  , srcInfoPoints = []
-                                  }
-                                (Symbol
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 203 23 203 24
-                                     , srcInfoPoints = []
-                                     }
-                                   ".")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 203 25 203 37
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 203 25 203 37
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 203 25 203 37
-                                     , srcInfoPoints = []
-                                     }
-                                   "fromRational")))))
-                    Nothing)
-             ])
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 205 1 221 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 205 1 205 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 205 72 205 77
-                , SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 221 1 221 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 205 10 205 71
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxTuple
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 205 10 205 40
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 205 10 205 11
-                         , SrcSpan "tests/examples/DerivingVia.hs" 205 24 205 25
-                         , SrcSpan "tests/examples/DerivingVia.hs" 205 36 205 37
-                         , SrcSpan "tests/examples/DerivingVia.hs" 205 38 205 40
-                         ]
-                     }
-                   [ ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 24
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 22
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 22
-                               , srcInfoPoints = []
-                               }
-                             "Applicative"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 205 23 205 24
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 205 23 205 24
-                                , srcInfoPoints = []
-                                }
-                              "f")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 36
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 34
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 34
-                               , srcInfoPoints = []
-                               }
-                             "Floating"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 205 35 205 36
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 205 35 205 36
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   ]))
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 71
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 49
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 49
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 49
-                           , srcInfoPoints = []
-                           }
-                         "Floating")))
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 205 50 205 71
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 205 50 205 51
-                         , SrcSpan "tests/examples/DerivingVia.hs" 205 70 205 71
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 70
-                        , srcInfoPoints = []
-                        }
-                      (TyApp
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 68
-                           , srcInfoPoints = []
-                           }
-                         (TyCon
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 66
-                              , srcInfoPoints = []
-                              }
-                            (UnQual
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 66
-                                 , srcInfoPoints = []
-                                 }
-                               (Ident
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 66
-                                    , srcInfoPoints = []
-                                    }
-                                  "WrapApplicative")))
-                         (TyVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 205 67 205 68
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 205 67 205 68
-                                 , srcInfoPoints = []
-                                 }
-                               "f")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 205 69 205 70
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 205 69 205 70
-                              , srcInfoPoints = []
-                              }
-                            "a"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 18
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 18
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 5
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 5
-                            , srcInfoPoints = []
-                            }
-                          "pi"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 206 9 206 18
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 206 9 206 10 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 18
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 15
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 15
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 15
-                                     , srcInfoPoints = []
-                                     }
-                                   "pure")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 206 16 206 18
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 206 16 206 18
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 206 16 206 18
-                                     , srcInfoPoints = []
-                                     }
-                                   "pi")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 20
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 20
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 7
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 7
-                            , srcInfoPoints = []
-                            }
-                          "sqrt"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 207 9 207 20
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 207 9 207 10 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 20
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 15
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 15
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 15
-                                     , srcInfoPoints = []
-                                     }
-                                   "fmap")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 207 16 207 20
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 207 16 207 20
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 207 16 207 20
-                                     , srcInfoPoints = []
-                                     }
-                                   "sqrt")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 19
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 19
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 6
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 6
-                            , srcInfoPoints = []
-                            }
-                          "exp"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 208 9 208 19
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 208 9 208 10 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 19
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 15
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 15
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 15
-                                     , srcInfoPoints = []
-                                     }
-                                   "fmap")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 208 16 208 19
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 208 16 208 19
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 208 16 208 19
-                                     , srcInfoPoints = []
-                                     }
-                                   "exp")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 19
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 19
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 6
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 6
-                            , srcInfoPoints = []
-                            }
-                          "log"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 209 9 209 19
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 209 9 209 10 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 19
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 15
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 15
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 15
-                                     , srcInfoPoints = []
-                                     }
-                                   "fmap")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 209 16 209 19
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 209 16 209 19
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 209 16 209 19
-                                     , srcInfoPoints = []
-                                     }
-                                   "log")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 19
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 19
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 6
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 6
-                            , srcInfoPoints = []
-                            }
-                          "sin"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 210 9 210 19
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 210 9 210 10 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 19
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 15
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 15
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 15
-                                     , srcInfoPoints = []
-                                     }
-                                   "fmap")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 210 16 210 19
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 210 16 210 19
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 210 16 210 19
-                                     , srcInfoPoints = []
-                                     }
-                                   "sin")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 19
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 19
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 6
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 6
-                            , srcInfoPoints = []
-                            }
-                          "cos"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 211 9 211 19
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 211 9 211 10 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 19
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 15
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 15
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 15
-                                     , srcInfoPoints = []
-                                     }
-                                   "fmap")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 211 16 211 19
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 211 16 211 19
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 211 16 211 19
-                                     , srcInfoPoints = []
-                                     }
-                                   "cos")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 20
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 20
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 7
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 7
-                            , srcInfoPoints = []
-                            }
-                          "asin"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 212 9 212 20
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 212 9 212 10 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 20
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 15
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 15
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 15
-                                     , srcInfoPoints = []
-                                     }
-                                   "fmap")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 212 16 212 20
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 212 16 212 20
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 212 16 212 20
-                                     , srcInfoPoints = []
-                                     }
-                                   "asin")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 20
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 20
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 7
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 7
-                            , srcInfoPoints = []
-                            }
-                          "atan"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 213 9 213 20
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 213 9 213 10 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 20
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 15
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 15
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 15
-                                     , srcInfoPoints = []
-                                     }
-                                   "fmap")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 213 16 213 20
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 213 16 213 20
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 213 16 213 20
-                                     , srcInfoPoints = []
-                                     }
-                                   "atan")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 20
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 20
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 7
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 7
-                            , srcInfoPoints = []
-                            }
-                          "acos"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 214 9 214 20
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 214 9 214 10 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 20
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 15
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 15
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 15
-                                     , srcInfoPoints = []
-                                     }
-                                   "fmap")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 214 16 214 20
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 214 16 214 20
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 214 16 214 20
-                                     , srcInfoPoints = []
-                                     }
-                                   "acos")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 20
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 20
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 7
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 7
-                            , srcInfoPoints = []
-                            }
-                          "sinh"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 215 9 215 20
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 215 9 215 10 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 20
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 15
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 15
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 15
-                                     , srcInfoPoints = []
-                                     }
-                                   "fmap")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 215 16 215 20
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 215 16 215 20
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 215 16 215 20
-                                     , srcInfoPoints = []
-                                     }
-                                   "sinh")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 20
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 20
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 7
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 7
-                            , srcInfoPoints = []
-                            }
-                          "cosh"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 216 9 216 20
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 216 9 216 10 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 20
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 15
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 15
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 15
-                                     , srcInfoPoints = []
-                                     }
-                                   "fmap")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 216 16 216 20
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 216 16 216 20
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 216 16 216 20
-                                     , srcInfoPoints = []
-                                     }
-                                   "cosh")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 21
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 21
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 8
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 8
-                            , srcInfoPoints = []
-                            }
-                          "asinh"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 217 9 217 21
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 217 9 217 10 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 21
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 15
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 15
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 15
-                                     , srcInfoPoints = []
-                                     }
-                                   "fmap")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 217 16 217 21
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 217 16 217 21
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 217 16 217 21
-                                     , srcInfoPoints = []
-                                     }
-                                   "asinh")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 21
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 21
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 8
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 8
-                            , srcInfoPoints = []
-                            }
-                          "atanh"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 218 9 218 21
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 218 9 218 10 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 21
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 15
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 15
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 15
-                                     , srcInfoPoints = []
-                                     }
-                                   "fmap")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 218 16 218 21
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 218 16 218 21
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 218 16 218 21
-                                     , srcInfoPoints = []
-                                     }
-                                   "atanh")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 21
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 21
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 8
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 8
-                            , srcInfoPoints = []
-                            }
-                          "acosh"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 219 9 219 21
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 219 9 219 10 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 21
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 15
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 15
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 15
-                                     , srcInfoPoints = []
-                                     }
-                                   "fmap")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 219 16 219 21
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 219 16 219 21
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 219 16 219 21
-                                     , srcInfoPoints = []
-                                     }
-                                   "acosh")))))
-                    Nothing)
-             ])
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 221 1 224 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 221 1 221 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 221 74 221 79
-                , SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 224 1 224 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 221 10 221 73
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxTuple
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 221 10 221 41
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 221 10 221 11
-                         , SrcSpan "tests/examples/DerivingVia.hs" 221 24 221 25
-                         , SrcSpan "tests/examples/DerivingVia.hs" 221 37 221 38
-                         , SrcSpan "tests/examples/DerivingVia.hs" 221 39 221 41
-                         ]
-                     }
-                   [ ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 24
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 22
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 22
-                               , srcInfoPoints = []
-                               }
-                             "Applicative"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 221 23 221 24
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 221 23 221 24
-                                , srcInfoPoints = []
-                                }
-                              "f")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 37
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 35
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 35
-                               , srcInfoPoints = []
-                               }
-                             "Semigroup"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 221 36 221 37
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 221 36 221 37
-                                , srcInfoPoints = []
-                                }
-                              "s")
-                       ]
-                   ]))
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 73
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 51
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 51
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 51
-                           , srcInfoPoints = []
-                           }
-                         "Semigroup")))
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 221 52 221 73
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 221 52 221 53
-                         , SrcSpan "tests/examples/DerivingVia.hs" 221 72 221 73
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 72
-                        , srcInfoPoints = []
-                        }
-                      (TyApp
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 70
-                           , srcInfoPoints = []
-                           }
-                         (TyCon
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 68
-                              , srcInfoPoints = []
-                              }
-                            (UnQual
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 68
-                                 , srcInfoPoints = []
-                                 }
-                               (Ident
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 68
-                                    , srcInfoPoints = []
-                                    }
-                                  "WrapApplicative")))
-                         (TyVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 221 69 221 70
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 221 69 221 70
-                                 , srcInfoPoints = []
-                                 }
-                               "f")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 221 71 221 72
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 221 71 221 72
-                              , srcInfoPoints = []
-                              }
-                            "s"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 21
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 21
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 7
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 4
-                             , SrcSpan "tests/examples/DerivingVia.hs" 222 4 222 6
-                             , SrcSpan "tests/examples/DerivingVia.hs" 222 6 222 7
-                             ]
-                         }
-                       (Symbol
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 222 4 222 6
-                            , srcInfoPoints = []
-                            }
-                          "<>"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 222 8 222 21
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 222 8 222 9 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 21
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 16
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 16
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 16
-                                     , srcInfoPoints = []
-                                     }
-                                   "liftA2")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 21
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 18
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 222 18 222 20
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 222 20 222 21
-                                   ]
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 21
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 18
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 222 18 222 20
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 222 20 222 21
-                                      ]
-                                  }
-                                (Symbol
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 222 18 222 20
-                                     , srcInfoPoints = []
-                                     }
-                                   "<>")))))
-                    Nothing)
-             ])
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 224 1 230 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 224 1 224 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 224 68 224 73
-                , SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 230 1 230 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 224 10 224 67
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxTuple
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 224 10 224 38
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 224 10 224 11
-                         , SrcSpan "tests/examples/DerivingVia.hs" 224 24 224 25
-                         , SrcSpan "tests/examples/DerivingVia.hs" 224 34 224 35
-                         , SrcSpan "tests/examples/DerivingVia.hs" 224 36 224 38
-                         ]
-                     }
-                   [ ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 24
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 22
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 22
-                               , srcInfoPoints = []
-                               }
-                             "Applicative"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 224 23 224 24
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 224 23 224 24
-                                , srcInfoPoints = []
-                                }
-                              "f")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 34
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 32
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 32
-                               , srcInfoPoints = []
-                               }
-                             "Monoid"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 224 33 224 34
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 224 33 224 34
-                                , srcInfoPoints = []
-                                }
-                              "m")
-                       ]
-                   ]))
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 67
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 45
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 45
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 45
-                           , srcInfoPoints = []
-                           }
-                         "Monoid")))
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 224 46 224 67
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 224 46 224 47
-                         , SrcSpan "tests/examples/DerivingVia.hs" 224 66 224 67
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 66
-                        , srcInfoPoints = []
-                        }
-                      (TyApp
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 64
-                           , srcInfoPoints = []
-                           }
-                         (TyCon
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 62
-                              , srcInfoPoints = []
-                              }
-                            (UnQual
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 62
-                                 , srcInfoPoints = []
-                                 }
-                               (Ident
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 62
-                                    , srcInfoPoints = []
-                                    }
-                                  "WrapApplicative")))
-                         (TyVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 224 63 224 64
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 224 63 224 64
-                                 , srcInfoPoints = []
-                                 }
-                               "f")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 224 65 224 66
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 224 65 224 66
-                              , srcInfoPoints = []
-                              }
-                            "m"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 23
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 23
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 9
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 9
-                            , srcInfoPoints = []
-                            }
-                          "mempty"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 225 10 225 23
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 225 10 225 11 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 23
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 16
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 16
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 16
-                                     , srcInfoPoints = []
-                                     }
-                                   "pure")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 225 17 225 23
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 225 17 225 23
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 225 17 225 23
-                                     , srcInfoPoints = []
-                                     }
-                                   "mempty")))))
-                    Nothing)
-             ])
-      , ClassDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 230 1 231 22
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 230 1 230 6
-                , SrcSpan "tests/examples/DerivingVia.hs" 230 17 230 22
-                , SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 233 1 233 0
-                ]
-            }
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 230 7 230 16
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 230 7 230 14
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 230 7 230 14
-                     , srcInfoPoints = []
-                     }
-                   "Pointed"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 230 15 230 16
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 230 15 230 16
-                     , srcInfoPoints = []
-                     }
-                   "p")))
-          []
-          (Just
-             [ ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 22
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 231 11 231 13 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 22
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 231 11 231 13 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 10
-                          , srcInfoPoints = []
-                          }
-                        "pointed"
-                    ]
-                    (TyFun
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 231 14 231 22
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 231 16 231 18 ]
-                         }
-                       (TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 231 14 231 15
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 231 14 231 15
-                               , srcInfoPoints = []
-                               }
-                             "a"))
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 231 19 231 22
-                            , srcInfoPoints = []
-                            }
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 231 19 231 20
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 231 19 231 20
-                                  , srcInfoPoints = []
-                                  }
-                                "p"))
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 231 21 231 22
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 231 21 231 22
-                                  , srcInfoPoints = []
-                                  }
-                                "a")))))
-             ])
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 233 1 234 36
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 233 23 233 24 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 233 1 233 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 22
-               , srcInfoPoints = []
-               }
-             (DHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 20
-                  , srcInfoPoints = []
-                  }
-                (DHead
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 18
-                     , srcInfoPoints = []
-                     }
-                   (Ident
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 18
-                        , srcInfoPoints = []
-                        }
-                      "WrapMonad"))
-                (UnkindedVar
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 233 19 233 20
-                     , srcInfoPoints = []
-                     }
-                   (Ident
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 233 19 233 20
-                        , srcInfoPoints = []
-                        }
-                      "f")))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 233 21 233 22
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 233 21 233 22
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 233 25 233 43
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 233 25 233 43
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 233 25 233 37
-                      , srcInfoPoints = []
-                      }
-                    "WrappedMonad")
-                 [ TyParen
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 233 38 233 43
-                       , srcInfoPoints =
-                           [ SrcSpan "tests/examples/DerivingVia.hs" 233 38 233 39
-                           , SrcSpan "tests/examples/DerivingVia.hs" 233 42 233 43
-                           ]
-                       }
-                     (TyApp
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 233 39 233 42
-                          , srcInfoPoints = []
-                          }
-                        (TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 233 39 233 40
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 233 39 233 40
-                                , srcInfoPoints = []
-                                }
-                              "f"))
-                        (TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 233 41 233 42
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 233 41 233 42
-                                , srcInfoPoints = []
-                                }
-                              "a")))
-                 ])
-          ]
-          [ Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 234 3 234 36
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 234 3 234 11
-                    , SrcSpan "tests/examples/DerivingVia.hs" 234 20 234 21
-                    , SrcSpan "tests/examples/DerivingVia.hs" 234 28 234 29
-                    , SrcSpan "tests/examples/DerivingVia.hs" 234 35 234 36
-                    ]
-                }
-              (Just
-                 (DerivNewtype
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 234 12 234 19
-                      , srcInfoPoints = []
-                      }))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28
-                             , srcInfoPoints = []
-                             }
-                           "Pointed")))
-              , IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35
-                             , srcInfoPoints = []
-                             }
-                           "Monad")))
-              ]
-          ]
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 236 1 239 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 236 1 236 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 236 56 236 61
-                , SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 239 1 239 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 236 10 236 55
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxTuple
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 236 10 236 33
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 236 10 236 11
-                         , SrcSpan "tests/examples/DerivingVia.hs" 236 18 236 19
-                         , SrcSpan "tests/examples/DerivingVia.hs" 236 29 236 30
-                         , SrcSpan "tests/examples/DerivingVia.hs" 236 31 236 33
-                         ]
-                     }
-                   [ ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 18
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 16
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 16
-                               , srcInfoPoints = []
-                               }
-                             "Monad"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 236 17 236 18
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 236 17 236 18
-                                , srcInfoPoints = []
-                                }
-                              "m")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 29
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 27
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 27
-                               , srcInfoPoints = []
-                               }
-                             "Pointed"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 236 28 236 29
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 236 28 236 29
-                                , srcInfoPoints = []
-                                }
-                              "m")
-                       ]
-                   ]))
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 55
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 41
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 41
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 41
-                           , srcInfoPoints = []
-                           }
-                         "Functor")))
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 236 42 236 55
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 236 42 236 43
-                         , SrcSpan "tests/examples/DerivingVia.hs" 236 54 236 55
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 54
-                        , srcInfoPoints = []
-                        }
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 52
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 52
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 52
-                                 , srcInfoPoints = []
-                                 }
-                               "WrapMonad")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 236 53 236 54
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 236 53 236 54
-                              , srcInfoPoints = []
-                              }
-                            "m"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 15
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 15
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 7
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 7
-                            , srcInfoPoints = []
-                            }
-                          "fmap"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 237 8 237 15
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 237 8 237 9 ]
-                         }
-                       (Var
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 237 10 237 15
-                            , srcInfoPoints = []
-                            }
-                          (UnQual
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 237 10 237 15
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 237 10 237 15
-                                  , srcInfoPoints = []
-                                  }
-                                "liftM"))))
-                    Nothing)
-             ])
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 239 1 244 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 239 1 239 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 239 60 239 65
-                , SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 244 1 244 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 239 10 239 59
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxTuple
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 239 10 239 33
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 239 10 239 11
-                         , SrcSpan "tests/examples/DerivingVia.hs" 239 18 239 19
-                         , SrcSpan "tests/examples/DerivingVia.hs" 239 29 239 30
-                         , SrcSpan "tests/examples/DerivingVia.hs" 239 31 239 33
-                         ]
-                     }
-                   [ ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 18
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 16
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 16
-                               , srcInfoPoints = []
-                               }
-                             "Monad"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 239 17 239 18
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 239 17 239 18
-                                , srcInfoPoints = []
-                                }
-                              "m")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 29
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 27
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 27
-                               , srcInfoPoints = []
-                               }
-                             "Pointed"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 239 28 239 29
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 239 28 239 29
-                                , srcInfoPoints = []
-                                }
-                              "m")
-                       ]
-                   ]))
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 59
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 45
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 45
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 45
-                           , srcInfoPoints = []
-                           }
-                         "Applicative")))
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 239 46 239 59
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 239 46 239 47
-                         , SrcSpan "tests/examples/DerivingVia.hs" 239 58 239 59
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 58
-                        , srcInfoPoints = []
-                        }
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 56
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 56
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 56
-                                 , srcInfoPoints = []
-                                 }
-                               "WrapMonad")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 239 57 239 58
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 239 57 239 58
-                              , srcInfoPoints = []
-                              }
-                            "m"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 18
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 18
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 7
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 7
-                            , srcInfoPoints = []
-                            }
-                          "pure"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 240 9 240 18
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 240 9 240 10 ]
-                         }
-                       (Var
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 240 11 240 18
-                            , srcInfoPoints = []
-                            }
-                          (UnQual
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 240 11 240 18
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 240 11 240 18
-                                  , srcInfoPoints = []
-                                  }
-                                "pointed"))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 13
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 13
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 8
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 4
-                             , SrcSpan "tests/examples/DerivingVia.hs" 241 4 241 7
-                             , SrcSpan "tests/examples/DerivingVia.hs" 241 7 241 8
-                             ]
-                         }
-                       (Symbol
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 241 4 241 7
-                            , srcInfoPoints = []
-                            }
-                          "<*>"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 241 9 241 13
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 241 9 241 10 ]
-                         }
-                       (Var
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 241 11 241 13
-                            , srcInfoPoints = []
-                            }
-                          (UnQual
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 241 11 241 13
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 241 11 241 13
-                                  , srcInfoPoints = []
-                                  }
-                                "ap"))))
-                    Nothing)
-             ])
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 244 1 247 58
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 244 15 244 16 ]
-            }
-          (DataType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 244 1 244 5
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 244 6 244 14
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 244 6 244 12
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 244 6 244 12
-                     , srcInfoPoints = []
-                     }
-                   "Sorted"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 244 13 244 14
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 244 13 244 14
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 244 17 244 29
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 244 17 244 29
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 244 17 244 23
-                      , srcInfoPoints = []
-                      }
-                    "Sorted")
-                 [ TyVar
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 244 24 244 25
-                       , srcInfoPoints = []
-                       }
-                     (Ident
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 244 24 244 25
-                          , srcInfoPoints = []
-                          }
-                        "a")
-                 , TyVar
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 244 26 244 27
-                       , srcInfoPoints = []
-                       }
-                     (Ident
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 244 26 244 27
-                          , srcInfoPoints = []
-                          }
-                        "a")
-                 , TyVar
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 244 28 244 29
-                       , srcInfoPoints = []
-                       }
-                     (Ident
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 244 28 244 29
-                          , srcInfoPoints = []
-                          }
-                        "a")
-                 ])
-          ]
-          [ Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 245 3 245 34
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 245 3 245 11
-                    , SrcSpan "tests/examples/DerivingVia.hs" 245 12 245 13
-                    , SrcSpan "tests/examples/DerivingVia.hs" 245 20 245 21
-                    , SrcSpan "tests/examples/DerivingVia.hs" 245 33 245 34
-                    ]
-                }
-              (Just
-                 (DerivVia
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 246 5 246 8
-                      , srcInfoPoints = []
-                      }
-                    (TyParen
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 246 9 246 27
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 246 9 246 10
-                             , SrcSpan "tests/examples/DerivingVia.hs" 246 26 246 27
-                             ]
-                         }
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 26
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 19
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 19
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 19
-                                     , srcInfoPoints = []
-                                     }
-                                   "WrapMonad")))
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 246 20 246 26
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 246 20 246 26
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 246 20 246 26
-                                     , srcInfoPoints = []
-                                     }
-                                   "Sorted")))))))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20
-                             , srcInfoPoints = []
-                             }
-                           "Functor")))
-              , IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33
-                             , srcInfoPoints = []
-                             }
-                           "Applicative")))
-              ]
-          , Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 247 3 247 58
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 247 3 247 11
-                    , SrcSpan "tests/examples/DerivingVia.hs" 247 12 247 13
-                    , SrcSpan "tests/examples/DerivingVia.hs" 247 16 247 17
-                    , SrcSpan "tests/examples/DerivingVia.hs" 247 28 247 29
-                    , SrcSpan "tests/examples/DerivingVia.hs" 247 38 247 39
-                    , SrcSpan "tests/examples/DerivingVia.hs" 247 49 247 50
-                    , SrcSpan "tests/examples/DerivingVia.hs" 247 57 247 58
-                    ]
-                }
-              (Just
-                 (DerivVia
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 248 5 248 8
-                      , srcInfoPoints = []
-                      }
-                    (TyParen
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 248 9 248 35
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 248 9 248 10
-                             , SrcSpan "tests/examples/DerivingVia.hs" 248 34 248 35
-                             ]
-                         }
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 34
-                            , srcInfoPoints = []
-                            }
-                          (TyApp
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 32
-                               , srcInfoPoints = []
-                               }
-                             (TyCon
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 25
-                                  , srcInfoPoints = []
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 25
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 25
-                                        , srcInfoPoints = []
-                                        }
-                                      "WrapApplicative")))
-                             (TyCon
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 248 26 248 32
-                                  , srcInfoPoints = []
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 248 26 248 32
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 248 26 248 32
-                                        , srcInfoPoints = []
-                                        }
-                                      "Sorted"))))
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 248 33 248 34
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 248 33 248 34
-                                  , srcInfoPoints = []
-                                  }
-                                "a"))))))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16
-                             , srcInfoPoints = []
-                             }
-                           "Num")))
-              , IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28
-                             , srcInfoPoints = []
-                             }
-                           "Fractional")))
-              , IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38
-                             , srcInfoPoints = []
-                             }
-                           "Floating")))
-              , IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49
-                             , srcInfoPoints = []
-                             }
-                           "Semigroup")))
-              , IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57
-                             , srcInfoPoints = []
-                             }
-                           "Monoid")))
-              ]
-          ]
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 251 1 258 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 251 1 251 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 251 23 251 28
-                , SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 258 1 258 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 22
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 22
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 15
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 15
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 15
-                           , srcInfoPoints = []
-                           }
-                         "Monad")))
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 251 16 251 22
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 251 16 251 22
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 251 16 251 22
-                           , srcInfoPoints = []
-                           }
-                         "Sorted")))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 51
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 252 9 252 11 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 51
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 252 9 252 11 ]
-                      }
-                    [ Symbol
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 8
-                          , srcInfoPoints =
-                              [ SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 4
-                              , SrcSpan "tests/examples/DerivingVia.hs" 252 4 252 7
-                              , SrcSpan "tests/examples/DerivingVia.hs" 252 7 252 8
-                              ]
-                          }
-                        ">>="
-                    ]
-                    (TyFun
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 51
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 252 21 252 23 ]
-                         }
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 20
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 18
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 18
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 18
-                                     , srcInfoPoints = []
-                                     }
-                                   "Sorted")))
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 252 19 252 20
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 252 19 252 20
-                                  , srcInfoPoints = []
-                                  }
-                                "a")))
-                       (TyFun
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 252 24 252 51
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 252 40 252 42 ]
-                            }
-                          (TyParen
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 252 24 252 39
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 252 24 252 25
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 252 38 252 39
-                                   ]
-                               }
-                             (TyFun
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 252 25 252 38
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 252 27 252 29 ]
-                                  }
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 252 25 252 26
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 252 25 252 26
-                                        , srcInfoPoints = []
-                                        }
-                                      "a"))
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 252 30 252 38
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyCon
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 252 30 252 36
-                                        , srcInfoPoints = []
-                                        }
-                                      (UnQual
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 252 30 252 36
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 252 30 252 36
-                                              , srcInfoPoints = []
-                                              }
-                                            "Sorted")))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 252 37 252 38
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 252 37 252 38
-                                           , srcInfoPoints = []
-                                           }
-                                         "b")))))
-                          (TyApp
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 51
-                               , srcInfoPoints = []
-                               }
-                             (TyCon
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 49
-                                  , srcInfoPoints = []
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 49
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 49
-                                        , srcInfoPoints = []
-                                        }
-                                      "Sorted")))
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 252 50 252 51
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 252 50 252 51
-                                     , srcInfoPoints = []
-                                     }
-                                   "b"))))))
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 253 3 256 26
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 253 40 253 45 ]
-                   }
-                 (FunBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 253 3 256 26
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 253 40 253 45 ]
-                      }
-                    [ InfixMatch
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 253 3 256 26
-                          , srcInfoPoints =
-                              [ SrcSpan "tests/examples/DerivingVia.hs" 253 40 253 45 ]
-                          }
-                        (PApp
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 15
-                             , srcInfoPoints = []
-                             }
-                           (UnQual
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 9
-                                , srcInfoPoints = []
-                                }
-                              (Ident
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 9
-                                   , srcInfoPoints = []
-                                   }
-                                 "Sorted"))
-                           [ PVar
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 253 10 253 11
-                                 , srcInfoPoints = []
-                                 }
-                               (Ident
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 253 10 253 11
-                                    , srcInfoPoints = []
-                                    }
-                                  "a")
-                           , PVar
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 253 12 253 13
-                                 , srcInfoPoints = []
-                                 }
-                               (Ident
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 253 12 253 13
-                                    , srcInfoPoints = []
-                                    }
-                                  "b")
-                           , PVar
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 253 14 253 15
-                                 , srcInfoPoints = []
-                                 }
-                               (Ident
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 253 14 253 15
-                                    , srcInfoPoints = []
-                                    }
-                                  "c")
-                           ])
-                        (Symbol
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 253 16 253 19
-                             , srcInfoPoints = []
-                             }
-                           ">>=")
-                        [ PVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 253 20 253 21
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 253 20 253 21
-                                 , srcInfoPoints = []
-                                 }
-                               "f")
-                        ]
-                        (UnGuardedRhs
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 253 22 253 39
-                             , srcInfoPoints =
-                                 [ SrcSpan "tests/examples/DerivingVia.hs" 253 22 253 23 ]
-                             }
-                           (App
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 39
-                                , srcInfoPoints = []
-                                }
-                              (App
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 36
-                                   , srcInfoPoints = []
-                                   }
-                                 (App
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 33
-                                      , srcInfoPoints = []
-                                      }
-                                    (Con
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 30
-                                         , srcInfoPoints = []
-                                         }
-                                       (UnQual
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 253 24 253 30
-                                            , srcInfoPoints = []
-                                            }
-                                          (Ident
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 253 24 253 30
-                                               , srcInfoPoints = []
-                                               }
-                                             "Sorted")))
-                                    (Var
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 253 31 253 33
-                                         , srcInfoPoints = []
-                                         }
-                                       (UnQual
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 253 31 253 33
-                                            , srcInfoPoints = []
-                                            }
-                                          (Ident
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 253 31 253 33
-                                               , srcInfoPoints = []
-                                               }
-                                             "a'"))))
-                                 (Var
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 253 34 253 36
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 253 34 253 36
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 253 34 253 36
-                                            , srcInfoPoints = []
-                                            }
-                                          "b'"))))
-                              (Var
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 253 37 253 39
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 253 37 253 39
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 253 37 253 39
-                                         , srcInfoPoints = []
-                                         }
-                                       "c'")))))
-                        (Just
-                           (BDecls
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 254 5 256 26
-                                , srcInfoPoints =
-                                    [ SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 5
-                                    , SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 5
-                                    , SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 5
-                                    , SrcSpan "tests/examples/DerivingVia.hs" 258 1 258 0
-                                    ]
-                                }
-                              [ PatBind
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 26
-                                    , srcInfoPoints = []
-                                    }
-                                  (PApp
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 19
-                                       , srcInfoPoints = []
-                                       }
-                                     (UnQual
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 11
-                                          , srcInfoPoints = []
-                                          }
-                                        (Ident
-                                           SrcSpanInfo
-                                             { srcInfoSpan =
-                                                 SrcSpan
-                                                   "tests/examples/DerivingVia.hs" 254 5 254 11
-                                             , srcInfoPoints = []
-                                             }
-                                           "Sorted"))
-                                     [ PVar
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 254 12 254 14
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 254 12 254 14
-                                              , srcInfoPoints = []
-                                              }
-                                            "a'")
-                                     , PWildCard
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 254 15 254 16
-                                           , srcInfoPoints = []
-                                           }
-                                     , PWildCard
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 254 18 254 19
-                                           , srcInfoPoints = []
-                                           }
-                                     ])
-                                  (UnGuardedRhs
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/DerivingVia.hs" 254 21 254 26
-                                       , srcInfoPoints =
-                                           [ SrcSpan "tests/examples/DerivingVia.hs" 254 21 254 22 ]
-                                       }
-                                     (App
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/DerivingVia.hs" 254 23 254 26
-                                          , srcInfoPoints = []
-                                          }
-                                        (Var
-                                           SrcSpanInfo
-                                             { srcInfoSpan =
-                                                 SrcSpan
-                                                   "tests/examples/DerivingVia.hs" 254 23 254 24
-                                             , srcInfoPoints = []
-                                             }
-                                           (UnQual
-                                              SrcSpanInfo
-                                                { srcInfoSpan =
-                                                    SrcSpan
-                                                      "tests/examples/DerivingVia.hs" 254 23 254 24
-                                                , srcInfoPoints = []
-                                                }
-                                              (Ident
-                                                 SrcSpanInfo
-                                                   { srcInfoSpan =
-                                                       SrcSpan
-                                                         "tests/examples/DerivingVia.hs"
-                                                         254
-                                                         23
-                                                         254
-                                                         24
-                                                   , srcInfoPoints = []
-                                                   }
-                                                 "f")))
-                                        (Var
-                                           SrcSpanInfo
-                                             { srcInfoSpan =
-                                                 SrcSpan
-                                                   "tests/examples/DerivingVia.hs" 254 25 254 26
-                                             , srcInfoPoints = []
-                                             }
-                                           (UnQual
-                                              SrcSpanInfo
-                                                { srcInfoSpan =
-                                                    SrcSpan
-                                                      "tests/examples/DerivingVia.hs" 254 25 254 26
-                                                , srcInfoPoints = []
-                                                }
-                                              (Ident
-                                                 SrcSpanInfo
-                                                   { srcInfoSpan =
-                                                       SrcSpan
-                                                         "tests/examples/DerivingVia.hs"
-                                                         254
-                                                         25
-                                                         254
-                                                         26
-                                                   , srcInfoPoints = []
-                                                   }
-                                                 "a")))))
-                                  Nothing
-                              , PatBind
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 26
-                                    , srcInfoPoints = []
-                                    }
-                                  (PApp
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 19
-                                       , srcInfoPoints = []
-                                       }
-                                     (UnQual
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 11
-                                          , srcInfoPoints = []
-                                          }
-                                        (Ident
-                                           SrcSpanInfo
-                                             { srcInfoSpan =
-                                                 SrcSpan
-                                                   "tests/examples/DerivingVia.hs" 255 5 255 11
-                                             , srcInfoPoints = []
-                                             }
-                                           "Sorted"))
-                                     [ PWildCard
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 255 12 255 13
-                                           , srcInfoPoints = []
-                                           }
-                                     , PVar
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 255 15 255 17
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 255 15 255 17
-                                              , srcInfoPoints = []
-                                              }
-                                            "b'")
-                                     , PWildCard
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 255 18 255 19
-                                           , srcInfoPoints = []
-                                           }
-                                     ])
-                                  (UnGuardedRhs
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/DerivingVia.hs" 255 21 255 26
-                                       , srcInfoPoints =
-                                           [ SrcSpan "tests/examples/DerivingVia.hs" 255 21 255 22 ]
-                                       }
-                                     (App
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/DerivingVia.hs" 255 23 255 26
-                                          , srcInfoPoints = []
-                                          }
-                                        (Var
-                                           SrcSpanInfo
-                                             { srcInfoSpan =
-                                                 SrcSpan
-                                                   "tests/examples/DerivingVia.hs" 255 23 255 24
-                                             , srcInfoPoints = []
-                                             }
-                                           (UnQual
-                                              SrcSpanInfo
-                                                { srcInfoSpan =
-                                                    SrcSpan
-                                                      "tests/examples/DerivingVia.hs" 255 23 255 24
-                                                , srcInfoPoints = []
-                                                }
-                                              (Ident
-                                                 SrcSpanInfo
-                                                   { srcInfoSpan =
-                                                       SrcSpan
-                                                         "tests/examples/DerivingVia.hs"
-                                                         255
-                                                         23
-                                                         255
-                                                         24
-                                                   , srcInfoPoints = []
-                                                   }
-                                                 "f")))
-                                        (Var
-                                           SrcSpanInfo
-                                             { srcInfoSpan =
-                                                 SrcSpan
-                                                   "tests/examples/DerivingVia.hs" 255 25 255 26
-                                             , srcInfoPoints = []
-                                             }
-                                           (UnQual
-                                              SrcSpanInfo
-                                                { srcInfoSpan =
-                                                    SrcSpan
-                                                      "tests/examples/DerivingVia.hs" 255 25 255 26
-                                                , srcInfoPoints = []
-                                                }
-                                              (Ident
-                                                 SrcSpanInfo
-                                                   { srcInfoSpan =
-                                                       SrcSpan
-                                                         "tests/examples/DerivingVia.hs"
-                                                         255
-                                                         25
-                                                         255
-                                                         26
-                                                   , srcInfoPoints = []
-                                                   }
-                                                 "b")))))
-                                  Nothing
-                              , PatBind
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 26
-                                    , srcInfoPoints = []
-                                    }
-                                  (PApp
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 20
-                                       , srcInfoPoints = []
-                                       }
-                                     (UnQual
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 11
-                                          , srcInfoPoints = []
-                                          }
-                                        (Ident
-                                           SrcSpanInfo
-                                             { srcInfoSpan =
-                                                 SrcSpan
-                                                   "tests/examples/DerivingVia.hs" 256 5 256 11
-                                             , srcInfoPoints = []
-                                             }
-                                           "Sorted"))
-                                     [ PWildCard
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 256 12 256 13
-                                           , srcInfoPoints = []
-                                           }
-                                     , PWildCard
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 256 15 256 16
-                                           , srcInfoPoints = []
-                                           }
-                                     , PVar
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 256 18 256 20
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 256 18 256 20
-                                              , srcInfoPoints = []
-                                              }
-                                            "c'")
-                                     ])
-                                  (UnGuardedRhs
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/DerivingVia.hs" 256 21 256 26
-                                       , srcInfoPoints =
-                                           [ SrcSpan "tests/examples/DerivingVia.hs" 256 21 256 22 ]
-                                       }
-                                     (App
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/DerivingVia.hs" 256 23 256 26
-                                          , srcInfoPoints = []
-                                          }
-                                        (Var
-                                           SrcSpanInfo
-                                             { srcInfoSpan =
-                                                 SrcSpan
-                                                   "tests/examples/DerivingVia.hs" 256 23 256 24
-                                             , srcInfoPoints = []
-                                             }
-                                           (UnQual
-                                              SrcSpanInfo
-                                                { srcInfoSpan =
-                                                    SrcSpan
-                                                      "tests/examples/DerivingVia.hs" 256 23 256 24
-                                                , srcInfoPoints = []
-                                                }
-                                              (Ident
-                                                 SrcSpanInfo
-                                                   { srcInfoSpan =
-                                                       SrcSpan
-                                                         "tests/examples/DerivingVia.hs"
-                                                         256
-                                                         23
-                                                         256
-                                                         24
-                                                   , srcInfoPoints = []
-                                                   }
-                                                 "f")))
-                                        (Var
-                                           SrcSpanInfo
-                                             { srcInfoSpan =
-                                                 SrcSpan
-                                                   "tests/examples/DerivingVia.hs" 256 25 256 26
-                                             , srcInfoPoints = []
-                                             }
-                                           (UnQual
-                                              SrcSpanInfo
-                                                { srcInfoSpan =
-                                                    SrcSpan
-                                                      "tests/examples/DerivingVia.hs" 256 25 256 26
-                                                , srcInfoPoints = []
-                                                }
-                                              (Ident
-                                                 SrcSpanInfo
-                                                   { srcInfoSpan =
-                                                       SrcSpan
-                                                         "tests/examples/DerivingVia.hs"
-                                                         256
-                                                         25
-                                                         256
-                                                         26
-                                                   , srcInfoPoints = []
-                                                   }
-                                                 "c")))))
-                                  Nothing
-                              ]))
-                    ])
-             ])
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 258 1 265 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 258 1 258 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 258 25 258 30
-                , SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 265 1 265 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 24
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 24
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 17
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 17
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 17
-                           , srcInfoPoints = []
-                           }
-                         "Pointed")))
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 258 18 258 24
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 258 18 258 24
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 258 18 258 24
-                           , srcInfoPoints = []
-                           }
-                         "Sorted")))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 27
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 259 11 259 13 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 27
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 259 11 259 13 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 10
-                          , srcInfoPoints = []
-                          }
-                        "pointed"
-                    ]
-                    (TyFun
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 259 14 259 27
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 259 16 259 18 ]
-                         }
-                       (TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 259 14 259 15
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 259 14 259 15
-                               , srcInfoPoints = []
-                               }
-                             "a"))
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 27
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 25
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 25
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 25
-                                     , srcInfoPoints = []
-                                     }
-                                   "Sorted")))
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 259 26 259 27
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 259 26 259 27
-                                  , srcInfoPoints = []
-                                  }
-                                "a")))))
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 27
-                   , srcInfoPoints = []
-                   }
-                 (FunBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 27
-                      , srcInfoPoints = []
-                      }
-                    [ Match
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 27
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 10
-                             , srcInfoPoints = []
-                             }
-                           "pointed")
-                        [ PVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 260 11 260 12
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 260 11 260 12
-                                 , srcInfoPoints = []
-                                 }
-                               "a")
-                        ]
-                        (UnGuardedRhs
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 260 13 260 27
-                             , srcInfoPoints =
-                                 [ SrcSpan "tests/examples/DerivingVia.hs" 260 13 260 14 ]
-                             }
-                           (App
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 27
-                                , srcInfoPoints = []
-                                }
-                              (App
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 25
-                                   , srcInfoPoints = []
-                                   }
-                                 (App
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 23
-                                      , srcInfoPoints = []
-                                      }
-                                    (Con
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 21
-                                         , srcInfoPoints = []
-                                         }
-                                       (UnQual
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 260 15 260 21
-                                            , srcInfoPoints = []
-                                            }
-                                          (Ident
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 260 15 260 21
-                                               , srcInfoPoints = []
-                                               }
-                                             "Sorted")))
-                                    (Var
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 260 22 260 23
-                                         , srcInfoPoints = []
-                                         }
-                                       (UnQual
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 260 22 260 23
-                                            , srcInfoPoints = []
-                                            }
-                                          (Ident
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 260 22 260 23
-                                               , srcInfoPoints = []
-                                               }
-                                             "a"))))
-                                 (Var
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 260 24 260 25
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 260 24 260 25
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 260 24 260 25
-                                            , srcInfoPoints = []
-                                            }
-                                          "a"))))
-                              (Var
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 260 26 260 27
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 260 26 260 27
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 260 26 260 27
-                                         , srcInfoPoints = []
-                                         }
-                                       "a")))))
-                        Nothing
-                    ])
-             ])
-      , ClassDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 265 1 266 22
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 265 1 265 6
-                , SrcSpan "tests/examples/DerivingVia.hs" 265 16 265 21
-                , SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 268 1 268 0
-                ]
-            }
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 265 7 265 15
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 265 7 265 13
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 265 7 265 13
-                     , srcInfoPoints = []
-                     }
-                   "IsZero"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 265 14 265 15
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 265 14 265 15
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          []
-          (Just
-             [ ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 22
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 266 10 266 12 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 22
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 266 10 266 12 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 9
-                          , srcInfoPoints = []
-                          }
-                        "isZero"
-                    ]
-                    (TyFun
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 266 13 266 22
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 266 15 266 17 ]
-                         }
-                       (TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 266 13 266 14
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 266 13 266 14
-                               , srcInfoPoints = []
-                               }
-                             "a"))
-                       (TyCon
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 266 18 266 22
-                            , srcInfoPoints = []
-                            }
-                          (UnQual
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 266 18 266 22
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 266 18 266 22
-                                  , srcInfoPoints = []
-                                  }
-                                "Bool")))))
-             ])
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 268 1 268 41
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 268 25 268 26 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 268 1 268 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 268 9 268 24
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 268 9 268 21
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 268 9 268 21
-                     , srcInfoPoints = []
-                     }
-                   "WrappedNumEq"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 268 23 268 24
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 268 23 268 24
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 268 27 268 41
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 268 27 268 41
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 268 27 268 39
-                      , srcInfoPoints = []
-                      }
-                    "WrappedNumEq")
-                 [ TyVar
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 268 40 268 41
-                       , srcInfoPoints = []
-                       }
-                     (Ident
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 268 40 268 41
-                          , srcInfoPoints = []
-                          }
-                        "a")
-                 ])
-          ]
-          []
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 269 1 269 41
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 269 25 269 26 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 269 1 269 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 269 9 269 24
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 269 9 269 20
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 269 9 269 20
-                     , srcInfoPoints = []
-                     }
-                   "WrappedShow"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 269 23 269 24
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 269 23 269 24
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 269 27 269 41
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 269 27 269 41
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 269 27 269 38
-                      , srcInfoPoints = []
-                      }
-                    "WrappedShow")
-                 [ TyVar
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 269 40 269 41
-                       , srcInfoPoints = []
-                       }
-                     (Ident
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 269 40 269 41
-                          , srcInfoPoints = []
-                          }
-                        "a")
-                 ])
-          ]
-          []
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 270 1 270 42
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 270 25 270 26 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 270 1 270 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 270 9 270 24
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 270 9 270 22
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 270 9 270 22
-                     , srcInfoPoints = []
-                     }
-                   "WrappedNumEq2"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 270 23 270 24
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 270 23 270 24
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 270 27 270 42
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 270 27 270 42
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 270 27 270 40
-                      , srcInfoPoints = []
-                      }
-                    "WrappedNumEq2")
-                 [ TyVar
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 270 41 270 42
-                       , srcInfoPoints = []
-                       }
-                     (Ident
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 270 41 270 42
-                          , srcInfoPoints = []
-                          }
-                        "a")
-                 ])
-          ]
-          []
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 272 1 276 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 272 1 272 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 272 51 272 56
-                , SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 276 1 276 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 272 10 272 50
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxTuple
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 272 10 272 26
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 272 10 272 11
-                         , SrcSpan "tests/examples/DerivingVia.hs" 272 16 272 17
-                         , SrcSpan "tests/examples/DerivingVia.hs" 272 22 272 23
-                         , SrcSpan "tests/examples/DerivingVia.hs" 272 24 272 26
-                         ]
-                     }
-                   [ ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 16
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 14
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 14
-                               , srcInfoPoints = []
-                               }
-                             "Num"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 272 15 272 16
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 272 15 272 16
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 22
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 20
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 20
-                               , srcInfoPoints = []
-                               }
-                             "Eq"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 272 21 272 22
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 272 21 272 22
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   ]))
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 50
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 33
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 33
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 33
-                           , srcInfoPoints = []
-                           }
-                         "IsZero")))
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 272 34 272 50
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 272 34 272 35
-                         , SrcSpan "tests/examples/DerivingVia.hs" 272 49 272 50
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 49
-                        , srcInfoPoints = []
-                        }
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 47
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 47
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 47
-                                 , srcInfoPoints = []
-                                 }
-                               "WrappedNumEq")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 272 48 272 49
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 272 48 272 49
-                              , srcInfoPoints = []
-                              }
-                            "a"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 35
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 273 10 273 12 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 35
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 273 10 273 12 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 9
-                          , srcInfoPoints = []
-                          }
-                        "isZero"
-                    ]
-                    (TyFun
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 35
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 273 28 273 30 ]
-                         }
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 27
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 25
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 25
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 25
-                                     , srcInfoPoints = []
-                                     }
-                                   "WrappedNumEq")))
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 273 26 273 27
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 273 26 273 27
-                                  , srcInfoPoints = []
-                                  }
-                                "a")))
-                       (TyCon
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 273 31 273 35
-                            , srcInfoPoints = []
-                            }
-                          (UnQual
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 273 31 273 35
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 273 31 273 35
-                                  , srcInfoPoints = []
-                                  }
-                                "Bool")))))
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 35
-                   , srcInfoPoints = []
-                   }
-                 (FunBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 35
-                      , srcInfoPoints = []
-                      }
-                    [ Match
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 35
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 9
-                             , srcInfoPoints = []
-                             }
-                           "isZero")
-                        [ PParen
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 274 10 274 26
-                              , srcInfoPoints =
-                                  [ SrcSpan "tests/examples/DerivingVia.hs" 274 10 274 11
-                                  , SrcSpan "tests/examples/DerivingVia.hs" 274 25 274 26
-                                  ]
-                              }
-                            (PApp
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 274 11 274 25
-                                 , srcInfoPoints = []
-                                 }
-                               (UnQual
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 274 11 274 23
-                                    , srcInfoPoints = []
-                                    }
-                                  (Ident
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/DerivingVia.hs" 274 11 274 23
-                                       , srcInfoPoints = []
-                                       }
-                                     "WrappedNumEq"))
-                               [ PVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 274 24 274 25
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 274 24 274 25
-                                        , srcInfoPoints = []
-                                        }
-                                      "a")
-                               ])
-                        ]
-                        (UnGuardedRhs
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 274 27 274 35
-                             , srcInfoPoints =
-                                 [ SrcSpan "tests/examples/DerivingVia.hs" 274 27 274 28 ]
-                             }
-                           (InfixApp
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 274 29 274 35
-                                , srcInfoPoints = []
-                                }
-                              (Lit
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 274 29 274 30
-                                   , srcInfoPoints = []
-                                   }
-                                 (Int
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 274 29 274 30
-                                      , srcInfoPoints = []
-                                      }
-                                    0
-                                    "0"))
-                              (QVarOp
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 274 31 274 33
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 274 31 274 33
-                                      , srcInfoPoints = []
-                                      }
-                                    (Symbol
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 274 31 274 33
-                                         , srcInfoPoints = []
-                                         }
-                                       "==")))
-                              (Var
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 274 34 274 35
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 274 34 274 35
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 274 34 274 35
-                                         , srcInfoPoints = []
-                                         }
-                                       "a")))))
-                        Nothing
-                    ])
-             ])
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 276 1 280 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 276 1 276 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 276 43 276 48
-                , SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 280 1 280 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 42
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxSingle
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 19
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 276 17 276 19 ]
-                     }
-                   (ClassA
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 19
-                        , srcInfoPoints =
-                            [ SrcSpan "tests/examples/DerivingVia.hs" 276 17 276 19 ]
-                        }
-                      (UnQual
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 14
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 14
-                              , srcInfoPoints = []
-                              }
-                            "Show"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 276 15 276 16
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 276 15 276 16
-                               , srcInfoPoints = []
-                               }
-                             "a")
-                      ])))
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 42
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 26
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 26
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 26
-                           , srcInfoPoints = []
-                           }
-                         "IsZero")))
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 276 27 276 42
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 276 27 276 28
-                         , SrcSpan "tests/examples/DerivingVia.hs" 276 41 276 42
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 41
-                        , srcInfoPoints = []
-                        }
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 39
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 39
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 39
-                                 , srcInfoPoints = []
-                                 }
-                               "WrappedShow")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 276 40 276 41
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 276 40 276 41
-                              , srcInfoPoints = []
-                              }
-                            "a"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 34
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 277 10 277 12 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 34
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 277 10 277 12 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 9
-                          , srcInfoPoints = []
-                          }
-                        "isZero"
-                    ]
-                    (TyFun
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 34
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 277 27 277 29 ]
-                         }
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 26
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 24
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 24
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 24
-                                     , srcInfoPoints = []
-                                     }
-                                   "WrappedShow")))
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 277 25 277 26
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 277 25 277 26
-                                  , srcInfoPoints = []
-                                  }
-                                "a")))
-                       (TyCon
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 277 30 277 34
-                            , srcInfoPoints = []
-                            }
-                          (UnQual
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 277 30 277 34
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 277 30 277 34
-                                  , srcInfoPoints = []
-                                  }
-                                "Bool")))))
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 41
-                   , srcInfoPoints = []
-                   }
-                 (FunBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 41
-                      , srcInfoPoints = []
-                      }
-                    [ Match
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 41
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 9
-                             , srcInfoPoints = []
-                             }
-                           "isZero")
-                        [ PParen
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 278 10 278 25
-                              , srcInfoPoints =
-                                  [ SrcSpan "tests/examples/DerivingVia.hs" 278 10 278 11
-                                  , SrcSpan "tests/examples/DerivingVia.hs" 278 24 278 25
-                                  ]
-                              }
-                            (PApp
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 278 11 278 24
-                                 , srcInfoPoints = []
-                                 }
-                               (UnQual
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 278 11 278 22
-                                    , srcInfoPoints = []
-                                    }
-                                  (Ident
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/DerivingVia.hs" 278 11 278 22
-                                       , srcInfoPoints = []
-                                       }
-                                     "WrappedShow"))
-                               [ PVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 278 23 278 24
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 278 23 278 24
-                                        , srcInfoPoints = []
-                                        }
-                                      "a")
-                               ])
-                        ]
-                        (UnGuardedRhs
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 278 26 278 41
-                             , srcInfoPoints =
-                                 [ SrcSpan "tests/examples/DerivingVia.hs" 278 26 278 27 ]
-                             }
-                           (InfixApp
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 278 28 278 41
-                                , srcInfoPoints = []
-                                }
-                              (Lit
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 278 28 278 31
-                                   , srcInfoPoints = []
-                                   }
-                                 (String
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 278 28 278 31
-                                      , srcInfoPoints = []
-                                      }
-                                    "0"
-                                    "0"))
-                              (QVarOp
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 278 32 278 34
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 278 32 278 34
-                                      , srcInfoPoints = []
-                                      }
-                                    (Symbol
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 278 32 278 34
-                                         , srcInfoPoints = []
-                                         }
-                                       "==")))
-                              (App
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 278 35 278 41
-                                   , srcInfoPoints = []
-                                   }
-                                 (Var
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 278 35 278 39
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 278 35 278 39
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 278 35 278 39
-                                            , srcInfoPoints = []
-                                            }
-                                          "show")))
-                                 (Var
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 278 40 278 41
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 278 40 278 41
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 278 40 278 41
-                                            , srcInfoPoints = []
-                                            }
-                                          "a"))))))
-                        Nothing
-                    ])
-             ])
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 280 1 284 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 280 1 280 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 280 52 280 57
-                , SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 284 1 284 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 280 10 280 51
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxTuple
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 280 10 280 26
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 280 10 280 11
-                         , SrcSpan "tests/examples/DerivingVia.hs" 280 16 280 17
-                         , SrcSpan "tests/examples/DerivingVia.hs" 280 22 280 23
-                         , SrcSpan "tests/examples/DerivingVia.hs" 280 24 280 26
-                         ]
-                     }
-                   [ ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 16
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 14
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 14
-                               , srcInfoPoints = []
-                               }
-                             "Num"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 280 15 280 16
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 280 15 280 16
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 22
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 20
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 20
-                               , srcInfoPoints = []
-                               }
-                             "Eq"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 280 21 280 22
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 280 21 280 22
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   ]))
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 51
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 33
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 33
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 33
-                           , srcInfoPoints = []
-                           }
-                         "IsZero")))
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 280 34 280 51
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 280 34 280 35
-                         , SrcSpan "tests/examples/DerivingVia.hs" 280 50 280 51
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 50
-                        , srcInfoPoints = []
-                        }
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 48
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 48
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 48
-                                 , srcInfoPoints = []
-                                 }
-                               "WrappedNumEq2")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 280 49 280 50
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 280 49 280 50
-                              , srcInfoPoints = []
-                              }
-                            "a"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 36
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 281 10 281 12 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 36
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 281 10 281 12 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 9
-                          , srcInfoPoints = []
-                          }
-                        "isZero"
-                    ]
-                    (TyFun
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 36
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 281 29 281 31 ]
-                         }
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 28
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 26
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 26
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 26
-                                     , srcInfoPoints = []
-                                     }
-                                   "WrappedNumEq2")))
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 281 27 281 28
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 281 27 281 28
-                                  , srcInfoPoints = []
-                                  }
-                                "a")))
-                       (TyCon
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 281 32 281 36
-                            , srcInfoPoints = []
-                            }
-                          (UnQual
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 281 32 281 36
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 281 32 281 36
-                                  , srcInfoPoints = []
-                                  }
-                                "Bool")))))
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 40
-                   , srcInfoPoints = []
-                   }
-                 (FunBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 40
-                      , srcInfoPoints = []
-                      }
-                    [ Match
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 40
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 9
-                             , srcInfoPoints = []
-                             }
-                           "isZero")
-                        [ PParen
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 282 10 282 27
-                              , srcInfoPoints =
-                                  [ SrcSpan "tests/examples/DerivingVia.hs" 282 10 282 11
-                                  , SrcSpan "tests/examples/DerivingVia.hs" 282 26 282 27
-                                  ]
-                              }
-                            (PApp
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 282 11 282 26
-                                 , srcInfoPoints = []
-                                 }
-                               (UnQual
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 282 11 282 24
-                                    , srcInfoPoints = []
-                                    }
-                                  (Ident
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/DerivingVia.hs" 282 11 282 24
-                                       , srcInfoPoints = []
-                                       }
-                                     "WrappedNumEq2"))
-                               [ PVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 282 25 282 26
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 282 25 282 26
-                                        , srcInfoPoints = []
-                                        }
-                                      "a")
-                               ])
-                        ]
-                        (UnGuardedRhs
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 282 28 282 40
-                             , srcInfoPoints =
-                                 [ SrcSpan "tests/examples/DerivingVia.hs" 282 28 282 29 ]
-                             }
-                           (InfixApp
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 40
-                                , srcInfoPoints = []
-                                }
-                              (InfixApp
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 35
-                                   , srcInfoPoints = []
-                                   }
-                                 (Var
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 31
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 31
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 282 30 282 31
-                                            , srcInfoPoints = []
-                                            }
-                                          "a")))
-                                 (QVarOp
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 282 32 282 33
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 282 32 282 33
-                                         , srcInfoPoints = []
-                                         }
-                                       (Symbol
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 282 32 282 33
-                                            , srcInfoPoints = []
-                                            }
-                                          "+")))
-                                 (Var
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 282 34 282 35
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 282 34 282 35
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 282 34 282 35
-                                            , srcInfoPoints = []
-                                            }
-                                          "a"))))
-                              (QVarOp
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 282 36 282 38
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 282 36 282 38
-                                      , srcInfoPoints = []
-                                      }
-                                    (Symbol
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 282 36 282 38
-                                         , srcInfoPoints = []
-                                         }
-                                       "==")))
-                              (Var
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 282 39 282 40
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 282 39 282 40
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 282 39 282 40
-                                         , srcInfoPoints = []
-                                         }
-                                       "a")))))
-                        Nothing
-                    ])
-             ])
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 284 1 286 18
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 284 13 284 14 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 284 1 284 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHead
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 284 9 284 12
-               , srcInfoPoints = []
-               }
-             (Ident
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 284 9 284 12
-                  , srcInfoPoints = []
-                  }
-                "INT"))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 284 15 284 22
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 284 15 284 22
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 284 15 284 18
-                      , srcInfoPoints = []
-                      }
-                    "INT")
-                 [ TyCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 284 19 284 22
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 284 19 284 22
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 284 19 284 22
-                             , srcInfoPoints = []
-                             }
-                           "Int"))
-                 ])
-          ]
-          [ Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 285 3 285 24
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 285 3 285 11 ]
-                }
-              (Just
-                 (DerivNewtype
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 285 12 285 19
-                      , srcInfoPoints = []
-                      }))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24
-                             , srcInfoPoints = []
-                             }
-                           "Show")))
-              ]
-          , Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 286 3 286 18
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 286 3 286 11 ]
-                }
-              (Just
-                 (DerivVia
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 286 19 286 22
-                      , srcInfoPoints = []
-                      }
-                    (TyParen
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 286 23 286 41
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 286 23 286 24
-                             , SrcSpan "tests/examples/DerivingVia.hs" 286 40 286 41
-                             ]
-                         }
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 40
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 36
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 36
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 36
-                                     , srcInfoPoints = []
-                                     }
-                                   "WrappedNumEq")))
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 286 37 286 40
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 286 37 286 40
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 286 37 286 40
-                                     , srcInfoPoints = []
-                                     }
-                                   "Int")))))))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18
-                             , srcInfoPoints = []
-                             }
-                           "IsZero")))
-              ]
-          ]
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 288 1 288 41
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 288 14 288 15 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 288 1 288 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHead
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 288 9 288 13
-               , srcInfoPoints = []
-               }
-             (Ident
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 288 9 288 13
-                  , srcInfoPoints = []
-                  }
-                "VOID"))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 288 16 288 25
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 288 16 288 25
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 288 16 288 20
-                      , srcInfoPoints = []
-                      }
-                    "VOID")
-                 [ TyCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 288 21 288 25
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 288 21 288 25
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 288 21 288 25
-                             , srcInfoPoints = []
-                             }
-                           "Void"))
-                 ])
-          ]
-          [ Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 288 26 288 41
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 288 26 288 34 ]
-                }
-              (Just
-                 (DerivVia
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 288 42 288 45
-                      , srcInfoPoints = []
-                      }
-                    (TyParen
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 288 46 288 64
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 288 46 288 47
-                             , SrcSpan "tests/examples/DerivingVia.hs" 288 63 288 64
-                             ]
-                         }
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 63
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 58
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 58
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 58
-                                     , srcInfoPoints = []
-                                     }
-                                   "WrappedShow")))
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 288 59 288 63
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 288 59 288 63
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 288 59 288 63
-                                     , srcInfoPoints = []
-                                     }
-                                   "Void")))))))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41
-                             , srcInfoPoints = []
-                             }
-                           "IsZero")))
-              ]
-          ]
-      , ClassDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 293 1 301 14
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 293 1 293 6
-                , SrcSpan "tests/examples/DerivingVia.hs" 293 38 293 43
-                , SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 296 3 296 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 303 1 303 0
-                ]
-            }
-          (Just
-             (CxSingle
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 21
-                  , srcInfoPoints =
-                      [ SrcSpan "tests/examples/DerivingVia.hs" 293 19 293 21 ]
-                  }
-                (ClassA
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 21
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 293 19 293 21 ]
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 16
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 16
-                           , srcInfoPoints = []
-                           }
-                         "Bifunctor"))
-                   [ TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 293 17 293 18
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 293 17 293 18
-                            , srcInfoPoints = []
-                            }
-                          "p")
-                   ])))
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 293 22 293 37
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 293 22 293 35
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 293 22 293 35
-                     , srcInfoPoints = []
-                     }
-                   "Biapplicative"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 293 36 293 37
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 293 36 293 37
-                     , srcInfoPoints = []
-                     }
-                   "p")))
-          []
-          (Just
-             [ ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 28
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 294 10 294 12 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 28
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 294 10 294 12 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 9
-                          , srcInfoPoints = []
-                          }
-                        "bipure"
-                    ]
-                    (TyFun
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 294 13 294 28
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 294 15 294 17 ]
-                         }
-                       (TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 294 13 294 14
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 294 13 294 14
-                               , srcInfoPoints = []
-                               }
-                             "a"))
-                       (TyFun
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 294 18 294 28
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 294 20 294 22 ]
-                            }
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 294 18 294 19
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 294 18 294 19
-                                  , srcInfoPoints = []
-                                  }
-                                "b"))
-                          (TyApp
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 28
-                               , srcInfoPoints = []
-                               }
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 26
-                                  , srcInfoPoints = []
-                                  }
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 24
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 24
-                                        , srcInfoPoints = []
-                                        }
-                                      "p"))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 294 25 294 26
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 294 25 294 26
-                                        , srcInfoPoints = []
-                                        }
-                                      "a")))
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 294 27 294 28
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 294 27 294 28
-                                     , srcInfoPoints = []
-                                     }
-                                   "b"))))))
-             , ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 296 3 301 14
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 297 5 297 7 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 296 3 301 14
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 297 5 297 7 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 296 3 296 11
-                          , srcInfoPoints = []
-                          }
-                        "biliftA2"
-                    ]
-                    (TyFun
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 297 8 301 14
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 298 5 298 7 ]
-                         }
-                       (TyParen
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 297 8 297 23
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 297 8 297 9
-                                , SrcSpan "tests/examples/DerivingVia.hs" 297 22 297 23
-                                ]
-                            }
-                          (TyFun
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 297 9 297 22
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 297 12 297 14 ]
-                               }
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 297 9 297 10
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 297 9 297 10
-                                     , srcInfoPoints = []
-                                     }
-                                   "a"))
-                             (TyFun
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 297 15 297 22
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 297 18 297 20 ]
-                                  }
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 297 15 297 16
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 297 15 297 16
-                                        , srcInfoPoints = []
-                                        }
-                                      "b"))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 297 21 297 22
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 297 21 297 22
-                                        , srcInfoPoints = []
-                                        }
-                                      "c")))))
-                       (TyFun
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 298 8 301 14
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 299 5 299 7 ]
-                            }
-                          (TyParen
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 298 8 298 24
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 298 8 298 9
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 298 23 298 24
-                                   ]
-                               }
-                             (TyFun
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 298 9 298 23
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 298 12 298 14 ]
-                                  }
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 298 9 298 11
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 298 9 298 11
-                                        , srcInfoPoints = []
-                                        }
-                                      "a'"))
-                                (TyFun
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 298 15 298 23
-                                     , srcInfoPoints =
-                                         [ SrcSpan "tests/examples/DerivingVia.hs" 298 18 298 20 ]
-                                     }
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 298 15 298 17
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 298 15 298 17
-                                           , srcInfoPoints = []
-                                           }
-                                         "b'"))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 298 21 298 23
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 298 21 298 23
-                                           , srcInfoPoints = []
-                                           }
-                                         "c'")))))
-                          (TyFun
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 299 8 301 14
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 300 5 300 7 ]
-                               }
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 14
-                                  , srcInfoPoints = []
-                                  }
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 11
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 9
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 9
-                                           , srcInfoPoints = []
-                                           }
-                                         "p"))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 299 10 299 11
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 299 10 299 11
-                                           , srcInfoPoints = []
-                                           }
-                                         "a")))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 299 12 299 14
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 299 12 299 14
-                                        , srcInfoPoints = []
-                                        }
-                                      "a'")))
-                             (TyFun
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 300 8 301 14
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 301 5 301 7 ]
-                                  }
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 300 8 300 14
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyApp
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 300 8 300 11
-                                        , srcInfoPoints = []
-                                        }
-                                      (TyVar
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 300 8 300 9
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 300 8 300 9
-                                              , srcInfoPoints = []
-                                              }
-                                            "p"))
-                                      (TyVar
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 300 10 300 11
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 300 10 300 11
-                                              , srcInfoPoints = []
-                                              }
-                                            "b")))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 300 12 300 14
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 300 12 300 14
-                                           , srcInfoPoints = []
-                                           }
-                                         "b'")))
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 301 8 301 14
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyApp
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 301 8 301 11
-                                        , srcInfoPoints = []
-                                        }
-                                      (TyVar
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 301 8 301 9
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 301 8 301 9
-                                              , srcInfoPoints = []
-                                              }
-                                            "p"))
-                                      (TyVar
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 301 10 301 11
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 301 10 301 11
-                                              , srcInfoPoints = []
-                                              }
-                                            "c")))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 301 12 301 14
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 301 12 301 14
-                                           , srcInfoPoints = []
-                                           }
-                                         "c'"))))))))
-             ])
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 303 1 309 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 303 1 303 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 303 28 303 33
-                , SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 306 3 306 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 309 1 309 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 27
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 27
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 23
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 23
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 23
-                           , srcInfoPoints = []
-                           }
-                         "Biapplicative")))
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 27
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 25
-                         , SrcSpan "tests/examples/DerivingVia.hs" 303 25 303 26
-                         , SrcSpan "tests/examples/DerivingVia.hs" 303 26 303 27
-                         ]
-                     }
-                   (Special
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 27
-                        , srcInfoPoints =
-                            [ SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 25
-                            , SrcSpan "tests/examples/DerivingVia.hs" 303 25 303 26
-                            , SrcSpan "tests/examples/DerivingVia.hs" 303 26 303 27
-                            ]
-                        }
-                      (TupleCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 27
-                           , srcInfoPoints =
-                               [ SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 25
-                               , SrcSpan "tests/examples/DerivingVia.hs" 303 25 303 26
-                               , SrcSpan "tests/examples/DerivingVia.hs" 303 26 303 27
-                               ]
-                           }
-                         Boxed
-                         2)))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 15
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 15
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 9
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 9
-                            , srcInfoPoints = []
-                            }
-                          "bipure"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 304 10 304 15
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 304 10 304 11 ]
-                         }
-                       (Con
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 15
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 13
-                                , SrcSpan "tests/examples/DerivingVia.hs" 304 13 304 14
-                                , SrcSpan "tests/examples/DerivingVia.hs" 304 14 304 15
-                                ]
-                            }
-                          (Special
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 15
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 13
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 304 13 304 14
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 304 14 304 15
-                                   ]
-                               }
-                             (TupleCon
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 15
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 13
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 304 13 304 14
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 304 14 304 15
-                                      ]
-                                  }
-                                Boxed
-                                2))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 306 3 307 22
-                   , srcInfoPoints = []
-                   }
-                 (FunBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 306 3 307 22
-                      , srcInfoPoints = []
-                      }
-                    [ Match
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 306 3 307 22
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 306 3 306 11
-                             , srcInfoPoints = []
-                             }
-                           "biliftA2")
-                        [ PVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 306 12 306 13
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 306 12 306 13
-                                 , srcInfoPoints = []
-                                 }
-                               "f")
-                        , PVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 306 14 306 16
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 306 14 306 16
-                                 , srcInfoPoints = []
-                                 }
-                               "f'")
-                        , PTuple
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 306 17 306 24
-                              , srcInfoPoints =
-                                  [ SrcSpan "tests/examples/DerivingVia.hs" 306 17 306 18
-                                  , SrcSpan "tests/examples/DerivingVia.hs" 306 19 306 20
-                                  , SrcSpan "tests/examples/DerivingVia.hs" 306 23 306 24
-                                  ]
-                              }
-                            Boxed
-                            [ PVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 306 18 306 19
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 306 18 306 19
-                                     , srcInfoPoints = []
-                                     }
-                                   "a")
-                            , PVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 306 21 306 23
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 306 21 306 23
-                                     , srcInfoPoints = []
-                                     }
-                                   "a'")
-                            ]
-                        , PTuple
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 306 25 306 32
-                              , srcInfoPoints =
-                                  [ SrcSpan "tests/examples/DerivingVia.hs" 306 25 306 26
-                                  , SrcSpan "tests/examples/DerivingVia.hs" 306 27 306 28
-                                  , SrcSpan "tests/examples/DerivingVia.hs" 306 31 306 32
-                                  ]
-                              }
-                            Boxed
-                            [ PVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 306 26 306 27
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 306 26 306 27
-                                     , srcInfoPoints = []
-                                     }
-                                   "b")
-                            , PVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 306 29 306 31
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 306 29 306 31
-                                     , srcInfoPoints = []
-                                     }
-                                   "b'")
-                            ]
-                        ]
-                        (UnGuardedRhs
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 306 33 307 22
-                             , srcInfoPoints =
-                                 [ SrcSpan "tests/examples/DerivingVia.hs" 306 33 306 34 ]
-                             }
-                           (Tuple
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 307 5 307 22
-                                , srcInfoPoints =
-                                    [ SrcSpan "tests/examples/DerivingVia.hs" 307 5 307 6
-                                    , SrcSpan "tests/examples/DerivingVia.hs" 307 11 307 12
-                                    , SrcSpan "tests/examples/DerivingVia.hs" 307 21 307 22
-                                    ]
-                                }
-                              Boxed
-                              [ App
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 11
-                                    , srcInfoPoints = []
-                                    }
-                                  (App
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 9
-                                       , srcInfoPoints = []
-                                       }
-                                     (Var
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 7
-                                          , srcInfoPoints = []
-                                          }
-                                        (UnQual
-                                           SrcSpanInfo
-                                             { srcInfoSpan =
-                                                 SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 7
-                                             , srcInfoPoints = []
-                                             }
-                                           (Ident
-                                              SrcSpanInfo
-                                                { srcInfoSpan =
-                                                    SrcSpan
-                                                      "tests/examples/DerivingVia.hs" 307 6 307 7
-                                                , srcInfoPoints = []
-                                                }
-                                              "f")))
-                                     (Var
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/DerivingVia.hs" 307 8 307 9
-                                          , srcInfoPoints = []
-                                          }
-                                        (UnQual
-                                           SrcSpanInfo
-                                             { srcInfoSpan =
-                                                 SrcSpan "tests/examples/DerivingVia.hs" 307 8 307 9
-                                             , srcInfoPoints = []
-                                             }
-                                           (Ident
-                                              SrcSpanInfo
-                                                { srcInfoSpan =
-                                                    SrcSpan
-                                                      "tests/examples/DerivingVia.hs" 307 8 307 9
-                                                , srcInfoPoints = []
-                                                }
-                                              "a"))))
-                                  (Var
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/DerivingVia.hs" 307 10 307 11
-                                       , srcInfoPoints = []
-                                       }
-                                     (UnQual
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/DerivingVia.hs" 307 10 307 11
-                                          , srcInfoPoints = []
-                                          }
-                                        (Ident
-                                           SrcSpanInfo
-                                             { srcInfoSpan =
-                                                 SrcSpan
-                                                   "tests/examples/DerivingVia.hs" 307 10 307 11
-                                             , srcInfoPoints = []
-                                             }
-                                           "b")))
-                              , App
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 307 13 307 21
-                                    , srcInfoPoints = []
-                                    }
-                                  (App
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/DerivingVia.hs" 307 13 307 18
-                                       , srcInfoPoints = []
-                                       }
-                                     (Var
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/DerivingVia.hs" 307 13 307 15
-                                          , srcInfoPoints = []
-                                          }
-                                        (UnQual
-                                           SrcSpanInfo
-                                             { srcInfoSpan =
-                                                 SrcSpan
-                                                   "tests/examples/DerivingVia.hs" 307 13 307 15
-                                             , srcInfoPoints = []
-                                             }
-                                           (Ident
-                                              SrcSpanInfo
-                                                { srcInfoSpan =
-                                                    SrcSpan
-                                                      "tests/examples/DerivingVia.hs" 307 13 307 15
-                                                , srcInfoPoints = []
-                                                }
-                                              "f'")))
-                                     (Var
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/DerivingVia.hs" 307 16 307 18
-                                          , srcInfoPoints = []
-                                          }
-                                        (UnQual
-                                           SrcSpanInfo
-                                             { srcInfoSpan =
-                                                 SrcSpan
-                                                   "tests/examples/DerivingVia.hs" 307 16 307 18
-                                             , srcInfoPoints = []
-                                             }
-                                           (Ident
-                                              SrcSpanInfo
-                                                { srcInfoSpan =
-                                                    SrcSpan
-                                                      "tests/examples/DerivingVia.hs" 307 16 307 18
-                                                , srcInfoPoints = []
-                                                }
-                                              "a'"))))
-                                  (Var
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/DerivingVia.hs" 307 19 307 21
-                                       , srcInfoPoints = []
-                                       }
-                                     (UnQual
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/DerivingVia.hs" 307 19 307 21
-                                          , srcInfoPoints = []
-                                          }
-                                        (Ident
-                                           SrcSpanInfo
-                                             { srcInfoSpan =
-                                                 SrcSpan
-                                                   "tests/examples/DerivingVia.hs" 307 19 307 21
-                                             , srcInfoPoints = []
-                                             }
-                                           "b'")))
-                              ]))
-                        Nothing
-                    ])
-             ])
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 309 1 310 50
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 309 25 309 26 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 309 1 309 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 24
-               , srcInfoPoints = []
-               }
-             (DHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 22
-                  , srcInfoPoints = []
-                  }
-                (DHApp
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 20
-                     , srcInfoPoints = []
-                     }
-                   (DHead
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 18
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 18
-                           , srcInfoPoints = []
-                           }
-                         "WrapBiapp"))
-                   (UnkindedVar
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 309 19 309 20
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 309 19 309 20
-                           , srcInfoPoints = []
-                           }
-                         "p")))
-                (UnkindedVar
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 309 21 309 22
-                     , srcInfoPoints = []
-                     }
-                   (Ident
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 309 21 309 22
-                        , srcInfoPoints = []
-                        }
-                      "a")))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 309 23 309 24
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 309 23 309 24
-                     , srcInfoPoints = []
-                     }
-                   "b")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 309 27 309 43
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 309 27 309 43
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 309 27 309 35
-                      , srcInfoPoints = []
-                      }
-                    "WrapBiap")
-                 [ TyParen
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 309 36 309 43
-                       , srcInfoPoints =
-                           [ SrcSpan "tests/examples/DerivingVia.hs" 309 36 309 37
-                           , SrcSpan "tests/examples/DerivingVia.hs" 309 42 309 43
-                           ]
-                       }
-                     (TyApp
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 42
-                          , srcInfoPoints = []
-                          }
-                        (TyApp
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 40
-                             , srcInfoPoints = []
-                             }
-                           (TyVar
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 38
-                                , srcInfoPoints = []
-                                }
-                              (Ident
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 38
-                                   , srcInfoPoints = []
-                                   }
-                                 "p"))
-                           (TyVar
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 309 39 309 40
-                                , srcInfoPoints = []
-                                }
-                              (Ident
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 309 39 309 40
-                                   , srcInfoPoints = []
-                                   }
-                                 "a")))
-                        (TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 309 41 309 42
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 309 41 309 42
-                                , srcInfoPoints = []
-                                }
-                              "b")))
-                 ])
-          ]
-          [ Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 310 3 310 50
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 310 3 310 11
-                    , SrcSpan "tests/examples/DerivingVia.hs" 310 20 310 21
-                    , SrcSpan "tests/examples/DerivingVia.hs" 310 30 310 31
-                    , SrcSpan "tests/examples/DerivingVia.hs" 310 45 310 46
-                    , SrcSpan "tests/examples/DerivingVia.hs" 310 49 310 50
-                    ]
-                }
-              (Just
-                 (DerivNewtype
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 310 12 310 19
-                      , srcInfoPoints = []
-                      }))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30
-                             , srcInfoPoints = []
-                             }
-                           "Bifunctor")))
-              , IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45
-                             , srcInfoPoints = []
-                             }
-                           "Biapplicative")))
-              , IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49
-                             , srcInfoPoints = []
-                             }
-                           "Eq")))
-              ]
-          ]
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 312 1 321 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 312 1 312 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 312 67 312 72
-                , SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 321 1 321 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 312 10 312 66
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxTuple
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 312 10 312 44
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 312 10 312 11
-                         , SrcSpan "tests/examples/DerivingVia.hs" 312 26 312 27
-                         , SrcSpan "tests/examples/DerivingVia.hs" 312 33 312 34
-                         , SrcSpan "tests/examples/DerivingVia.hs" 312 40 312 41
-                         , SrcSpan "tests/examples/DerivingVia.hs" 312 42 312 44
-                         ]
-                     }
-                   [ ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 26
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 24
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 24
-                               , srcInfoPoints = []
-                               }
-                             "Biapplicative"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 312 25 312 26
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 312 25 312 26
-                                , srcInfoPoints = []
-                                }
-                              "p")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 33
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 31
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 31
-                               , srcInfoPoints = []
-                               }
-                             "Num"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 312 32 312 33
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 312 32 312 33
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 40
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 38
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 38
-                               , srcInfoPoints = []
-                               }
-                             "Num"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 312 39 312 40
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 312 39 312 40
-                                , srcInfoPoints = []
-                                }
-                              "b")
-                       ]
-                   ]))
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 66
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 48
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 48
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 48
-                           , srcInfoPoints = []
-                           }
-                         "Num")))
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 312 49 312 66
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 312 49 312 50
-                         , SrcSpan "tests/examples/DerivingVia.hs" 312 65 312 66
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 65
-                        , srcInfoPoints = []
-                        }
-                      (TyApp
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 63
-                           , srcInfoPoints = []
-                           }
-                         (TyApp
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 61
-                              , srcInfoPoints = []
-                              }
-                            (TyCon
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 59
-                                 , srcInfoPoints = []
-                                 }
-                               (UnQual
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 59
-                                    , srcInfoPoints = []
-                                    }
-                                  (Ident
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 59
-                                       , srcInfoPoints = []
-                                       }
-                                     "WrapBiapp")))
-                            (TyVar
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 312 60 312 61
-                                 , srcInfoPoints = []
-                                 }
-                               (Ident
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 312 60 312 61
-                                    , srcInfoPoints = []
-                                    }
-                                  "p")))
-                         (TyVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 312 62 312 63
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 312 62 312 63
-                                 , srcInfoPoints = []
-                                 }
-                               "a")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 312 64 312 65
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 312 64 312 65
-                              , srcInfoPoints = []
-                              }
-                            "b"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 25
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 25
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 6
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 4
-                             , SrcSpan "tests/examples/DerivingVia.hs" 313 4 313 5
-                             , SrcSpan "tests/examples/DerivingVia.hs" 313 5 313 6
-                             ]
-                         }
-                       (Symbol
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 313 4 313 5
-                            , srcInfoPoints = []
-                            }
-                          "+"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 313 7 313 25
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 313 7 313 8 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 25
-                            , srcInfoPoints = []
-                            }
-                          (App
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 21
-                               , srcInfoPoints = []
-                               }
-                             (Var
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 17
-                                  , srcInfoPoints = []
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 17
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 17
-                                        , srcInfoPoints = []
-                                        }
-                                      "biliftA2")))
-                             (Var
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 21
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 19
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 313 19 313 20
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 313 20 313 21
-                                      ]
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 21
-                                     , srcInfoPoints =
-                                         [ SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 19
-                                         , SrcSpan "tests/examples/DerivingVia.hs" 313 19 313 20
-                                         , SrcSpan "tests/examples/DerivingVia.hs" 313 20 313 21
-                                         ]
-                                     }
-                                   (Symbol
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 313 19 313 20
-                                        , srcInfoPoints = []
-                                        }
-                                      "+"))))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 25
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 23
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 313 23 313 24
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 313 24 313 25
-                                   ]
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 25
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 23
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 313 23 313 24
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 313 24 313 25
-                                      ]
-                                  }
-                                (Symbol
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 313 23 313 24
-                                     , srcInfoPoints = []
-                                     }
-                                   "+")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 25
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 25
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 6
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 4
-                             , SrcSpan "tests/examples/DerivingVia.hs" 314 4 314 5
-                             , SrcSpan "tests/examples/DerivingVia.hs" 314 5 314 6
-                             ]
-                         }
-                       (Symbol
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 314 4 314 5
-                            , srcInfoPoints = []
-                            }
-                          "-"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 314 7 314 25
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 314 7 314 8 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 25
-                            , srcInfoPoints = []
-                            }
-                          (App
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 21
-                               , srcInfoPoints = []
-                               }
-                             (Var
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 17
-                                  , srcInfoPoints = []
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 17
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 17
-                                        , srcInfoPoints = []
-                                        }
-                                      "biliftA2")))
-                             (Var
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 21
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 19
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 314 19 314 20
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 314 20 314 21
-                                      ]
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 21
-                                     , srcInfoPoints =
-                                         [ SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 19
-                                         , SrcSpan "tests/examples/DerivingVia.hs" 314 19 314 20
-                                         , SrcSpan "tests/examples/DerivingVia.hs" 314 20 314 21
-                                         ]
-                                     }
-                                   (Symbol
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 314 19 314 20
-                                        , srcInfoPoints = []
-                                        }
-                                      "*"))))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 25
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 23
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 314 23 314 24
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 314 24 314 25
-                                   ]
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 25
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 23
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 314 23 314 24
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 314 24 314 25
-                                      ]
-                                  }
-                                (Symbol
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 314 23 314 24
-                                     , srcInfoPoints = []
-                                     }
-                                   "*")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 25
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 25
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 6
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 4
-                             , SrcSpan "tests/examples/DerivingVia.hs" 315 4 315 5
-                             , SrcSpan "tests/examples/DerivingVia.hs" 315 5 315 6
-                             ]
-                         }
-                       (Symbol
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 315 4 315 5
-                            , srcInfoPoints = []
-                            }
-                          "*"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 315 7 315 25
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 315 7 315 8 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 25
-                            , srcInfoPoints = []
-                            }
-                          (App
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 21
-                               , srcInfoPoints = []
-                               }
-                             (Var
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 17
-                                  , srcInfoPoints = []
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 17
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 17
-                                        , srcInfoPoints = []
-                                        }
-                                      "biliftA2")))
-                             (Var
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 21
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 19
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 315 19 315 20
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 315 20 315 21
-                                      ]
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 21
-                                     , srcInfoPoints =
-                                         [ SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 19
-                                         , SrcSpan "tests/examples/DerivingVia.hs" 315 19 315 20
-                                         , SrcSpan "tests/examples/DerivingVia.hs" 315 20 315 21
-                                         ]
-                                     }
-                                   (Symbol
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 315 19 315 20
-                                        , srcInfoPoints = []
-                                        }
-                                      "*"))))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 25
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 23
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 315 23 315 24
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 315 24 315 25
-                                   ]
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 25
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 23
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 315 23 315 24
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 315 24 315 25
-                                      ]
-                                  }
-                                (Symbol
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 315 23 315 24
-                                     , srcInfoPoints = []
-                                     }
-                                   "*")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 31
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 31
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 9
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 9
-                            , srcInfoPoints = []
-                            }
-                          "negate"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 316 10 316 31
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 316 10 316 11 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 31
-                            , srcInfoPoints = []
-                            }
-                          (App
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 24
-                               , srcInfoPoints = []
-                               }
-                             (Var
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 17
-                                  , srcInfoPoints = []
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 17
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 17
-                                        , srcInfoPoints = []
-                                        }
-                                      "bimap")))
-                             (Var
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 316 18 316 24
-                                  , srcInfoPoints = []
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 316 18 316 24
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 316 18 316 24
-                                        , srcInfoPoints = []
-                                        }
-                                      "negate"))))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 316 25 316 31
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 316 25 316 31
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 316 25 316 31
-                                     , srcInfoPoints = []
-                                     }
-                                   "negate")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 22
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 22
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 6
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 6
-                            , srcInfoPoints = []
-                            }
-                          "abs"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 317 7 317 22
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 317 7 317 8 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 22
-                            , srcInfoPoints = []
-                            }
-                          (App
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 18
-                               , srcInfoPoints = []
-                               }
-                             (Var
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 14
-                                  , srcInfoPoints = []
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 14
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 14
-                                        , srcInfoPoints = []
-                                        }
-                                      "bimap")))
-                             (Var
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 317 15 317 18
-                                  , srcInfoPoints = []
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 317 15 317 18
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 317 15 317 18
-                                        , srcInfoPoints = []
-                                        }
-                                      "abs"))))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 317 19 317 22
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 317 19 317 22
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 317 19 317 22
-                                     , srcInfoPoints = []
-                                     }
-                                   "abs")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 31
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 31
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 9
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 9
-                            , srcInfoPoints = []
-                            }
-                          "signum"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 318 10 318 31
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 318 10 318 11 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 31
-                            , srcInfoPoints = []
-                            }
-                          (App
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 24
-                               , srcInfoPoints = []
-                               }
-                             (Var
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 17
-                                  , srcInfoPoints = []
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 17
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 17
-                                        , srcInfoPoints = []
-                                        }
-                                      "bimap")))
-                             (Var
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 318 18 318 24
-                                  , srcInfoPoints = []
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 318 18 318 24
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 318 18 318 24
-                                        , srcInfoPoints = []
-                                        }
-                                      "signum"))))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 318 25 318 31
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 318 25 318 31
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 318 25 318 31
-                                     , srcInfoPoints = []
-                                     }
-                                   "signum")))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 55
-                   , srcInfoPoints = []
-                   }
-                 (FunBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 55
-                      , srcInfoPoints = []
-                      }
-                    [ Match
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 55
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 14
-                             , srcInfoPoints = []
-                             }
-                           "fromInteger")
-                        [ PVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 319 15 319 16
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 319 15 319 16
-                                 , srcInfoPoints = []
-                                 }
-                               "n")
-                        ]
-                        (UnGuardedRhs
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 319 17 319 55
-                             , srcInfoPoints =
-                                 [ SrcSpan "tests/examples/DerivingVia.hs" 319 17 319 18 ]
-                             }
-                           (InfixApp
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 55
-                                , srcInfoPoints = []
-                                }
-                              (App
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 32
-                                   , srcInfoPoints = []
-                                   }
-                                 (Var
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 30
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 30
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 319 19 319 30
-                                            , srcInfoPoints = []
-                                            }
-                                          "fromInteger")))
-                                 (Var
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 319 31 319 32
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 319 31 319 32
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 319 31 319 32
-                                            , srcInfoPoints = []
-                                            }
-                                          "n"))))
-                              (QVarOp
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 41
-                                   , srcInfoPoints =
-                                       [ SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 34
-                                       , SrcSpan "tests/examples/DerivingVia.hs" 319 34 319 40
-                                       , SrcSpan "tests/examples/DerivingVia.hs" 319 40 319 41
-                                       ]
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 41
-                                      , srcInfoPoints =
-                                          [ SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 34
-                                          , SrcSpan "tests/examples/DerivingVia.hs" 319 34 319 40
-                                          , SrcSpan "tests/examples/DerivingVia.hs" 319 40 319 41
-                                          ]
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 319 34 319 40
-                                         , srcInfoPoints = []
-                                         }
-                                       "bipure")))
-                              (App
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 319 42 319 55
-                                   , srcInfoPoints = []
-                                   }
-                                 (Var
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 319 42 319 53
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 319 42 319 53
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 319 42 319 53
-                                            , srcInfoPoints = []
-                                            }
-                                          "fromInteger")))
-                                 (Var
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 319 54 319 55
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 319 54 319 55
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 319 54 319 55
-                                            , srcInfoPoints = []
-                                            }
-                                          "n"))))))
-                        Nothing
-                    ])
-             ])
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 321 1 322 18
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 321 14 321 15 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 321 1 321 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHead
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 321 9 321 13
-               , srcInfoPoints = []
-               }
-             (Ident
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 321 9 321 13
-                  , srcInfoPoints = []
-                  }
-                "INT2"))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 321 16 321 31
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 321 16 321 31
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 321 16 321 20
-                      , srcInfoPoints = []
-                      }
-                    "INT2")
-                 [ TyTuple
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 321 21 321 31
-                       , srcInfoPoints =
-                           [ SrcSpan "tests/examples/DerivingVia.hs" 321 21 321 22
-                           , SrcSpan "tests/examples/DerivingVia.hs" 321 25 321 26
-                           , SrcSpan "tests/examples/DerivingVia.hs" 321 30 321 31
-                           ]
-                       }
-                     Boxed
-                     [ TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 321 22 321 25
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 321 22 321 25
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 321 22 321 25
-                                 , srcInfoPoints = []
-                                 }
-                               "Int"))
-                     , TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 321 27 321 30
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 321 27 321 30
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 321 27 321 30
-                                 , srcInfoPoints = []
-                                 }
-                               "Int"))
-                     ]
-                 ])
-          ]
-          [ Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 322 3 322 18
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 322 3 322 11 ]
-                }
-              (Just
-                 (DerivVia
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 322 19 322 22
-                      , srcInfoPoints = []
-                      }
-                    (TyParen
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 322 23 322 62
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 322 23 322 24
-                             , SrcSpan "tests/examples/DerivingVia.hs" 322 61 322 62
-                             ]
-                         }
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 61
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 37
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 37
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 37
-                                     , srcInfoPoints = []
-                                     }
-                                   "WrappedNumEq2")))
-                          (TyParen
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 322 38 322 61
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 322 38 322 39
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 322 60 322 61
-                                   ]
-                               }
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 60
-                                  , srcInfoPoints = []
-                                  }
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 56
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyApp
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 52
-                                        , srcInfoPoints = []
-                                        }
-                                      (TyCon
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 48
-                                           , srcInfoPoints = []
-                                           }
-                                         (UnQual
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 322 39 322 48
-                                              , srcInfoPoints = []
-                                              }
-                                            (Ident
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 322 39 322 48
-                                                 , srcInfoPoints = []
-                                                 }
-                                               "WrapBiapp")))
-                                      (TyCon
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 322 49 322 52
-                                           , srcInfoPoints =
-                                               [ SrcSpan
-                                                   "tests/examples/DerivingVia.hs" 322 49 322 50
-                                               , SrcSpan
-                                                   "tests/examples/DerivingVia.hs" 322 50 322 51
-                                               , SrcSpan
-                                                   "tests/examples/DerivingVia.hs" 322 51 322 52
-                                               ]
-                                           }
-                                         (Special
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 322 49 322 52
-                                              , srcInfoPoints =
-                                                  [ SrcSpan
-                                                      "tests/examples/DerivingVia.hs" 322 49 322 50
-                                                  , SrcSpan
-                                                      "tests/examples/DerivingVia.hs" 322 50 322 51
-                                                  , SrcSpan
-                                                      "tests/examples/DerivingVia.hs" 322 51 322 52
-                                                  ]
-                                              }
-                                            (TupleCon
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 322 49 322 52
-                                                 , srcInfoPoints =
-                                                     [ SrcSpan
-                                                         "tests/examples/DerivingVia.hs"
-                                                         322
-                                                         49
-                                                         322
-                                                         50
-                                                     , SrcSpan
-                                                         "tests/examples/DerivingVia.hs"
-                                                         322
-                                                         50
-                                                         322
-                                                         51
-                                                     , SrcSpan
-                                                         "tests/examples/DerivingVia.hs"
-                                                         322
-                                                         51
-                                                         322
-                                                         52
-                                                     ]
-                                                 }
-                                               Boxed
-                                               2))))
-                                   (TyCon
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 322 53 322 56
-                                        , srcInfoPoints = []
-                                        }
-                                      (UnQual
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 322 53 322 56
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 322 53 322 56
-                                              , srcInfoPoints = []
-                                              }
-                                            "Int"))))
-                                (TyCon
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 322 57 322 60
-                                     , srcInfoPoints = []
-                                     }
-                                   (UnQual
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 322 57 322 60
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 322 57 322 60
-                                           , srcInfoPoints = []
-                                           }
-                                         "Int")))))))))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18
-                             , srcInfoPoints = []
-                             }
-                           "IsZero")))
-              ]
-          ]
-      , ClassDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 327 1 328 20
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 327 1 327 6
-                , SrcSpan "tests/examples/DerivingVia.hs" 327 32 327 37
-                , SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 330 1 330 0
-                ]
-            }
-          (Just
-             (CxSingle
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 18
-                  , srcInfoPoints =
-                      [ SrcSpan "tests/examples/DerivingVia.hs" 327 16 327 18 ]
-                  }
-                (ClassA
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 18
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 327 16 327 18 ]
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 13
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 13
-                           , srcInfoPoints = []
-                           }
-                         "Monoid"))
-                   [ TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 327 14 327 15
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 327 14 327 15
-                            , srcInfoPoints = []
-                            }
-                          "a")
-                   ])))
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 327 19 327 31
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 327 19 327 29
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 327 19 327 29
-                     , srcInfoPoints = []
-                     }
-                   "MonoidNull"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 327 30 327 31
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 327 30 327 31
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          []
-          (Just
-             [ ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 20
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 328 8 328 10 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 20
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 328 8 328 10 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 7
-                          , srcInfoPoints = []
-                          }
-                        "null"
-                    ]
-                    (TyFun
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 328 11 328 20
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 328 13 328 15 ]
-                         }
-                       (TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 328 11 328 12
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 328 11 328 12
-                               , srcInfoPoints = []
-                               }
-                             "a"))
-                       (TyCon
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 328 16 328 20
-                            , srcInfoPoints = []
-                            }
-                          (UnQual
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 328 16 328 20
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 328 16 328 20
-                                  , srcInfoPoints = []
-                                  }
-                                "Bool")))))
-             ])
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 330 1 330 62
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 330 22 330 23 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 330 1 330 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 330 9 330 21
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 330 9 330 19
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 330 9 330 19
-                     , srcInfoPoints = []
-                     }
-                   "WrpMonNull"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 330 20 330 21
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 330 20 330 21
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 330 24 330 29
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 330 24 330 29
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 330 24 330 27
-                      , srcInfoPoints = []
-                      }
-                    "WRM")
-                 [ TyVar
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 330 28 330 29
-                       , srcInfoPoints = []
-                       }
-                     (Ident
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 330 28 330 29
-                          , srcInfoPoints = []
-                          }
-                        "a")
-                 ])
-          ]
-          [ Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 330 30 330 62
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 330 30 330 38
-                    , SrcSpan "tests/examples/DerivingVia.hs" 330 39 330 40
-                    , SrcSpan "tests/examples/DerivingVia.hs" 330 42 330 43
-                    , SrcSpan "tests/examples/DerivingVia.hs" 330 53 330 54
-                    , SrcSpan "tests/examples/DerivingVia.hs" 330 61 330 62
-                    ]
-                }
-              Nothing
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42
-                             , srcInfoPoints = []
-                             }
-                           "Eq")))
-              , IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53
-                             , srcInfoPoints = []
-                             }
-                           "Semigroup")))
-              , IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61
-                             , srcInfoPoints = []
-                             }
-                           "Monoid")))
-              ]
-          ]
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 332 1 336 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 332 1 332 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 332 56 332 61
-                , SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 336 1 336 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 332 10 332 55
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxTuple
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 332 10 332 29
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 332 10 332 11
-                         , SrcSpan "tests/examples/DerivingVia.hs" 332 15 332 16
-                         , SrcSpan "tests/examples/DerivingVia.hs" 332 25 332 26
-                         , SrcSpan "tests/examples/DerivingVia.hs" 332 27 332 29
-                         ]
-                     }
-                   [ ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 15
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 13
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 13
-                               , srcInfoPoints = []
-                               }
-                             "Eq"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 332 14 332 15
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 332 14 332 15
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 25
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 23
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 23
-                               , srcInfoPoints = []
-                               }
-                             "Monoid"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 332 24 332 25
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 332 24 332 25
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   ]))
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 55
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 40
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 40
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 40
-                           , srcInfoPoints = []
-                           }
-                         "MonoidNull")))
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 332 41 332 55
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 332 41 332 42
-                         , SrcSpan "tests/examples/DerivingVia.hs" 332 54 332 55
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 54
-                        , srcInfoPoints = []
-                        }
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 52
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 52
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 52
-                                 , srcInfoPoints = []
-                                 }
-                               "WrpMonNull")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 332 53 332 54
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 332 53 332 54
-                              , srcInfoPoints = []
-                              }
-                            "a"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 31
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 333 8 333 10 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 31
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 333 8 333 10 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 7
-                          , srcInfoPoints = []
-                          }
-                        "null"
-                    ]
-                    (TyFun
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 31
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 333 24 333 26 ]
-                         }
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 23
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 21
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 21
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 21
-                                     , srcInfoPoints = []
-                                     }
-                                   "WrpMonNull")))
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 333 22 333 23
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 333 22 333 23
-                                  , srcInfoPoints = []
-                                  }
-                                "a")))
-                       (TyCon
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 333 27 333 31
-                            , srcInfoPoints = []
-                            }
-                          (UnQual
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 333 27 333 31
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 333 27 333 31
-                                  , srcInfoPoints = []
-                                  }
-                                "Bool")))))
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 21
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 21
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 7
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 7
-                            , srcInfoPoints = []
-                            }
-                          "null"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 334 8 334 21
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 334 8 334 9 ]
-                         }
-                       (RightSection
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 334 10 334 21
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 334 10 334 11
-                                , SrcSpan "tests/examples/DerivingVia.hs" 334 20 334 21
-                                ]
-                            }
-                          (QVarOp
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 334 11 334 13
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 334 11 334 13
-                                  , srcInfoPoints = []
-                                  }
-                                (Symbol
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 334 11 334 13
-                                     , srcInfoPoints = []
-                                     }
-                                   "==")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 334 14 334 20
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 334 14 334 20
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 334 14 334 20
-                                     , srcInfoPoints = []
-                                     }
-                                   "mempty")))))
-                    Nothing)
-             ])
-      , DerivDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 336 1 336 54
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 336 1 336 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 336 31 336 39
-                ]
-            }
-          (Just
-             (DerivVia
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 336 10 336 13
-                  , srcInfoPoints = []
-                  }
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 336 14 336 30
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 336 14 336 15
-                         , SrcSpan "tests/examples/DerivingVia.hs" 336 29 336 30
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 29
-                        , srcInfoPoints = []
-                        }
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 25
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 25
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 25
-                                 , srcInfoPoints = []
-                                 }
-                               "WrpMonNull")))
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 336 26 336 29
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 336 26 336 29
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 336 26 336 29
-                                 , srcInfoPoints = []
-                                 }
-                               "Any")))))))
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 54
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 54
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 50
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 50
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 50
-                           , srcInfoPoints = []
-                           }
-                         "MonoidNull")))
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 336 51 336 54
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 336 51 336 54
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 336 51 336 54
-                           , srcInfoPoints = []
-                           }
-                         "Any")))))
-      , DerivDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 337 1 337 53
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 337 1 337 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 337 31 337 39
-                ]
-            }
-          (Just
-             (DerivVia
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 337 10 337 13
-                  , srcInfoPoints = []
-                  }
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 16
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 15
-                         , SrcSpan "tests/examples/DerivingVia.hs" 337 15 337 16
-                         ]
-                     }
-                   (Special
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 16
-                        , srcInfoPoints =
-                            [ SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 15
-                            , SrcSpan "tests/examples/DerivingVia.hs" 337 15 337 16
-                            ]
-                        }
-                      (UnitCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 16
-                           , srcInfoPoints =
-                               [ SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 15
-                               , SrcSpan "tests/examples/DerivingVia.hs" 337 15 337 16
-                               ]
-                           })))))
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 53
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 53
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 50
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 50
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 50
-                           , srcInfoPoints = []
-                           }
-                         "MonoidNull")))
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 53
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 52
-                         , SrcSpan "tests/examples/DerivingVia.hs" 337 52 337 53
-                         ]
-                     }
-                   (Special
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 53
-                        , srcInfoPoints =
-                            [ SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 52
-                            , SrcSpan "tests/examples/DerivingVia.hs" 337 52 337 53
-                            ]
-                        }
-                      (UnitCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 53
-                           , srcInfoPoints =
-                               [ SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 52
-                               , SrcSpan "tests/examples/DerivingVia.hs" 337 52 337 53
-                               ]
-                           })))))
-      , DerivDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 338 1 338 59
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 338 1 338 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 338 31 338 39
-                ]
-            }
-          (Just
-             (DerivVia
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 338 10 338 13
-                  , srcInfoPoints = []
-                  }
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 338 14 338 22
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 338 14 338 22
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 338 14 338 22
-                           , srcInfoPoints = []
-                           }
-                         "Ordering")))))
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 59
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 59
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 50
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 50
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 50
-                           , srcInfoPoints = []
-                           }
-                         "MonoidNull")))
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 338 51 338 59
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 338 51 338 59
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 338 51 338 59
-                           , srcInfoPoints = []
-                           }
-                         "Ordering")))))
-      , ClassDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 345 1 348 26
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 345 1 345 6
-                , SrcSpan "tests/examples/DerivingVia.hs" 345 17 345 22
-                , SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 350 1 350 0
-                ]
-            }
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 345 7 345 16
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 345 7 345 14
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 345 7 345 14
-                     , srcInfoPoints = []
-                     }
-                   "Lattice"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 345 15 345 16
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 345 15 345 16
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          []
-          (Just
-             [ ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 23
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 346 9 346 11 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 23
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 346 9 346 11 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 6
-                          , srcInfoPoints = []
-                          }
-                        "sup"
-                    ]
-                    (TyFun
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 346 12 346 23
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 346 14 346 16 ]
-                         }
-                       (TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 346 12 346 13
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 346 12 346 13
-                               , srcInfoPoints = []
-                               }
-                             "a"))
-                       (TyFun
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 346 17 346 23
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 346 19 346 21 ]
-                            }
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 346 17 346 18
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 346 17 346 18
-                                  , srcInfoPoints = []
-                                  }
-                                "a"))
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 346 22 346 23
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 346 22 346 23
-                                  , srcInfoPoints = []
-                                  }
-                                "a")))))
-             , ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 26
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 347 9 347 11 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 26
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 347 9 347 11 ]
-                      }
-                    [ Symbol
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 8
-                          , srcInfoPoints =
-                              [ SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 4
-                              , SrcSpan "tests/examples/DerivingVia.hs" 347 4 347 7
-                              , SrcSpan "tests/examples/DerivingVia.hs" 347 7 347 8
-                              ]
-                          }
-                        ".>="
-                    ]
-                    (TyFun
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 347 12 347 26
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 347 14 347 16 ]
-                         }
-                       (TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 347 12 347 13
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 347 12 347 13
-                               , srcInfoPoints = []
-                               }
-                             "a"))
-                       (TyFun
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 347 17 347 26
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 347 19 347 21 ]
-                            }
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 347 17 347 18
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 347 17 347 18
-                                  , srcInfoPoints = []
-                                  }
-                                "a"))
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 347 22 347 26
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 347 22 347 26
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 347 22 347 26
-                                     , srcInfoPoints = []
-                                     }
-                                   "Bool"))))))
-             , ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 26
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 348 9 348 11 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 26
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 348 9 348 11 ]
-                      }
-                    [ Symbol
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 7
-                          , srcInfoPoints =
-                              [ SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 4
-                              , SrcSpan "tests/examples/DerivingVia.hs" 348 4 348 6
-                              , SrcSpan "tests/examples/DerivingVia.hs" 348 6 348 7
-                              ]
-                          }
-                        ".>"
-                    ]
-                    (TyFun
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 348 12 348 26
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 348 14 348 16 ]
-                         }
-                       (TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 348 12 348 13
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 348 12 348 13
-                               , srcInfoPoints = []
-                               }
-                             "a"))
-                       (TyFun
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 348 17 348 26
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 348 19 348 21 ]
-                            }
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 348 17 348 18
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 348 17 348 18
-                                  , srcInfoPoints = []
-                                  }
-                                "a"))
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 348 22 348 26
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 348 22 348 26
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 348 22 348 26
-                                     , srcInfoPoints = []
-                                     }
-                                   "Bool"))))))
-             ])
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 350 1 351 29
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 350 19 350 20 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 350 1 350 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 350 9 350 18
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 350 9 350 16
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 350 9 350 16
-                     , srcInfoPoints = []
-                     }
-                   "WrapOrd"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 350 17 350 18
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 350 17 350 18
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 350 21 350 33
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 350 21 350 33
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 350 21 350 31
-                      , srcInfoPoints = []
-                      }
-                    "WrappedOrd")
-                 [ TyVar
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 350 32 350 33
-                       , srcInfoPoints = []
-                       }
-                     (Ident
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 350 32 350 33
-                          , srcInfoPoints = []
-                          }
-                        "a")
-                 ])
-          ]
-          [ Deriving
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 351 3 351 29
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/DerivingVia.hs" 351 3 351 11
-                    , SrcSpan "tests/examples/DerivingVia.hs" 351 20 351 21
-                    , SrcSpan "tests/examples/DerivingVia.hs" 351 23 351 24
-                    , SrcSpan "tests/examples/DerivingVia.hs" 351 28 351 29
-                    ]
-                }
-              (Just
-                 (DerivNewtype
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 351 12 351 19
-                      , srcInfoPoints = []
-                      }))
-              [ IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23
-                             , srcInfoPoints = []
-                             }
-                           "Eq")))
-              , IRule
-                  SrcSpanInfo
-                    { srcInfoSpan =
-                        SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28
-                    , srcInfoPoints = []
-                    }
-                  Nothing
-                  Nothing
-                  (IHCon
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28
-                       , srcInfoPoints = []
-                       }
-                     (UnQual
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28
-                             , srcInfoPoints = []
-                             }
-                           "Ord")))
-              ]
-          ]
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 353 1 358 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 353 1 353 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 353 39 353 44
-                , SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 358 1 358 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 38
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxSingle
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 18
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 353 16 353 18 ]
-                     }
-                   (ClassA
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 18
-                        , srcInfoPoints =
-                            [ SrcSpan "tests/examples/DerivingVia.hs" 353 16 353 18 ]
-                        }
-                      (UnQual
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 13
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 13
-                              , srcInfoPoints = []
-                              }
-                            "Ord"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 353 14 353 15
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 353 14 353 15
-                               , srcInfoPoints = []
-                               }
-                             "a")
-                      ])))
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 38
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 26
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 26
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 26
-                           , srcInfoPoints = []
-                           }
-                         "Lattice")))
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 353 27 353 38
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 353 27 353 28
-                         , SrcSpan "tests/examples/DerivingVia.hs" 353 37 353 38
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 37
-                        , srcInfoPoints = []
-                        }
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 35
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 35
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 35
-                                 , srcInfoPoints = []
-                                 }
-                               "WrapOrd")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 353 36 353 37
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 353 36 353 37
-                              , srcInfoPoints = []
-                              }
-                            "a"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 14
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 14
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 6
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 6
-                            , srcInfoPoints = []
-                            }
-                          "sup"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 354 9 354 14
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 354 9 354 10 ]
-                         }
-                       (Var
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 354 11 354 14
-                            , srcInfoPoints = []
-                            }
-                          (UnQual
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 354 11 354 14
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 354 11 354 14
-                                  , srcInfoPoints = []
-                                  }
-                                "max"))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 15
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 15
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 8
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 4
-                             , SrcSpan "tests/examples/DerivingVia.hs" 355 4 355 7
-                             , SrcSpan "tests/examples/DerivingVia.hs" 355 7 355 8
-                             ]
-                         }
-                       (Symbol
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 355 4 355 7
-                            , srcInfoPoints = []
-                            }
-                          ".>="))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 355 9 355 15
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 355 9 355 10 ]
-                         }
-                       (Var
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 15
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 12
-                                , SrcSpan "tests/examples/DerivingVia.hs" 355 12 355 14
-                                , SrcSpan "tests/examples/DerivingVia.hs" 355 14 355 15
-                                ]
-                            }
-                          (UnQual
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 15
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 12
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 355 12 355 14
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 355 14 355 15
-                                   ]
-                               }
-                             (Symbol
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 355 12 355 14
-                                  , srcInfoPoints = []
-                                  }
-                                ">="))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 14
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 14
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 7
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 4
-                             , SrcSpan "tests/examples/DerivingVia.hs" 356 4 356 6
-                             , SrcSpan "tests/examples/DerivingVia.hs" 356 6 356 7
-                             ]
-                         }
-                       (Symbol
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 356 4 356 6
-                            , srcInfoPoints = []
-                            }
-                          ".>"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 356 9 356 14
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 356 9 356 10 ]
-                         }
-                       (Var
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 14
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 12
-                                , SrcSpan "tests/examples/DerivingVia.hs" 356 12 356 13
-                                , SrcSpan "tests/examples/DerivingVia.hs" 356 13 356 14
-                                ]
-                            }
-                          (UnQual
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 14
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 12
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 356 12 356 13
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 356 13 356 14
-                                   ]
-                               }
-                             (Symbol
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 356 12 356 13
-                                  , srcInfoPoints = []
-                                  }
-                                ">"))))
-                    Nothing)
-             ])
-      , DerivDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 358 1 358 59
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 358 1 358 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 358 21 358 29
-                ]
-            }
-          (Just
-             (DerivVia
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 358 10 358 13
-                  , srcInfoPoints = []
-                  }
-                (TyList
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 358 14 358 17
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 358 14 358 15
-                         , SrcSpan "tests/examples/DerivingVia.hs" 358 16 358 17
-                         ]
-                     }
-                   (TyVar
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 358 15 358 16
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 358 15 358 16
-                           , srcInfoPoints = []
-                           }
-                         "a")))))
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 59
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxSingle
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 47
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 358 45 358 47 ]
-                     }
-                   (ClassA
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 47
-                        , srcInfoPoints =
-                            [ SrcSpan "tests/examples/DerivingVia.hs" 358 45 358 47 ]
-                        }
-                      (UnQual
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 33
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 33
-                              , srcInfoPoints = []
-                              }
-                            "Ord"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 358 34 358 35
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 358 34 358 35
-                               , srcInfoPoints = []
-                               }
-                             "a")
-                      ])))
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 59
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 55
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 55
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 55
-                           , srcInfoPoints = []
-                           }
-                         "Lattice")))
-                (TyList
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 358 56 358 59
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 358 56 358 57
-                         , SrcSpan "tests/examples/DerivingVia.hs" 358 58 358 59
-                         ]
-                     }
-                   (TyVar
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 358 57 358 58
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 358 57 358 58
-                           , srcInfoPoints = []
-                           }
-                         "a")))))
-      , DerivDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 359 1 359 62
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 359 1 359 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 359 21 359 29
-                ]
-            }
-          (Just
-             (DerivVia
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 359 10 359 13
-                  , srcInfoPoints = []
-                  }
-                (TyTuple
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 359 14 359 20
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 359 14 359 15
-                         , SrcSpan "tests/examples/DerivingVia.hs" 359 16 359 17
-                         , SrcSpan "tests/examples/DerivingVia.hs" 359 19 359 20
-                         ]
-                     }
-                   Boxed
-                   [ TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 359 15 359 16
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 359 15 359 16
-                            , srcInfoPoints = []
-                            }
-                          "a")
-                   , TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 359 18 359 19
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 359 18 359 19
-                            , srcInfoPoints = []
-                            }
-                          "b")
-                   ])))
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 359 30 359 62
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxTuple
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 359 30 359 47
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 359 30 359 31
-                         , SrcSpan "tests/examples/DerivingVia.hs" 359 36 359 37
-                         , SrcSpan "tests/examples/DerivingVia.hs" 359 43 359 44
-                         , SrcSpan "tests/examples/DerivingVia.hs" 359 45 359 47
-                         ]
-                     }
-                   [ ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 36
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 34
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 34
-                               , srcInfoPoints = []
-                               }
-                             "Ord"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 359 35 359 36
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 359 35 359 36
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 43
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 41
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 41
-                               , srcInfoPoints = []
-                               }
-                             "Ord"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 359 42 359 43
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 359 42 359 43
-                                , srcInfoPoints = []
-                                }
-                              "b")
-                       ]
-                   ]))
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 62
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 55
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 55
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 55
-                           , srcInfoPoints = []
-                           }
-                         "Lattice")))
-                (TyTuple
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 359 56 359 62
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 359 56 359 57
-                         , SrcSpan "tests/examples/DerivingVia.hs" 359 58 359 59
-                         , SrcSpan "tests/examples/DerivingVia.hs" 359 61 359 62
-                         ]
-                     }
-                   Boxed
-                   [ TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 359 57 359 58
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 359 57 359 58
-                            , srcInfoPoints = []
-                            }
-                          "a")
-                   , TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 359 60 359 61
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 359 60 359 61
-                            , srcInfoPoints = []
-                            }
-                          "b")
-                   ])))
-      , DerivDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 361 1 361 40
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 361 1 361 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 361 19 361 27
-                ]
-            }
-          (Just
-             (DerivVia
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 361 10 361 13
-                  , srcInfoPoints = []
-                  }
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 361 14 361 18
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 361 14 361 18
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 361 14 361 18
-                           , srcInfoPoints = []
-                           }
-                         "Bool")))))
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 40
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 40
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 35
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 35
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 35
-                           , srcInfoPoints = []
-                           }
-                         "Lattice")))
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 361 36 361 40
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 361 36 361 40
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 361 36 361 40
-                           , srcInfoPoints = []
-                           }
-                         "Bool")))))
-      , DerivDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 363 1 363 40
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 363 1 363 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 363 19 363 27
-                ]
-            }
-          (Just
-             (DerivVia
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 363 10 363 13
-                  , srcInfoPoints = []
-                  }
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 363 14 363 18
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 363 14 363 18
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 363 14 363 18
-                           , srcInfoPoints = []
-                           }
-                         "Char")))))
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 40
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 40
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 35
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 35
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 35
-                           , srcInfoPoints = []
-                           }
-                         "Lattice")))
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 363 36 363 40
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 363 36 363 40
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 363 36 363 40
-                           , srcInfoPoints = []
-                           }
-                         "Char")))))
-      , DerivDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 365 1 365 38
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 365 1 365 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 365 18 365 26
-                ]
-            }
-          (Just
-             (DerivVia
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 365 10 365 13
-                  , srcInfoPoints = []
-                  }
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 365 14 365 17
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 365 14 365 17
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 365 14 365 17
-                           , srcInfoPoints = []
-                           }
-                         "Int")))))
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 38
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 38
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 34
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 34
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 34
-                           , srcInfoPoints = []
-                           }
-                         "Lattice")))
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 365 35 365 38
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 365 35 365 38
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 365 35 365 38
-                           , srcInfoPoints = []
-                           }
-                         "Int")))))
-      , DerivDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 367 1 367 46
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 367 1 367 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 367 22 367 30
-                ]
-            }
-          (Just
-             (DerivVia
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 367 10 367 13
-                  , srcInfoPoints = []
-                  }
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 367 14 367 21
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 367 14 367 21
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 367 14 367 21
-                           , srcInfoPoints = []
-                           }
-                         "Integer")))))
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 46
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 46
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 38
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 38
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 38
-                           , srcInfoPoints = []
-                           }
-                         "Lattice")))
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 367 39 367 46
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 367 39 367 46
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 367 39 367 46
-                           , srcInfoPoints = []
-                           }
-                         "Integer")))))
-      , DerivDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 369 1 369 42
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 369 1 369 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 369 20 369 28
-                ]
-            }
-          (Just
-             (DerivVia
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 369 10 369 13
-                  , srcInfoPoints = []
-                  }
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 369 14 369 19
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 369 14 369 19
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 369 14 369 19
-                           , srcInfoPoints = []
-                           }
-                         "Float")))))
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 42
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 42
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 36
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 36
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 36
-                           , srcInfoPoints = []
-                           }
-                         "Lattice")))
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 369 37 369 42
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 369 37 369 42
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 369 37 369 42
-                           , srcInfoPoints = []
-                           }
-                         "Float")))))
-      , DerivDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 371 1 371 44
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 371 1 371 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 371 21 371 29
-                ]
-            }
-          (Just
-             (DerivVia
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 371 10 371 13
-                  , srcInfoPoints = []
-                  }
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 371 14 371 20
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 371 14 371 20
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 371 14 371 20
-                           , srcInfoPoints = []
-                           }
-                         "Double")))))
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 44
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 44
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 37
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 37
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 37
-                           , srcInfoPoints = []
-                           }
-                         "Lattice")))
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 371 38 371 44
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 371 38 371 44
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 371 38 371 44
-                           , srcInfoPoints = []
-                           }
-                         "Double")))))
-      , DerivDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 373 1 373 48
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 373 1 373 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 373 23 373 31
-                ]
-            }
-          (Just
-             (DerivVia
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 373 10 373 13
-                  , srcInfoPoints = []
-                  }
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 373 14 373 22
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 373 14 373 22
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 373 14 373 22
-                           , srcInfoPoints = []
-                           }
-                         "Rational")))))
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 48
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 48
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 39
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 39
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 39
-                           , srcInfoPoints = []
-                           }
-                         "Lattice")))
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 373 40 373 48
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 373 40 373 48
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 373 40 373 48
-                           , srcInfoPoints = []
-                           }
-                         "Rational")))))
-      , ClassDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 380 1 386 47
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 380 1 380 6
-                , SrcSpan "tests/examples/DerivingVia.hs" 380 31 380 36
-                , SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 388 1 388 0
-                ]
-            }
-          (Just
-             (CxSingle
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 19
-                  , srcInfoPoints =
-                      [ SrcSpan "tests/examples/DerivingVia.hs" 380 17 380 19 ]
-                  }
-                (ClassA
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 19
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 380 17 380 19 ]
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 14
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 14
-                           , srcInfoPoints = []
-                           }
-                         "Functor"))
-                   [ TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 380 15 380 16
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 380 15 380 16
-                            , srcInfoPoints = []
-                            }
-                          "f")
-                   ])))
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 380 20 380 30
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 380 20 380 28
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 380 20 380 28
-                     , srcInfoPoints = []
-                     }
-                   "Additive"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 380 29 380 30
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 380 29 380 30
-                     , srcInfoPoints = []
-                     }
-                   "f")))
-          []
-          (Just
-             [ ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 23
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 381 8 381 10 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 23
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 381 8 381 10 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 7
-                          , srcInfoPoints = []
-                          }
-                        "zero"
-                    ]
-                    (TyForall
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 23
-                         , srcInfoPoints = []
-                         }
-                       Nothing
-                       (Just
-                          (CxSingle
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 19
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 381 17 381 19 ]
-                               }
-                             (ClassA
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 19
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 381 17 381 19 ]
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 14
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 14
-                                        , srcInfoPoints = []
-                                        }
-                                      "Num"))
-                                [ TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 381 15 381 16
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 381 15 381 16
-                                         , srcInfoPoints = []
-                                         }
-                                       "a")
-                                ])))
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 381 20 381 23
-                            , srcInfoPoints = []
-                            }
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 381 20 381 21
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 381 20 381 21
-                                  , srcInfoPoints = []
-                                  }
-                                "f"))
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 381 22 381 23
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 381 22 381 23
-                                  , srcInfoPoints = []
-                                  }
-                                "a")))))
-             , ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 38
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 382 9 382 11 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 38
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 382 9 382 11 ]
-                      }
-                    [ Symbol
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 8
-                          , srcInfoPoints =
-                              [ SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 4
-                              , SrcSpan "tests/examples/DerivingVia.hs" 382 4 382 7
-                              , SrcSpan "tests/examples/DerivingVia.hs" 382 7 382 8
-                              ]
-                          }
-                        "^+^"
-                    ]
-                    (TyForall
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 38
-                         , srcInfoPoints = []
-                         }
-                       Nothing
-                       (Just
-                          (CxSingle
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 20
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 382 18 382 20 ]
-                               }
-                             (ClassA
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 20
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 382 18 382 20 ]
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 15
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 15
-                                        , srcInfoPoints = []
-                                        }
-                                      "Num"))
-                                [ TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 382 16 382 17
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 382 16 382 17
-                                         , srcInfoPoints = []
-                                         }
-                                       "a")
-                                ])))
-                       (TyFun
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 38
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 382 25 382 27 ]
-                            }
-                          (TyApp
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 24
-                               , srcInfoPoints = []
-                               }
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 22
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 22
-                                     , srcInfoPoints = []
-                                     }
-                                   "f"))
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 382 23 382 24
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 382 23 382 24
-                                     , srcInfoPoints = []
-                                     }
-                                   "a")))
-                          (TyFun
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 38
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 382 32 382 34 ]
-                               }
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 31
-                                  , srcInfoPoints = []
-                                  }
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 29
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 29
-                                        , srcInfoPoints = []
-                                        }
-                                      "f"))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 382 30 382 31
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 382 30 382 31
-                                        , srcInfoPoints = []
-                                        }
-                                      "a")))
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 382 35 382 38
-                                  , srcInfoPoints = []
-                                  }
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 382 35 382 36
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 382 35 382 36
-                                        , srcInfoPoints = []
-                                        }
-                                      "f"))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 382 37 382 38
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 382 37 382 38
-                                        , srcInfoPoints = []
-                                        }
-                                      "a")))))))
-             , ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 21
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 21
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 8
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 4
-                             , SrcSpan "tests/examples/DerivingVia.hs" 383 4 383 7
-                             , SrcSpan "tests/examples/DerivingVia.hs" 383 7 383 8
-                             ]
-                         }
-                       (Symbol
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 383 4 383 7
-                            , srcInfoPoints = []
-                            }
-                          "^+^"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 383 9 383 21
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 383 9 383 10 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 21
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 17
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 17
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 17
-                                     , srcInfoPoints = []
-                                     }
-                                   "liftU2")))
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 21
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 19
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 383 19 383 20
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 383 20 383 21
-                                   ]
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 21
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 19
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 383 19 383 20
-                                      , SrcSpan "tests/examples/DerivingVia.hs" 383 20 383 21
-                                      ]
-                                  }
-                                (Symbol
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 383 19 383 20
-                                     , srcInfoPoints = []
-                                     }
-                                   "+")))))
-                    Nothing)
-             , ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 38
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 384 9 384 11 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 38
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 384 9 384 11 ]
-                      }
-                    [ Symbol
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 8
-                          , srcInfoPoints =
-                              [ SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 4
-                              , SrcSpan "tests/examples/DerivingVia.hs" 384 4 384 7
-                              , SrcSpan "tests/examples/DerivingVia.hs" 384 7 384 8
-                              ]
-                          }
-                        "^-^"
-                    ]
-                    (TyForall
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 38
-                         , srcInfoPoints = []
-                         }
-                       Nothing
-                       (Just
-                          (CxSingle
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 20
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 384 18 384 20 ]
-                               }
-                             (ClassA
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 20
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 384 18 384 20 ]
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 15
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 15
-                                        , srcInfoPoints = []
-                                        }
-                                      "Num"))
-                                [ TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 384 16 384 17
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 384 16 384 17
-                                         , srcInfoPoints = []
-                                         }
-                                       "a")
-                                ])))
-                       (TyFun
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 38
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 384 25 384 27 ]
-                            }
-                          (TyApp
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 24
-                               , srcInfoPoints = []
-                               }
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 22
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 22
-                                     , srcInfoPoints = []
-                                     }
-                                   "f"))
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 384 23 384 24
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 384 23 384 24
-                                     , srcInfoPoints = []
-                                     }
-                                   "a")))
-                          (TyFun
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 38
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 384 32 384 34 ]
-                               }
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 31
-                                  , srcInfoPoints = []
-                                  }
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 29
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 29
-                                        , srcInfoPoints = []
-                                        }
-                                      "f"))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 384 30 384 31
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 384 30 384 31
-                                        , srcInfoPoints = []
-                                        }
-                                      "a")))
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 384 35 384 38
-                                  , srcInfoPoints = []
-                                  }
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 384 35 384 36
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 384 35 384 36
-                                        , srcInfoPoints = []
-                                        }
-                                      "f"))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 384 37 384 38
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 384 37 384 38
-                                        , srcInfoPoints = []
-                                        }
-                                      "a")))))))
-             , ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 32
-                   , srcInfoPoints = []
-                   }
-                 (FunBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 32
-                      , srcInfoPoints = []
-                      }
-                    [ InfixMatch
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 32
-                          , srcInfoPoints = []
-                          }
-                        (PVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 4
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 4
-                                , srcInfoPoints = []
-                                }
-                              "x"))
-                        (Symbol
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 385 5 385 8
-                             , srcInfoPoints = []
-                             }
-                           "^-^")
-                        [ PVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 385 9 385 10
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 385 9 385 10
-                                 , srcInfoPoints = []
-                                 }
-                               "y")
-                        ]
-                        (UnGuardedRhs
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 385 11 385 32
-                             , srcInfoPoints =
-                                 [ SrcSpan "tests/examples/DerivingVia.hs" 385 11 385 12 ]
-                             }
-                           (InfixApp
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 32
-                                , srcInfoPoints = []
-                                }
-                              (Var
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 14
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 14
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 14
-                                         , srcInfoPoints = []
-                                         }
-                                       "x")))
-                              (QVarOp
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 385 15 385 18
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 385 15 385 18
-                                      , srcInfoPoints = []
-                                      }
-                                    (Symbol
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 385 15 385 18
-                                         , srcInfoPoints = []
-                                         }
-                                       "^+^")))
-                              (App
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 385 19 385 32
-                                   , srcInfoPoints = []
-                                   }
-                                 (App
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 385 19 385 30
-                                      , srcInfoPoints = []
-                                      }
-                                    (Var
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 385 19 385 23
-                                         , srcInfoPoints = []
-                                         }
-                                       (UnQual
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 385 19 385 23
-                                            , srcInfoPoints = []
-                                            }
-                                          (Ident
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 385 19 385 23
-                                               , srcInfoPoints = []
-                                               }
-                                             "fmap")))
-                                    (Var
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 385 24 385 30
-                                         , srcInfoPoints = []
-                                         }
-                                       (UnQual
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 385 24 385 30
-                                            , srcInfoPoints = []
-                                            }
-                                          (Ident
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 385 24 385 30
-                                               , srcInfoPoints = []
-                                               }
-                                             "negate"))))
-                                 (Var
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 385 31 385 32
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 385 31 385 32
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 385 31 385 32
-                                            , srcInfoPoints = []
-                                            }
-                                          "y"))))))
-                        Nothing
-                    ])
-             , ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 47
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 386 10 386 12 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 47
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 386 10 386 12 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 9
-                          , srcInfoPoints = []
-                          }
-                        "liftU2"
-                    ]
-                    (TyFun
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 386 13 386 47
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 386 27 386 29 ]
-                         }
-                       (TyParen
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 386 13 386 26
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 386 13 386 14
-                                , SrcSpan "tests/examples/DerivingVia.hs" 386 25 386 26
-                                ]
-                            }
-                          (TyFun
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 386 14 386 25
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 386 16 386 18 ]
-                               }
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 386 14 386 15
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 386 14 386 15
-                                     , srcInfoPoints = []
-                                     }
-                                   "a"))
-                             (TyFun
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 386 19 386 25
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 386 21 386 23 ]
-                                  }
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 386 19 386 20
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 386 19 386 20
-                                        , srcInfoPoints = []
-                                        }
-                                      "a"))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 386 24 386 25
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 386 24 386 25
-                                        , srcInfoPoints = []
-                                        }
-                                      "a")))))
-                       (TyFun
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 47
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 386 34 386 36 ]
-                            }
-                          (TyApp
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 33
-                               , srcInfoPoints = []
-                               }
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 31
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 31
-                                     , srcInfoPoints = []
-                                     }
-                                   "f"))
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 386 32 386 33
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 386 32 386 33
-                                     , srcInfoPoints = []
-                                     }
-                                   "a")))
-                          (TyFun
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 47
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 386 41 386 43 ]
-                               }
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 40
-                                  , srcInfoPoints = []
-                                  }
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 38
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 38
-                                        , srcInfoPoints = []
-                                        }
-                                      "f"))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 386 39 386 40
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 386 39 386 40
-                                        , srcInfoPoints = []
-                                        }
-                                      "a")))
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 386 44 386 47
-                                  , srcInfoPoints = []
-                                  }
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 386 44 386 45
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 386 44 386 45
-                                        , srcInfoPoints = []
-                                        }
-                                      "f"))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 386 46 386 47
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 386 46 386 47
-                                        , srcInfoPoints = []
-                                        }
-                                      "a")))))))
-             ])
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 388 1 395 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 388 1 388 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 388 22 388 27
-                , SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 390 3 390 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 395 1 395 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 21
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 21
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 18
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 18
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 18
-                           , srcInfoPoints = []
-                           }
-                         "Additive")))
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 21
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 20
-                         , SrcSpan "tests/examples/DerivingVia.hs" 388 20 388 21
-                         ]
-                     }
-                   (Special
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 21
-                        , srcInfoPoints =
-                            [ SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 20
-                            , SrcSpan "tests/examples/DerivingVia.hs" 388 20 388 21
-                            ]
-                        }
-                      (ListCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 21
-                           , srcInfoPoints =
-                               [ SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 20
-                               , SrcSpan "tests/examples/DerivingVia.hs" 388 20 388 21
-                               ]
-                           })))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 12
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 12
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 7
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 7
-                            , srcInfoPoints = []
-                            }
-                          "zero"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 389 8 389 12
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 389 8 389 9 ]
-                         }
-                       (List
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 389 10 389 12
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 389 10 389 11
-                                , SrcSpan "tests/examples/DerivingVia.hs" 389 11 389 12
-                                ]
-                            }
-                          []))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 390 3 393 18
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 390 17 390 22 ]
-                   }
-                 (FunBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 390 3 393 18
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 390 17 390 22 ]
-                      }
-                    [ Match
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 390 3 393 18
-                          , srcInfoPoints =
-                              [ SrcSpan "tests/examples/DerivingVia.hs" 390 17 390 22 ]
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 390 3 390 9
-                             , srcInfoPoints = []
-                             }
-                           "liftU2")
-                        [ PVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 390 10 390 11
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 390 10 390 11
-                                 , srcInfoPoints = []
-                                 }
-                               "f")
-                        ]
-                        (UnGuardedRhs
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 390 12 390 16
-                             , srcInfoPoints =
-                                 [ SrcSpan "tests/examples/DerivingVia.hs" 390 12 390 13 ]
-                             }
-                           (Var
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 390 14 390 16
-                                , srcInfoPoints = []
-                                }
-                              (UnQual
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 390 14 390 16
-                                   , srcInfoPoints = []
-                                   }
-                                 (Ident
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 390 14 390 16
-                                      , srcInfoPoints = []
-                                      }
-                                    "go"))))
-                        (Just
-                           (BDecls
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 391 5 393 18
-                                , srcInfoPoints =
-                                    [ SrcSpan "tests/examples/DerivingVia.hs" 391 5 391 5
-                                    , SrcSpan "tests/examples/DerivingVia.hs" 392 5 392 5
-                                    , SrcSpan "tests/examples/DerivingVia.hs" 393 5 393 5
-                                    , SrcSpan "tests/examples/DerivingVia.hs" 395 1 395 0
-                                    ]
-                                }
-                              [ FunBind
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 391 5 393 18
-                                    , srcInfoPoints = []
-                                    }
-                                  [ Match
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 391 5 391 40
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 391 5 391 7
-                                           , srcInfoPoints = []
-                                           }
-                                         "go")
-                                      [ PParen
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan "tests/examples/DerivingVia.hs" 391 8 391 14
-                                            , srcInfoPoints =
-                                                [ SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 391 8 391 9
-                                                , SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 391 13 391 14
-                                                ]
-                                            }
-                                          (PInfixApp
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 391 9 391 13
-                                               , srcInfoPoints = []
-                                               }
-                                             (PVar
-                                                SrcSpanInfo
-                                                  { srcInfoSpan =
-                                                      SrcSpan
-                                                        "tests/examples/DerivingVia.hs" 391 9 391 10
-                                                  , srcInfoPoints = []
-                                                  }
-                                                (Ident
-                                                   SrcSpanInfo
-                                                     { srcInfoSpan =
-                                                         SrcSpan
-                                                           "tests/examples/DerivingVia.hs"
-                                                           391
-                                                           9
-                                                           391
-                                                           10
-                                                     , srcInfoPoints = []
-                                                     }
-                                                   "x"))
-                                             (Special
-                                                SrcSpanInfo
-                                                  { srcInfoSpan =
-                                                      SrcSpan
-                                                        "tests/examples/DerivingVia.hs"
-                                                        391
-                                                        10
-                                                        391
-                                                        11
-                                                  , srcInfoPoints = []
-                                                  }
-                                                (Cons
-                                                   SrcSpanInfo
-                                                     { srcInfoSpan =
-                                                         SrcSpan
-                                                           "tests/examples/DerivingVia.hs"
-                                                           391
-                                                           10
-                                                           391
-                                                           11
-                                                     , srcInfoPoints = []
-                                                     }))
-                                             (PVar
-                                                SrcSpanInfo
-                                                  { srcInfoSpan =
-                                                      SrcSpan
-                                                        "tests/examples/DerivingVia.hs"
-                                                        391
-                                                        11
-                                                        391
-                                                        13
-                                                  , srcInfoPoints = []
-                                                  }
-                                                (Ident
-                                                   SrcSpanInfo
-                                                     { srcInfoSpan =
-                                                         SrcSpan
-                                                           "tests/examples/DerivingVia.hs"
-                                                           391
-                                                           11
-                                                           391
-                                                           13
-                                                     , srcInfoPoints = []
-                                                     }
-                                                   "xs")))
-                                      , PParen
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 391 15 391 21
-                                            , srcInfoPoints =
-                                                [ SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 391 15 391 16
-                                                , SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 391 20 391 21
-                                                ]
-                                            }
-                                          (PInfixApp
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 391 16 391 20
-                                               , srcInfoPoints = []
-                                               }
-                                             (PVar
-                                                SrcSpanInfo
-                                                  { srcInfoSpan =
-                                                      SrcSpan
-                                                        "tests/examples/DerivingVia.hs"
-                                                        391
-                                                        16
-                                                        391
-                                                        17
-                                                  , srcInfoPoints = []
-                                                  }
-                                                (Ident
-                                                   SrcSpanInfo
-                                                     { srcInfoSpan =
-                                                         SrcSpan
-                                                           "tests/examples/DerivingVia.hs"
-                                                           391
-                                                           16
-                                                           391
-                                                           17
-                                                     , srcInfoPoints = []
-                                                     }
-                                                   "y"))
-                                             (Special
-                                                SrcSpanInfo
-                                                  { srcInfoSpan =
-                                                      SrcSpan
-                                                        "tests/examples/DerivingVia.hs"
-                                                        391
-                                                        17
-                                                        391
-                                                        18
-                                                  , srcInfoPoints = []
-                                                  }
-                                                (Cons
-                                                   SrcSpanInfo
-                                                     { srcInfoSpan =
-                                                         SrcSpan
-                                                           "tests/examples/DerivingVia.hs"
-                                                           391
-                                                           17
-                                                           391
-                                                           18
-                                                     , srcInfoPoints = []
-                                                     }))
-                                             (PVar
-                                                SrcSpanInfo
-                                                  { srcInfoSpan =
-                                                      SrcSpan
-                                                        "tests/examples/DerivingVia.hs"
-                                                        391
-                                                        18
-                                                        391
-                                                        20
-                                                  , srcInfoPoints = []
-                                                  }
-                                                (Ident
-                                                   SrcSpanInfo
-                                                     { srcInfoSpan =
-                                                         SrcSpan
-                                                           "tests/examples/DerivingVia.hs"
-                                                           391
-                                                           18
-                                                           391
-                                                           20
-                                                     , srcInfoPoints = []
-                                                     }
-                                                   "ys")))
-                                      ]
-                                      (UnGuardedRhs
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 391 22 391 40
-                                           , srcInfoPoints =
-                                               [ SrcSpan
-                                                   "tests/examples/DerivingVia.hs" 391 22 391 23
-                                               ]
-                                           }
-                                         (InfixApp
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 391 24 391 40
-                                              , srcInfoPoints = []
-                                              }
-                                            (App
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 391 24 391 29
-                                                 , srcInfoPoints = []
-                                                 }
-                                               (App
-                                                  SrcSpanInfo
-                                                    { srcInfoSpan =
-                                                        SrcSpan
-                                                          "tests/examples/DerivingVia.hs"
-                                                          391
-                                                          24
-                                                          391
-                                                          27
-                                                    , srcInfoPoints = []
-                                                    }
-                                                  (Var
-                                                     SrcSpanInfo
-                                                       { srcInfoSpan =
-                                                           SrcSpan
-                                                             "tests/examples/DerivingVia.hs"
-                                                             391
-                                                             24
-                                                             391
-                                                             25
-                                                       , srcInfoPoints = []
-                                                       }
-                                                     (UnQual
-                                                        SrcSpanInfo
-                                                          { srcInfoSpan =
-                                                              SrcSpan
-                                                                "tests/examples/DerivingVia.hs"
-                                                                391
-                                                                24
-                                                                391
-                                                                25
-                                                          , srcInfoPoints = []
-                                                          }
-                                                        (Ident
-                                                           SrcSpanInfo
-                                                             { srcInfoSpan =
-                                                                 SrcSpan
-                                                                   "tests/examples/DerivingVia.hs"
-                                                                   391
-                                                                   24
-                                                                   391
-                                                                   25
-                                                             , srcInfoPoints = []
-                                                             }
-                                                           "f")))
-                                                  (Var
-                                                     SrcSpanInfo
-                                                       { srcInfoSpan =
-                                                           SrcSpan
-                                                             "tests/examples/DerivingVia.hs"
-                                                             391
-                                                             26
-                                                             391
-                                                             27
-                                                       , srcInfoPoints = []
-                                                       }
-                                                     (UnQual
-                                                        SrcSpanInfo
-                                                          { srcInfoSpan =
-                                                              SrcSpan
-                                                                "tests/examples/DerivingVia.hs"
-                                                                391
-                                                                26
-                                                                391
-                                                                27
-                                                          , srcInfoPoints = []
-                                                          }
-                                                        (Ident
-                                                           SrcSpanInfo
-                                                             { srcInfoSpan =
-                                                                 SrcSpan
-                                                                   "tests/examples/DerivingVia.hs"
-                                                                   391
-                                                                   26
-                                                                   391
-                                                                   27
-                                                             , srcInfoPoints = []
-                                                             }
-                                                           "x"))))
-                                               (Var
-                                                  SrcSpanInfo
-                                                    { srcInfoSpan =
-                                                        SrcSpan
-                                                          "tests/examples/DerivingVia.hs"
-                                                          391
-                                                          28
-                                                          391
-                                                          29
-                                                    , srcInfoPoints = []
-                                                    }
-                                                  (UnQual
-                                                     SrcSpanInfo
-                                                       { srcInfoSpan =
-                                                           SrcSpan
-                                                             "tests/examples/DerivingVia.hs"
-                                                             391
-                                                             28
-                                                             391
-                                                             29
-                                                       , srcInfoPoints = []
-                                                       }
-                                                     (Ident
-                                                        SrcSpanInfo
-                                                          { srcInfoSpan =
-                                                              SrcSpan
-                                                                "tests/examples/DerivingVia.hs"
-                                                                391
-                                                                28
-                                                                391
-                                                                29
-                                                          , srcInfoPoints = []
-                                                          }
-                                                        "y"))))
-                                            (QConOp
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 391 30 391 31
-                                                 , srcInfoPoints = []
-                                                 }
-                                               (Special
-                                                  SrcSpanInfo
-                                                    { srcInfoSpan =
-                                                        SrcSpan
-                                                          "tests/examples/DerivingVia.hs"
-                                                          391
-                                                          30
-                                                          391
-                                                          31
-                                                    , srcInfoPoints = []
-                                                    }
-                                                  (Cons
-                                                     SrcSpanInfo
-                                                       { srcInfoSpan =
-                                                           SrcSpan
-                                                             "tests/examples/DerivingVia.hs"
-                                                             391
-                                                             30
-                                                             391
-                                                             31
-                                                       , srcInfoPoints = []
-                                                       })))
-                                            (App
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 391 32 391 40
-                                                 , srcInfoPoints = []
-                                                 }
-                                               (App
-                                                  SrcSpanInfo
-                                                    { srcInfoSpan =
-                                                        SrcSpan
-                                                          "tests/examples/DerivingVia.hs"
-                                                          391
-                                                          32
-                                                          391
-                                                          37
-                                                    , srcInfoPoints = []
-                                                    }
-                                                  (Var
-                                                     SrcSpanInfo
-                                                       { srcInfoSpan =
-                                                           SrcSpan
-                                                             "tests/examples/DerivingVia.hs"
-                                                             391
-                                                             32
-                                                             391
-                                                             34
-                                                       , srcInfoPoints = []
-                                                       }
-                                                     (UnQual
-                                                        SrcSpanInfo
-                                                          { srcInfoSpan =
-                                                              SrcSpan
-                                                                "tests/examples/DerivingVia.hs"
-                                                                391
-                                                                32
-                                                                391
-                                                                34
-                                                          , srcInfoPoints = []
-                                                          }
-                                                        (Ident
-                                                           SrcSpanInfo
-                                                             { srcInfoSpan =
-                                                                 SrcSpan
-                                                                   "tests/examples/DerivingVia.hs"
-                                                                   391
-                                                                   32
-                                                                   391
-                                                                   34
-                                                             , srcInfoPoints = []
-                                                             }
-                                                           "go")))
-                                                  (Var
-                                                     SrcSpanInfo
-                                                       { srcInfoSpan =
-                                                           SrcSpan
-                                                             "tests/examples/DerivingVia.hs"
-                                                             391
-                                                             35
-                                                             391
-                                                             37
-                                                       , srcInfoPoints = []
-                                                       }
-                                                     (UnQual
-                                                        SrcSpanInfo
-                                                          { srcInfoSpan =
-                                                              SrcSpan
-                                                                "tests/examples/DerivingVia.hs"
-                                                                391
-                                                                35
-                                                                391
-                                                                37
-                                                          , srcInfoPoints = []
-                                                          }
-                                                        (Ident
-                                                           SrcSpanInfo
-                                                             { srcInfoSpan =
-                                                                 SrcSpan
-                                                                   "tests/examples/DerivingVia.hs"
-                                                                   391
-                                                                   35
-                                                                   391
-                                                                   37
-                                                             , srcInfoPoints = []
-                                                             }
-                                                           "xs"))))
-                                               (Var
-                                                  SrcSpanInfo
-                                                    { srcInfoSpan =
-                                                        SrcSpan
-                                                          "tests/examples/DerivingVia.hs"
-                                                          391
-                                                          38
-                                                          391
-                                                          40
-                                                    , srcInfoPoints = []
-                                                    }
-                                                  (UnQual
-                                                     SrcSpanInfo
-                                                       { srcInfoSpan =
-                                                           SrcSpan
-                                                             "tests/examples/DerivingVia.hs"
-                                                             391
-                                                             38
-                                                             391
-                                                             40
-                                                       , srcInfoPoints = []
-                                                       }
-                                                     (Ident
-                                                        SrcSpanInfo
-                                                          { srcInfoSpan =
-                                                              SrcSpan
-                                                                "tests/examples/DerivingVia.hs"
-                                                                391
-                                                                38
-                                                                391
-                                                                40
-                                                          , srcInfoPoints = []
-                                                          }
-                                                        "ys"))))))
-                                      Nothing
-                                  , Match
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 392 5 392 18
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 392 5 392 7
-                                           , srcInfoPoints = []
-                                           }
-                                         "go")
-                                      [ PList
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan "tests/examples/DerivingVia.hs" 392 8 392 10
-                                            , srcInfoPoints =
-                                                [ SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 392 8 392 9
-                                                , SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 392 9 392 10
-                                                ]
-                                            }
-                                          []
-                                      , PVar
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 392 11 392 13
-                                            , srcInfoPoints = []
-                                            }
-                                          (Ident
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 392 11 392 13
-                                               , srcInfoPoints = []
-                                               }
-                                             "ys")
-                                      ]
-                                      (UnGuardedRhs
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 392 14 392 18
-                                           , srcInfoPoints =
-                                               [ SrcSpan
-                                                   "tests/examples/DerivingVia.hs" 392 14 392 15
-                                               ]
-                                           }
-                                         (Var
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 392 16 392 18
-                                              , srcInfoPoints = []
-                                              }
-                                            (UnQual
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 392 16 392 18
-                                                 , srcInfoPoints = []
-                                                 }
-                                               (Ident
-                                                  SrcSpanInfo
-                                                    { srcInfoSpan =
-                                                        SrcSpan
-                                                          "tests/examples/DerivingVia.hs"
-                                                          392
-                                                          16
-                                                          392
-                                                          18
-                                                    , srcInfoPoints = []
-                                                    }
-                                                  "ys"))))
-                                      Nothing
-                                  , Match
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 393 5 393 18
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 393 5 393 7
-                                           , srcInfoPoints = []
-                                           }
-                                         "go")
-                                      [ PVar
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan "tests/examples/DerivingVia.hs" 393 8 393 10
-                                            , srcInfoPoints = []
-                                            }
-                                          (Ident
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 393 8 393 10
-                                               , srcInfoPoints = []
-                                               }
-                                             "xs")
-                                      , PList
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 393 11 393 13
-                                            , srcInfoPoints =
-                                                [ SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 393 11 393 12
-                                                , SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 393 12 393 13
-                                                ]
-                                            }
-                                          []
-                                      ]
-                                      (UnGuardedRhs
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 393 14 393 18
-                                           , srcInfoPoints =
-                                               [ SrcSpan
-                                                   "tests/examples/DerivingVia.hs" 393 14 393 15
-                                               ]
-                                           }
-                                         (Var
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 393 16 393 18
-                                              , srcInfoPoints = []
-                                              }
-                                            (UnQual
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan
-                                                       "tests/examples/DerivingVia.hs" 393 16 393 18
-                                                 , srcInfoPoints = []
-                                                 }
-                                               (Ident
-                                                  SrcSpanInfo
-                                                    { srcInfoSpan =
-                                                        SrcSpan
-                                                          "tests/examples/DerivingVia.hs"
-                                                          393
-                                                          16
-                                                          393
-                                                          18
-                                                    , srcInfoPoints = []
-                                                    }
-                                                  "xs"))))
-                                      Nothing
-                                  ]
-                              ]))
-                    ])
-             ])
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 395 1 401 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 395 1 395 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 395 25 395 30
-                , SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 397 3 397 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 398 3 398 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 399 3 399 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 401 1 401 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 24
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 24
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 18
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 18
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 18
-                           , srcInfoPoints = []
-                           }
-                         "Additive")))
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 395 19 395 24
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 395 19 395 24
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 395 19 395 24
-                           , srcInfoPoints = []
-                           }
-                         "Maybe")))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 17
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 17
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 7
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 7
-                            , srcInfoPoints = []
-                            }
-                          "zero"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 396 8 396 17
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 396 8 396 9 ]
-                         }
-                       (Con
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 396 10 396 17
-                            , srcInfoPoints = []
-                            }
-                          (UnQual
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 396 10 396 17
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 396 10 396 17
-                                  , srcInfoPoints = []
-                                  }
-                                "Nothing"))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 397 3 399 27
-                   , srcInfoPoints = []
-                   }
-                 (FunBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 397 3 399 27
-                      , srcInfoPoints = []
-                      }
-                    [ Match
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 397 3 397 44
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 397 3 397 9
-                             , srcInfoPoints = []
-                             }
-                           "liftU2")
-                        [ PVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 397 10 397 11
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 397 10 397 11
-                                 , srcInfoPoints = []
-                                 }
-                               "f")
-                        , PParen
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 397 12 397 20
-                              , srcInfoPoints =
-                                  [ SrcSpan "tests/examples/DerivingVia.hs" 397 12 397 13
-                                  , SrcSpan "tests/examples/DerivingVia.hs" 397 19 397 20
-                                  ]
-                              }
-                            (PApp
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 397 13 397 19
-                                 , srcInfoPoints = []
-                                 }
-                               (UnQual
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 397 13 397 17
-                                    , srcInfoPoints = []
-                                    }
-                                  (Ident
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/DerivingVia.hs" 397 13 397 17
-                                       , srcInfoPoints = []
-                                       }
-                                     "Just"))
-                               [ PVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 397 18 397 19
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 397 18 397 19
-                                        , srcInfoPoints = []
-                                        }
-                                      "a")
-                               ])
-                        , PParen
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 397 21 397 29
-                              , srcInfoPoints =
-                                  [ SrcSpan "tests/examples/DerivingVia.hs" 397 21 397 22
-                                  , SrcSpan "tests/examples/DerivingVia.hs" 397 28 397 29
-                                  ]
-                              }
-                            (PApp
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 397 22 397 28
-                                 , srcInfoPoints = []
-                                 }
-                               (UnQual
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 397 22 397 26
-                                    , srcInfoPoints = []
-                                    }
-                                  (Ident
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/DerivingVia.hs" 397 22 397 26
-                                       , srcInfoPoints = []
-                                       }
-                                     "Just"))
-                               [ PVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 397 27 397 28
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 397 27 397 28
-                                        , srcInfoPoints = []
-                                        }
-                                      "b")
-                               ])
-                        ]
-                        (UnGuardedRhs
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 397 30 397 44
-                             , srcInfoPoints =
-                                 [ SrcSpan "tests/examples/DerivingVia.hs" 397 30 397 31 ]
-                             }
-                           (App
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 44
-                                , srcInfoPoints = []
-                                }
-                              (Con
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 36
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 36
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 36
-                                         , srcInfoPoints = []
-                                         }
-                                       "Just")))
-                              (Paren
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 397 37 397 44
-                                   , srcInfoPoints =
-                                       [ SrcSpan "tests/examples/DerivingVia.hs" 397 37 397 38
-                                       , SrcSpan "tests/examples/DerivingVia.hs" 397 43 397 44
-                                       ]
-                                   }
-                                 (App
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 397 38 397 43
-                                      , srcInfoPoints = []
-                                      }
-                                    (App
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 397 38 397 41
-                                         , srcInfoPoints = []
-                                         }
-                                       (Var
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 397 38 397 39
-                                            , srcInfoPoints = []
-                                            }
-                                          (UnQual
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 397 38 397 39
-                                               , srcInfoPoints = []
-                                               }
-                                             (Ident
-                                                SrcSpanInfo
-                                                  { srcInfoSpan =
-                                                      SrcSpan
-                                                        "tests/examples/DerivingVia.hs"
-                                                        397
-                                                        38
-                                                        397
-                                                        39
-                                                  , srcInfoPoints = []
-                                                  }
-                                                "f")))
-                                       (Var
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 397 40 397 41
-                                            , srcInfoPoints = []
-                                            }
-                                          (UnQual
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 397 40 397 41
-                                               , srcInfoPoints = []
-                                               }
-                                             (Ident
-                                                SrcSpanInfo
-                                                  { srcInfoSpan =
-                                                      SrcSpan
-                                                        "tests/examples/DerivingVia.hs"
-                                                        397
-                                                        40
-                                                        397
-                                                        41
-                                                  , srcInfoPoints = []
-                                                  }
-                                                "a"))))
-                                    (Var
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 397 42 397 43
-                                         , srcInfoPoints = []
-                                         }
-                                       (UnQual
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 397 42 397 43
-                                            , srcInfoPoints = []
-                                            }
-                                          (Ident
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 397 42 397 43
-                                               , srcInfoPoints = []
-                                               }
-                                             "b")))))))
-                        Nothing
-                    , Match
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 398 3 398 27
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 398 3 398 9
-                             , srcInfoPoints = []
-                             }
-                           "liftU2")
-                        [ PWildCard
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 398 10 398 11
-                              , srcInfoPoints = []
-                              }
-                        , PApp
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 398 12 398 19
-                              , srcInfoPoints = []
-                              }
-                            (UnQual
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 398 12 398 19
-                                 , srcInfoPoints = []
-                                 }
-                               (Ident
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 398 12 398 19
-                                    , srcInfoPoints = []
-                                    }
-                                  "Nothing"))
-                            []
-                        , PVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 398 20 398 22
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 398 20 398 22
-                                 , srcInfoPoints = []
-                                 }
-                               "ys")
-                        ]
-                        (UnGuardedRhs
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 398 23 398 27
-                             , srcInfoPoints =
-                                 [ SrcSpan "tests/examples/DerivingVia.hs" 398 23 398 24 ]
-                             }
-                           (Var
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 398 25 398 27
-                                , srcInfoPoints = []
-                                }
-                              (UnQual
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 398 25 398 27
-                                   , srcInfoPoints = []
-                                   }
-                                 (Ident
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 398 25 398 27
-                                      , srcInfoPoints = []
-                                      }
-                                    "ys"))))
-                        Nothing
-                    , Match
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 399 3 399 27
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 399 3 399 9
-                             , srcInfoPoints = []
-                             }
-                           "liftU2")
-                        [ PWildCard
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 399 10 399 11
-                              , srcInfoPoints = []
-                              }
-                        , PVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 399 12 399 14
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 399 12 399 14
-                                 , srcInfoPoints = []
-                                 }
-                               "xs")
-                        , PApp
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 399 15 399 22
-                              , srcInfoPoints = []
-                              }
-                            (UnQual
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 399 15 399 22
-                                 , srcInfoPoints = []
-                                 }
-                               (Ident
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 399 15 399 22
-                                    , srcInfoPoints = []
-                                    }
-                                  "Nothing"))
-                            []
-                        ]
-                        (UnGuardedRhs
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 399 23 399 27
-                             , srcInfoPoints =
-                                 [ SrcSpan "tests/examples/DerivingVia.hs" 399 23 399 24 ]
-                             }
-                           (Var
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 399 25 399 27
-                                , srcInfoPoints = []
-                                }
-                              (UnQual
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 399 25 399 27
-                                   , srcInfoPoints = []
-                                   }
-                                 (Ident
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 399 25 399 27
-                                      , srcInfoPoints = []
-                                      }
-                                    "xs"))))
-                        Nothing
-                    ])
-             ])
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 401 1 405 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 401 1 401 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 401 56 401 61
-                , SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 405 1 405 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 55
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxSingle
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 26
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 401 24 401 26 ]
-                     }
-                   (ClassA
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 26
-                        , srcInfoPoints =
-                            [ SrcSpan "tests/examples/DerivingVia.hs" 401 24 401 26 ]
-                        }
-                      (UnQual
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 21
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 21
-                              , srcInfoPoints = []
-                              }
-                            "Applicative"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 401 22 401 23
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 401 22 401 23
-                               , srcInfoPoints = []
-                               }
-                             "f")
-                      ])))
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 55
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 35
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 35
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 35
-                           , srcInfoPoints = []
-                           }
-                         "Additive")))
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 401 36 401 55
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 401 36 401 37
-                         , SrcSpan "tests/examples/DerivingVia.hs" 401 54 401 55
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 54
-                        , srcInfoPoints = []
-                        }
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 52
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 52
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 52
-                                 , srcInfoPoints = []
-                                 }
-                               "WrapApplicative")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 401 53 401 54
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 401 53 401 54
-                              , srcInfoPoints = []
-                              }
-                            "f"))))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 18
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 18
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 7
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 7
-                            , srcInfoPoints = []
-                            }
-                          "zero"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 402 10 402 18
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 402 10 402 11 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 18
-                            , srcInfoPoints = []
-                            }
-                          (Var
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 16
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 16
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 16
-                                     , srcInfoPoints = []
-                                     }
-                                   "pure")))
-                          (Lit
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 402 17 402 18
-                               , srcInfoPoints = []
-                               }
-                             (Int
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 402 17 402 18
-                                  , srcInfoPoints = []
-                                  }
-                                0
-                                "0"))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 18
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 18
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 9
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 9
-                            , srcInfoPoints = []
-                            }
-                          "liftU2"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 403 10 403 18
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 403 10 403 11 ]
-                         }
-                       (Var
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 403 12 403 18
-                            , srcInfoPoints = []
-                            }
-                          (UnQual
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 403 12 403 18
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 403 12 403 18
-                                  , srcInfoPoints = []
-                                  }
-                                "liftA2"))))
-                    Nothing)
-             ])
-      , DerivDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 405 1 405 67
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 405 1 405 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 405 41 405 49
-                ]
-            }
-          (Just
-             (DerivVia
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 405 10 405 13
-                  , srcInfoPoints = []
-                  }
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 405 14 405 40
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 405 14 405 15
-                         , SrcSpan "tests/examples/DerivingVia.hs" 405 39 405 40
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 39
-                        , srcInfoPoints = []
-                        }
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 30
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 30
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 30
-                                 , srcInfoPoints = []
-                                 }
-                               "WrapApplicative")))
-                      (TyParen
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 405 31 405 39
-                           , srcInfoPoints =
-                               [ SrcSpan "tests/examples/DerivingVia.hs" 405 31 405 32
-                               , SrcSpan "tests/examples/DerivingVia.hs" 405 38 405 39
-                               ]
-                           }
-                         (TyApp
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 38
-                              , srcInfoPoints = []
-                              }
-                            (TyCon
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 36
-                                 , srcInfoPoints =
-                                     [ SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 33
-                                     , SrcSpan "tests/examples/DerivingVia.hs" 405 33 405 35
-                                     , SrcSpan "tests/examples/DerivingVia.hs" 405 35 405 36
-                                     ]
-                                 }
-                               (Special
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 36
-                                    , srcInfoPoints =
-                                        [ SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 33
-                                        , SrcSpan "tests/examples/DerivingVia.hs" 405 33 405 35
-                                        , SrcSpan "tests/examples/DerivingVia.hs" 405 35 405 36
-                                        ]
-                                    }
-                                  (FunCon
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 36
-                                       , srcInfoPoints =
-                                           [ SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 33
-                                           , SrcSpan "tests/examples/DerivingVia.hs" 405 33 405 35
-                                           , SrcSpan "tests/examples/DerivingVia.hs" 405 35 405 36
-                                           ]
-                                       })))
-                            (TyVar
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 405 37 405 38
-                                 , srcInfoPoints = []
-                                 }
-                               (Ident
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 405 37 405 38
-                                    , srcInfoPoints = []
-                                    }
-                                  "a"))))))))
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 67
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 67
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 58
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 58
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 58
-                           , srcInfoPoints = []
-                           }
-                         "Additive")))
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 405 59 405 67
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 405 59 405 60
-                         , SrcSpan "tests/examples/DerivingVia.hs" 405 66 405 67
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 66
-                        , srcInfoPoints = []
-                        }
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 64
-                           , srcInfoPoints =
-                               [ SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 61
-                               , SrcSpan "tests/examples/DerivingVia.hs" 405 61 405 63
-                               , SrcSpan "tests/examples/DerivingVia.hs" 405 63 405 64
-                               ]
-                           }
-                         (Special
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 64
-                              , srcInfoPoints =
-                                  [ SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 61
-                                  , SrcSpan "tests/examples/DerivingVia.hs" 405 61 405 63
-                                  , SrcSpan "tests/examples/DerivingVia.hs" 405 63 405 64
-                                  ]
-                              }
-                            (FunCon
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 64
-                                 , srcInfoPoints =
-                                     [ SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 61
-                                     , SrcSpan "tests/examples/DerivingVia.hs" 405 61 405 63
-                                     , SrcSpan "tests/examples/DerivingVia.hs" 405 63 405 64
-                                     ]
-                                 })))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 405 65 405 66
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 405 65 405 66
-                              , srcInfoPoints = []
-                              }
-                            "a"))))))
-      , DerivDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 406 1 406 66
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 406 1 406 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 406 41 406 49
-                ]
-            }
-          (Just
-             (DerivVia
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 406 10 406 13
-                  , srcInfoPoints = []
-                  }
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 406 14 406 39
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 406 14 406 15
-                         , SrcSpan "tests/examples/DerivingVia.hs" 406 38 406 39
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 38
-                        , srcInfoPoints = []
-                        }
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 30
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 30
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 30
-                                 , srcInfoPoints = []
-                                 }
-                               "WrapApplicative")))
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 406 31 406 38
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 406 31 406 38
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 406 31 406 38
-                                 , srcInfoPoints = []
-                                 }
-                               "Complex")))))))
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 66
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 66
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 58
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 58
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 58
-                           , srcInfoPoints = []
-                           }
-                         "Additive")))
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 406 59 406 66
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 406 59 406 66
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 406 59 406 66
-                           , srcInfoPoints = []
-                           }
-                         "Complex")))))
-      , DerivDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 407 1 407 67
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 407 1 407 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 407 41 407 49
-                ]
-            }
-          (Just
-             (DerivVia
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 407 10 407 13
-                  , srcInfoPoints = []
-                  }
-                (TyParen
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 407 14 407 40
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 407 14 407 15
-                         , SrcSpan "tests/examples/DerivingVia.hs" 407 39 407 40
-                         ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 39
-                        , srcInfoPoints = []
-                        }
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 30
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 30
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 30
-                                 , srcInfoPoints = []
-                                 }
-                               "WrapApplicative")))
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 407 31 407 39
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 407 31 407 39
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 407 31 407 39
-                                 , srcInfoPoints = []
-                                 }
-                               "Identity")))))))
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 67
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 67
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 58
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 58
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 58
-                           , srcInfoPoints = []
-                           }
-                         "Additive")))
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 407 59 407 67
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 407 59 407 67
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 407 59 407 67
-                           , srcInfoPoints = []
-                           }
-                         "Identity")))))
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 409 1 413 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 409 1 409 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 409 27 409 32
-                , SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 413 1 413 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 26
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 26
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 18
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 18
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 18
-                           , srcInfoPoints = []
-                           }
-                         "Additive")))
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 409 19 409 26
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 409 19 409 26
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 409 19 409 26
-                           , srcInfoPoints = []
-                           }
-                         "ZipList")))))
-          (Just
-             [ InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 20
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 20
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 7
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 7
-                            , srcInfoPoints = []
-                            }
-                          "zero"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 410 8 410 20
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 410 8 410 9 ]
-                         }
-                       (App
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 20
-                            , srcInfoPoints = []
-                            }
-                          (Con
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 17
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 17
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 17
-                                     , srcInfoPoints = []
-                                     }
-                                   "ZipList")))
-                          (List
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 410 18 410 20
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 410 18 410 19
-                                   , SrcSpan "tests/examples/DerivingVia.hs" 410 19 410 20
-                                   ]
-                               }
-                             [])))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 64
-                   , srcInfoPoints = []
-                   }
-                 (FunBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 64
-                      , srcInfoPoints = []
-                      }
-                    [ Match
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 64
-                          , srcInfoPoints = []
-                          }
-                        (Ident
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 9
-                             , srcInfoPoints = []
-                             }
-                           "liftU2")
-                        [ PVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 411 10 411 11
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 411 10 411 11
-                                 , srcInfoPoints = []
-                                 }
-                               "f")
-                        , PParen
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 411 12 411 24
-                              , srcInfoPoints =
-                                  [ SrcSpan "tests/examples/DerivingVia.hs" 411 12 411 13
-                                  , SrcSpan "tests/examples/DerivingVia.hs" 411 23 411 24
-                                  ]
-                              }
-                            (PApp
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 411 13 411 23
-                                 , srcInfoPoints = []
-                                 }
-                               (UnQual
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 411 13 411 20
-                                    , srcInfoPoints = []
-                                    }
-                                  (Ident
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/DerivingVia.hs" 411 13 411 20
-                                       , srcInfoPoints = []
-                                       }
-                                     "ZipList"))
-                               [ PVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 411 21 411 23
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 411 21 411 23
-                                        , srcInfoPoints = []
-                                        }
-                                      "xs")
-                               ])
-                        , PParen
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 411 25 411 37
-                              , srcInfoPoints =
-                                  [ SrcSpan "tests/examples/DerivingVia.hs" 411 25 411 26
-                                  , SrcSpan "tests/examples/DerivingVia.hs" 411 36 411 37
-                                  ]
-                              }
-                            (PApp
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 411 26 411 36
-                                 , srcInfoPoints = []
-                                 }
-                               (UnQual
-                                  SrcSpanInfo
-                                    { srcInfoSpan =
-                                        SrcSpan "tests/examples/DerivingVia.hs" 411 26 411 33
-                                    , srcInfoPoints = []
-                                    }
-                                  (Ident
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/DerivingVia.hs" 411 26 411 33
-                                       , srcInfoPoints = []
-                                       }
-                                     "ZipList"))
-                               [ PVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 411 34 411 36
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 411 34 411 36
-                                        , srcInfoPoints = []
-                                        }
-                                      "ys")
-                               ])
-                        ]
-                        (UnGuardedRhs
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 411 38 411 64
-                             , srcInfoPoints =
-                                 [ SrcSpan "tests/examples/DerivingVia.hs" 411 38 411 39 ]
-                             }
-                           (App
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 64
-                                , srcInfoPoints = []
-                                }
-                              (Con
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 47
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 47
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 47
-                                         , srcInfoPoints = []
-                                         }
-                                       "ZipList")))
-                              (Paren
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 411 48 411 64
-                                   , srcInfoPoints =
-                                       [ SrcSpan "tests/examples/DerivingVia.hs" 411 48 411 49
-                                       , SrcSpan "tests/examples/DerivingVia.hs" 411 63 411 64
-                                       ]
-                                   }
-                                 (App
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 411 49 411 63
-                                      , srcInfoPoints = []
-                                      }
-                                    (App
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 411 49 411 60
-                                         , srcInfoPoints = []
-                                         }
-                                       (App
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 411 49 411 57
-                                            , srcInfoPoints = []
-                                            }
-                                          (Var
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 411 49 411 55
-                                               , srcInfoPoints = []
-                                               }
-                                             (UnQual
-                                                SrcSpanInfo
-                                                  { srcInfoSpan =
-                                                      SrcSpan
-                                                        "tests/examples/DerivingVia.hs"
-                                                        411
-                                                        49
-                                                        411
-                                                        55
-                                                  , srcInfoPoints = []
-                                                  }
-                                                (Ident
-                                                   SrcSpanInfo
-                                                     { srcInfoSpan =
-                                                         SrcSpan
-                                                           "tests/examples/DerivingVia.hs"
-                                                           411
-                                                           49
-                                                           411
-                                                           55
-                                                     , srcInfoPoints = []
-                                                     }
-                                                   "liftU2")))
-                                          (Var
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 411 56 411 57
-                                               , srcInfoPoints = []
-                                               }
-                                             (UnQual
-                                                SrcSpanInfo
-                                                  { srcInfoSpan =
-                                                      SrcSpan
-                                                        "tests/examples/DerivingVia.hs"
-                                                        411
-                                                        56
-                                                        411
-                                                        57
-                                                  , srcInfoPoints = []
-                                                  }
-                                                (Ident
-                                                   SrcSpanInfo
-                                                     { srcInfoSpan =
-                                                         SrcSpan
-                                                           "tests/examples/DerivingVia.hs"
-                                                           411
-                                                           56
-                                                           411
-                                                           57
-                                                     , srcInfoPoints = []
-                                                     }
-                                                   "f"))))
-                                       (Var
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 411 58 411 60
-                                            , srcInfoPoints = []
-                                            }
-                                          (UnQual
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 411 58 411 60
-                                               , srcInfoPoints = []
-                                               }
-                                             (Ident
-                                                SrcSpanInfo
-                                                  { srcInfoSpan =
-                                                      SrcSpan
-                                                        "tests/examples/DerivingVia.hs"
-                                                        411
-                                                        58
-                                                        411
-                                                        60
-                                                  , srcInfoPoints = []
-                                                  }
-                                                "xs"))))
-                                    (Var
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 411 61 411 63
-                                         , srcInfoPoints = []
-                                         }
-                                       (UnQual
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 411 61 411 63
-                                            , srcInfoPoints = []
-                                            }
-                                          (Ident
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 411 61 411 63
-                                               , srcInfoPoints = []
-                                               }
-                                             "ys")))))))
-                        Nothing
-                    ])
-             ])
-      , ClassDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 413 1 419 32
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 413 1 413 6
-                , SrcSpan "tests/examples/DerivingVia.hs" 413 37 413 42
-                , SrcSpan "tests/examples/DerivingVia.hs" 414 3 414 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 425 1 425 0
-                ]
-            }
-          (Just
-             (CxSingle
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 27
-                  , srcInfoPoints =
-                      [ SrcSpan "tests/examples/DerivingVia.hs" 413 25 413 27 ]
-                  }
-                (ClassA
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 27
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 413 25 413 27 ]
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 15
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 15
-                           , srcInfoPoints = []
-                           }
-                         "Additive"))
-                   [ TyParen
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 413 16 413 24
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 413 16 413 17
-                             , SrcSpan "tests/examples/DerivingVia.hs" 413 23 413 24
-                             ]
-                         }
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 23
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 21
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 21
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 21
-                                     , srcInfoPoints = []
-                                     }
-                                   "Diff")))
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 413 22 413 23
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 413 22 413 23
-                                  , srcInfoPoints = []
-                                  }
-                                "p")))
-                   ])))
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 413 28 413 36
-               , srcInfoPoints = []
-               }
-             (DHead
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 413 28 413 34
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 413 28 413 34
-                     , srcInfoPoints = []
-                     }
-                   "Affine"))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 413 35 413 36
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 413 35 413 36
-                     , srcInfoPoints = []
-                     }
-                   "p")))
-          []
-          (Just
-             [ ClsTyFam
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 414 3 414 30
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 414 3 414 7 ]
-                   }
-                 (DHApp
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 414 8 414 14
-                      , srcInfoPoints = []
-                      }
-                    (DHead
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 414 8 414 12
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 414 8 414 12
-                            , srcInfoPoints = []
-                            }
-                          "Diff"))
-                    (UnkindedVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 414 13 414 14
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 414 13 414 14
-                            , srcInfoPoints = []
-                            }
-                          "p")))
-                 (Just
-                    (KindSig
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 414 15 414 30
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/DerivingVia.hs" 414 15 414 17 ]
-                         }
-                       (TyFun
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 30
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 414 23 414 25 ]
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 22
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 22
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 22
-                                     , srcInfoPoints = []
-                                     }
-                                   "Type")))
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 414 26 414 30
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 414 26 414 30
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 414 26 414 30
-                                     , srcInfoPoints = []
-                                     }
-                                   "Type"))))))
-                 Nothing
-             , ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 43
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 416 9 416 11 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 43
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 416 9 416 11 ]
-                      }
-                    [ Symbol
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 8
-                          , srcInfoPoints =
-                              [ SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 4
-                              , SrcSpan "tests/examples/DerivingVia.hs" 416 4 416 7
-                              , SrcSpan "tests/examples/DerivingVia.hs" 416 7 416 8
-                              ]
-                          }
-                        ".-."
-                    ]
-                    (TyForall
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 43
-                         , srcInfoPoints = []
-                         }
-                       Nothing
-                       (Just
-                          (CxSingle
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 20
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 416 18 416 20 ]
-                               }
-                             (ClassA
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 20
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 416 18 416 20 ]
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 15
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 15
-                                        , srcInfoPoints = []
-                                        }
-                                      "Num"))
-                                [ TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 416 16 416 17
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 416 16 416 17
-                                         , srcInfoPoints = []
-                                         }
-                                       "a")
-                                ])))
-                       (TyFun
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 43
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 416 25 416 27 ]
-                            }
-                          (TyApp
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 24
-                               , srcInfoPoints = []
-                               }
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 22
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 22
-                                     , srcInfoPoints = []
-                                     }
-                                   "p"))
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 416 23 416 24
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 416 23 416 24
-                                     , srcInfoPoints = []
-                                     }
-                                   "a")))
-                          (TyFun
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 43
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 416 32 416 34 ]
-                               }
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 31
-                                  , srcInfoPoints = []
-                                  }
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 29
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 29
-                                        , srcInfoPoints = []
-                                        }
-                                      "p"))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 416 30 416 31
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 416 30 416 31
-                                        , srcInfoPoints = []
-                                        }
-                                      "a")))
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 43
-                                  , srcInfoPoints = []
-                                  }
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 41
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyCon
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 39
-                                        , srcInfoPoints = []
-                                        }
-                                      (UnQual
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 39
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 416 35 416 39
-                                              , srcInfoPoints = []
-                                              }
-                                            "Diff")))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 416 40 416 41
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 416 40 416 41
-                                           , srcInfoPoints = []
-                                           }
-                                         "p")))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 416 42 416 43
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 416 42 416 43
-                                        , srcInfoPoints = []
-                                        }
-                                      "a")))))))
-             , ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 43
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 417 9 417 11 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 43
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 417 9 417 11 ]
-                      }
-                    [ Symbol
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 8
-                          , srcInfoPoints =
-                              [ SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 4
-                              , SrcSpan "tests/examples/DerivingVia.hs" 417 4 417 7
-                              , SrcSpan "tests/examples/DerivingVia.hs" 417 7 417 8
-                              ]
-                          }
-                        ".+^"
-                    ]
-                    (TyForall
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 43
-                         , srcInfoPoints = []
-                         }
-                       Nothing
-                       (Just
-                          (CxSingle
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 20
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 417 18 417 20 ]
-                               }
-                             (ClassA
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 20
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 417 18 417 20 ]
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 15
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 15
-                                        , srcInfoPoints = []
-                                        }
-                                      "Num"))
-                                [ TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 417 16 417 17
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 417 16 417 17
-                                         , srcInfoPoints = []
-                                         }
-                                       "a")
-                                ])))
-                       (TyFun
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 43
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 417 25 417 27 ]
-                            }
-                          (TyApp
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 24
-                               , srcInfoPoints = []
-                               }
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 22
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 22
-                                     , srcInfoPoints = []
-                                     }
-                                   "p"))
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 417 23 417 24
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 417 23 417 24
-                                     , srcInfoPoints = []
-                                     }
-                                   "a")))
-                          (TyFun
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 43
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 417 37 417 39 ]
-                               }
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 36
-                                  , srcInfoPoints = []
-                                  }
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 34
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyCon
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 32
-                                        , srcInfoPoints = []
-                                        }
-                                      (UnQual
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 32
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 417 28 417 32
-                                              , srcInfoPoints = []
-                                              }
-                                            "Diff")))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 417 33 417 34
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 417 33 417 34
-                                           , srcInfoPoints = []
-                                           }
-                                         "p")))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 417 35 417 36
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 417 35 417 36
-                                        , srcInfoPoints = []
-                                        }
-                                      "a")))
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 417 40 417 43
-                                  , srcInfoPoints = []
-                                  }
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 417 40 417 41
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 417 40 417 41
-                                        , srcInfoPoints = []
-                                        }
-                                      "p"))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 417 42 417 43
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 417 42 417 43
-                                        , srcInfoPoints = []
-                                        }
-                                      "a")))))))
-             , ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 43
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/DerivingVia.hs" 418 9 418 11 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 43
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/DerivingVia.hs" 418 9 418 11 ]
-                      }
-                    [ Symbol
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 8
-                          , srcInfoPoints =
-                              [ SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 4
-                              , SrcSpan "tests/examples/DerivingVia.hs" 418 4 418 7
-                              , SrcSpan "tests/examples/DerivingVia.hs" 418 7 418 8
-                              ]
-                          }
-                        ".-^"
-                    ]
-                    (TyForall
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 43
-                         , srcInfoPoints = []
-                         }
-                       Nothing
-                       (Just
-                          (CxSingle
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 20
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 418 18 418 20 ]
-                               }
-                             (ClassA
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 20
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/DerivingVia.hs" 418 18 418 20 ]
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 15
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 15
-                                        , srcInfoPoints = []
-                                        }
-                                      "Num"))
-                                [ TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 418 16 418 17
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 418 16 418 17
-                                         , srcInfoPoints = []
-                                         }
-                                       "a")
-                                ])))
-                       (TyFun
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 43
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/DerivingVia.hs" 418 25 418 27 ]
-                            }
-                          (TyApp
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 24
-                               , srcInfoPoints = []
-                               }
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 22
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 22
-                                     , srcInfoPoints = []
-                                     }
-                                   "p"))
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 418 23 418 24
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 418 23 418 24
-                                     , srcInfoPoints = []
-                                     }
-                                   "a")))
-                          (TyFun
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 43
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/DerivingVia.hs" 418 37 418 39 ]
-                               }
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 36
-                                  , srcInfoPoints = []
-                                  }
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 34
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyCon
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 32
-                                        , srcInfoPoints = []
-                                        }
-                                      (UnQual
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 32
-                                           , srcInfoPoints = []
-                                           }
-                                         (Ident
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan
-                                                    "tests/examples/DerivingVia.hs" 418 28 418 32
-                                              , srcInfoPoints = []
-                                              }
-                                            "Diff")))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 418 33 418 34
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/DerivingVia.hs" 418 33 418 34
-                                           , srcInfoPoints = []
-                                           }
-                                         "p")))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 418 35 418 36
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 418 35 418 36
-                                        , srcInfoPoints = []
-                                        }
-                                      "a")))
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/DerivingVia.hs" 418 40 418 43
-                                  , srcInfoPoints = []
-                                  }
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 418 40 418 41
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 418 40 418 41
-                                        , srcInfoPoints = []
-                                        }
-                                      "p"))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/DerivingVia.hs" 418 42 418 43
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/DerivingVia.hs" 418 42 418 43
-                                        , srcInfoPoints = []
-                                        }
-                                      "a")))))))
-             , ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 32
-                   , srcInfoPoints = []
-                   }
-                 (FunBind
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 32
-                      , srcInfoPoints = []
-                      }
-                    [ InfixMatch
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 32
-                          , srcInfoPoints = []
-                          }
-                        (PVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 4
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 4
-                                , srcInfoPoints = []
-                                }
-                              "p"))
-                        (Symbol
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 419 5 419 8
-                             , srcInfoPoints = []
-                             }
-                           ".-^")
-                        [ PVar
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 419 9 419 10
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/DerivingVia.hs" 419 9 419 10
-                                 , srcInfoPoints = []
-                                 }
-                               "v")
-                        ]
-                        (UnGuardedRhs
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 419 11 419 32
-                             , srcInfoPoints =
-                                 [ SrcSpan "tests/examples/DerivingVia.hs" 419 11 419 12 ]
-                             }
-                           (InfixApp
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 32
-                                , srcInfoPoints = []
-                                }
-                              (Var
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 14
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 14
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 14
-                                         , srcInfoPoints = []
-                                         }
-                                       "p")))
-                              (QVarOp
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 419 15 419 18
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 419 15 419 18
-                                      , srcInfoPoints = []
-                                      }
-                                    (Symbol
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 419 15 419 18
-                                         , srcInfoPoints = []
-                                         }
-                                       ".+^")))
-                              (App
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/DerivingVia.hs" 419 19 419 32
-                                   , srcInfoPoints = []
-                                   }
-                                 (App
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 419 19 419 30
-                                      , srcInfoPoints = []
-                                      }
-                                    (Var
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 419 19 419 23
-                                         , srcInfoPoints = []
-                                         }
-                                       (UnQual
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 419 19 419 23
-                                            , srcInfoPoints = []
-                                            }
-                                          (Ident
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 419 19 419 23
-                                               , srcInfoPoints = []
-                                               }
-                                             "fmap")))
-                                    (Var
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 419 24 419 30
-                                         , srcInfoPoints = []
-                                         }
-                                       (UnQual
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 419 24 419 30
-                                            , srcInfoPoints = []
-                                            }
-                                          (Ident
-                                             SrcSpanInfo
-                                               { srcInfoSpan =
-                                                   SrcSpan
-                                                     "tests/examples/DerivingVia.hs" 419 24 419 30
-                                               , srcInfoPoints = []
-                                               }
-                                             "negate"))))
-                                 (Var
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DerivingVia.hs" 419 31 419 32
-                                      , srcInfoPoints = []
-                                      }
-                                    (UnQual
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DerivingVia.hs" 419 31 419 32
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/DerivingVia.hs" 419 31 419 32
-                                            , srcInfoPoints = []
-                                            }
-                                          "v"))))))
-                        Nothing
-                    ])
-             ])
-      , DataDecl
-          SrcSpanInfo
-            { srcInfoSpan =
-                SrcSpan "tests/examples/DerivingVia.hs" 425 1 425 49
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 425 26 425 27 ]
-            }
-          (NewType
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 425 1 425 8
-               , srcInfoPoints = []
-               })
-          Nothing
-          (DHApp
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 25
-               , srcInfoPoints = []
-               }
-             (DHApp
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 23
-                  , srcInfoPoints = []
-                  }
-                (DHead
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 21
-                     , srcInfoPoints = []
-                     }
-                   (Ident
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 21
-                        , srcInfoPoints = []
-                        }
-                      "WrapAdditive"))
-                (UnkindedVar
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 425 22 425 23
-                     , srcInfoPoints = []
-                     }
-                   (Ident
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 425 22 425 23
-                        , srcInfoPoints = []
-                        }
-                      "f")))
-             (UnkindedVar
-                SrcSpanInfo
-                  { srcInfoSpan =
-                      SrcSpan "tests/examples/DerivingVia.hs" 425 24 425 25
-                  , srcInfoPoints = []
-                  }
-                (Ident
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 425 24 425 25
-                     , srcInfoPoints = []
-                     }
-                   "a")))
-          [ QualConDecl
-              SrcSpanInfo
-                { srcInfoSpan =
-                    SrcSpan "tests/examples/DerivingVia.hs" 425 28 425 49
-                , srcInfoPoints = []
-                }
-              Nothing
-              Nothing
-              (ConDecl
-                 SrcSpanInfo
-                   { srcInfoSpan =
-                       SrcSpan "tests/examples/DerivingVia.hs" 425 28 425 49
-                   , srcInfoPoints = []
-                   }
-                 (Ident
-                    SrcSpanInfo
-                      { srcInfoSpan =
-                          SrcSpan "tests/examples/DerivingVia.hs" 425 28 425 43
-                      , srcInfoPoints = []
-                      }
-                    "WrappedAdditive")
-                 [ TyParen
-                     SrcSpanInfo
-                       { srcInfoSpan =
-                           SrcSpan "tests/examples/DerivingVia.hs" 425 44 425 49
-                       , srcInfoPoints =
-                           [ SrcSpan "tests/examples/DerivingVia.hs" 425 44 425 45
-                           , SrcSpan "tests/examples/DerivingVia.hs" 425 48 425 49
-                           ]
-                       }
-                     (TyApp
-                        SrcSpanInfo
-                          { srcInfoSpan =
-                              SrcSpan "tests/examples/DerivingVia.hs" 425 45 425 48
-                          , srcInfoPoints = []
-                          }
-                        (TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 425 45 425 46
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 425 45 425 46
-                                , srcInfoPoints = []
-                                }
-                              "f"))
-                        (TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia.hs" 425 47 425 48
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia.hs" 425 47 425 48
-                                , srcInfoPoints = []
-                                }
-                              "a")))
-                 ])
-          ]
-          []
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 427 1 435 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/DerivingVia.hs" 427 1 427 9
-                , SrcSpan "tests/examples/DerivingVia.hs" 427 48 427 53
-                , SrcSpan "tests/examples/DerivingVia.hs" 428 3 428 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 3
-                , SrcSpan "tests/examples/DerivingVia.hs" 435 1 435 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan =
-                   SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 47
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxSingle
-                   SrcSpanInfo
-                     { srcInfoSpan =
-                         SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 23
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/DerivingVia.hs" 427 21 427 23 ]
-                     }
-                   (ClassA
-                      SrcSpanInfo
-                        { srcInfoSpan =
-                            SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 23
-                        , srcInfoPoints =
-                            [ SrcSpan "tests/examples/DerivingVia.hs" 427 21 427 23 ]
-                        }
-                      (UnQual
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 18
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 18
-                              , srcInfoPoints = []
-                              }
-                            "Additive"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia.hs" 427 19 427 20
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia.hs" 427 19 427 20
-                               , srcInfoPoints = []
-                               }
-                             "f")
-                      ])))
+                   (TypeA
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 24
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 52 22 52 24 ]
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 24
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 52 22 52 24 ]
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 24
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 52 22 52 24 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 19
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 19
+                                    , srcInfoPoints = []
+                                    }
+                                  "Bifunctor")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 20 52 21
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 20 52 21
+                                 , srcInfoPoints = []
+                                 }
+                               "p"))))))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 43
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 34
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 34
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 34
+                           , srcInfoPoints = []
+                           }
+                         "Bifunctor")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 35 52 43
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 52 35 52 36
+                         , SrcSpan "tests/examples/DerivingVia.hs" 52 42 52 43
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 42
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 40
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 40
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 40
+                                 , srcInfoPoints = []
+                                 }
+                               "Flip")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 41 52 42
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 41 52 42
+                              , srcInfoPoints = []
+                              }
+                            "p"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 41
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 41
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 41
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 8
+                             , srcInfoPoints = []
+                             }
+                           "bimap")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 9 53 10
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 9 53 10
+                                 , srcInfoPoints = []
+                                 }
+                               "f")
+                        , PVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 11 53 12
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 11 53 12
+                                 , srcInfoPoints = []
+                                 }
+                               "g")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 13 53 41
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 53 13 53 14 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 41
+                                , srcInfoPoints = []
+                                }
+                              (Con
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 19
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 19
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 19
+                                         , srcInfoPoints = []
+                                         }
+                                       "Flip")))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 53 20 53 21
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 53 20 53 21
+                                      , srcInfoPoints = []
+                                      }
+                                    (Symbol
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 53 20 53 21
+                                         , srcInfoPoints = []
+                                         }
+                                       ".")))
+                              (InfixApp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 41
+                                   , srcInfoPoints = []
+                                   }
+                                 (App
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 31
+                                      , srcInfoPoints = []
+                                      }
+                                    (App
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 29
+                                         , srcInfoPoints = []
+                                         }
+                                       (Var
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 27
+                                            , srcInfoPoints = []
+                                            }
+                                          (UnQual
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 53 22 53 27
+                                               , srcInfoPoints = []
+                                               }
+                                             (Ident
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs" 53 22 53 27
+                                                  , srcInfoPoints = []
+                                                  }
+                                                "bimap")))
+                                       (Var
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 53 28 53 29
+                                            , srcInfoPoints = []
+                                            }
+                                          (UnQual
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 53 28 53 29
+                                               , srcInfoPoints = []
+                                               }
+                                             (Ident
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs" 53 28 53 29
+                                                  , srcInfoPoints = []
+                                                  }
+                                                "g"))))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 53 30 53 31
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 53 30 53 31
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 53 30 53 31
+                                               , srcInfoPoints = []
+                                               }
+                                             "f"))))
+                                 (QVarOp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 53 32 53 33
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 53 32 53 33
+                                         , srcInfoPoints = []
+                                         }
+                                       (Symbol
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 53 32 53 33
+                                            , srcInfoPoints = []
+                                            }
+                                          ".")))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 53 34 53 41
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 53 34 53 41
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 53 34 53 41
+                                            , srcInfoPoints = []
+                                            }
+                                          "runFlip"))))))
+                        Nothing
+                    ])
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 1 58 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 55 1 55 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 55 44 55 49
+                , SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 58 1 58 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 43
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxSingle
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 24
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 55 22 55 24 ]
+                     }
+                   (TypeA
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 24
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 55 22 55 24 ]
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 24
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 55 22 55 24 ]
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 24
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 55 22 55 24 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 19
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 19
+                                    , srcInfoPoints = []
+                                    }
+                                  "Bifunctor")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 20 55 21
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 20 55 21
+                                 , srcInfoPoints = []
+                                 }
+                               "p"))))))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 43
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 32
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 32
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 32
+                           , srcInfoPoints = []
+                           }
+                         "Functor")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 33 55 43
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 55 33 55 34
+                         , SrcSpan "tests/examples/DerivingVia.hs" 55 42 55 43
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 42
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 40
+                           , srcInfoPoints = []
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 38
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 38
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 38
+                                    , srcInfoPoints = []
+                                    }
+                                  "Flip")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 39 55 40
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 39 55 40
+                                 , srcInfoPoints = []
+                                 }
+                               "p")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 41 55 42
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 41 55 42
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 36
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 36
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 36
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 7
+                             , srcInfoPoints = []
+                             }
+                           "fmap")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 8 56 9
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 8 56 9
+                                 , srcInfoPoints = []
+                                 }
+                               "f")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 10 56 36
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 56 10 56 11 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 36
+                                , srcInfoPoints = []
+                                }
+                              (Con
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 16
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 16
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 16
+                                         , srcInfoPoints = []
+                                         }
+                                       "Flip")))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 56 17 56 18
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 56 17 56 18
+                                      , srcInfoPoints = []
+                                      }
+                                    (Symbol
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 56 17 56 18
+                                         , srcInfoPoints = []
+                                         }
+                                       ".")))
+                              (InfixApp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 36
+                                   , srcInfoPoints = []
+                                   }
+                                 (App
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 26
+                                      , srcInfoPoints = []
+                                      }
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 24
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 24
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 56 19 56 24
+                                               , srcInfoPoints = []
+                                               }
+                                             "first")))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 56 25 56 26
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 56 25 56 26
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 56 25 56 26
+                                               , srcInfoPoints = []
+                                               }
+                                             "f"))))
+                                 (QVarOp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 56 27 56 28
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 56 27 56 28
+                                         , srcInfoPoints = []
+                                         }
+                                       (Symbol
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 56 27 56 28
+                                            , srcInfoPoints = []
+                                            }
+                                          ".")))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 56 29 56 36
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 56 29 56 36
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 56 29 56 36
+                                            , srcInfoPoints = []
+                                            }
+                                          "runFlip"))))))
+                        Nothing
+                    ])
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 1 59 19
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 58 15 58 16 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 1 58 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 9 58 14
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 9 58 12
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 9 58 12
+                     , srcInfoPoints = []
+                     }
+                   "Bar"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 13 58 14
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 13 58 14
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 17 58 37
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 17 58 37
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 17 58 22
+                      , srcInfoPoints = []
+                      }
+                    "MkBar")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 23 58 37
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 58 23 58 24
+                           , SrcSpan "tests/examples/DerivingVia.hs" 58 36 58 37
+                           ]
+                       }
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 36
+                          , srcInfoPoints = []
+                          }
+                        (TyApp
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 32
+                             , srcInfoPoints = []
+                             }
+                           (TyCon
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 30
+                                , srcInfoPoints = []
+                                }
+                              (UnQual
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 30
+                                   , srcInfoPoints = []
+                                   }
+                                 (Ident
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 30
+                                      , srcInfoPoints = []
+                                      }
+                                    "Either")))
+                           (TyVar
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 31 58 32
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 58 31 58 32
+                                   , srcInfoPoints = []
+                                   }
+                                 "a")))
+                        (TyCon
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 33 58 36
+                             , srcInfoPoints = []
+                             }
+                           (UnQual
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 33 58 36
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 58 33 58 36
+                                   , srcInfoPoints = []
+                                   }
+                                 "Int"))))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 3 59 19
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 59 3 59 11 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 8 60 11
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 12 60 29
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 60 12 60 13
+                             , SrcSpan "tests/examples/DerivingVia.hs" 60 28 60 29
+                             ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 28
+                            , srcInfoPoints = []
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 24
+                               , srcInfoPoints = []
+                               }
+                             (TyCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 17
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 17
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 17
+                                        , srcInfoPoints = []
+                                        }
+                                      "Flip")))
+                             (TyCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 60 18 60 24
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 60 18 60 24
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 60 18 60 24
+                                        , srcInfoPoints = []
+                                        }
+                                      "Either"))))
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 25 60 28
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 60 25 60 28
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 60 25 60 28
+                                     , srcInfoPoints = []
+                                     }
+                                   "Int")))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19
+                             , srcInfoPoints = []
+                             }
+                           "Functor")))
+              ]
+          ]
+      , TypeDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 1 66 47
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 66 1 66 5
+                , SrcSpan "tests/examples/DerivingVia.hs" 66 13 66 14
+                ]
+            }
+          (DHead
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 6 66 12
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 6 66 12
+                  , srcInfoPoints = []
+                  }
+                "MTrans"))
+          (TyFun
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 15 66 47
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/DerivingVia.hs" 66 30 66 32 ]
+               }
+             (TyParen
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 15 66 29
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingVia.hs" 66 15 66 16
+                      , SrcSpan "tests/examples/DerivingVia.hs" 66 28 66 29
+                      ]
+                  }
+                (TyFun
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 28
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 66 21 66 23 ]
+                     }
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 20
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 20
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 20
+                              , srcInfoPoints = []
+                              }
+                            "Type")))
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 24 66 28
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 24 66 28
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 24 66 28
+                              , srcInfoPoints = []
+                              }
+                            "Type")))))
+             (TyParen
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 33 66 47
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingVia.hs" 66 33 66 34
+                      , SrcSpan "tests/examples/DerivingVia.hs" 66 46 66 47
+                      ]
+                  }
+                (TyFun
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 46
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 66 39 66 41 ]
+                     }
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 38
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 38
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 38
+                              , srcInfoPoints = []
+                              }
+                            "Type")))
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 42 66 46
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 42 66 46
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 42 66 46
+                              , srcInfoPoints = []
+                              }
+                            "Type"))))))
+      , GDataDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 1 72 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 69 13 69 18
+                , SrcSpan "tests/examples/DerivingVia.hs" 70 3 70 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 72 1 72 0
+                ]
+            }
+          (DataType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 1 69 5
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 6 69 12
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 6 69 10
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 6 69 10
+                     , srcInfoPoints = []
+                     }
+                   "Dict"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 11 69 12
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 11 69 12
+                     , srcInfoPoints = []
+                     }
+                   "c")))
+          Nothing
+          [ GadtDecl
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 3 70 22
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 70 8 70 10 ]
+                }
+              (Ident
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 3 70 7
+                   , srcInfoPoints = []
+                   }
+                 "Dict")
+              Nothing
+              Nothing
+              Nothing
+              (TyForall
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 22
+                   , srcInfoPoints = []
+                   }
+                 Nothing
+                 (Just
+                    (CxSingle
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 15
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 70 13 70 15 ]
+                         }
+                       (TypeA
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 15
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 70 13 70 15 ]
+                            }
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 15
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 70 13 70 15 ]
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 12
+                                  , srcInfoPoints = []
+                                  }
+                                "c")))))
+                 (TyApp
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 22
+                      , srcInfoPoints = []
+                      }
+                    (TyCon
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 20
+                         , srcInfoPoints = []
+                         }
+                       (UnQual
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 20
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 20
+                               , srcInfoPoints = []
+                               }
+                             "Dict")))
+                    (TyVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 21 70 22
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 21 70 22
+                            , srcInfoPoints = []
+                            }
+                          "c"))))
+          ]
+          []
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 1 72 35
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 72 16 72 17 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 1 72 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 15
+               , srcInfoPoints = []
+               }
+             (DHInfix
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 15
+                  , srcInfoPoints = []
+                  }
+                (UnkindedVar
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 10
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 10
+                        , srcInfoPoints = []
+                        }
+                      "a"))
+                (Symbol
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 11 72 13
+                     , srcInfoPoints = []
+                     }
+                   ":-"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 14 72 15
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 14 72 15
+                     , srcInfoPoints = []
+                     }
+                   "b")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 18 72 35
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 18 72 35
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 18 72 21
+                      , srcInfoPoints = []
+                      }
+                    "Sub")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 22 72 35
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 72 22 72 23
+                           , SrcSpan "tests/examples/DerivingVia.hs" 72 34 72 35
+                           ]
+                       }
+                     (TyForall
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 34
+                          , srcInfoPoints = []
+                          }
+                        Nothing
+                        (Just
+                           (CxSingle
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 27
+                                , srcInfoPoints =
+                                    [ SrcSpan "tests/examples/DerivingVia.hs" 72 25 72 27 ]
+                                }
+                              (TypeA
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 27
+                                   , srcInfoPoints =
+                                       [ SrcSpan "tests/examples/DerivingVia.hs" 72 25 72 27 ]
+                                   }
+                                 (TyVar
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 27
+                                      , srcInfoPoints =
+                                          [ SrcSpan "tests/examples/DerivingVia.hs" 72 25 72 27 ]
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 24
+                                         , srcInfoPoints = []
+                                         }
+                                       "a")))))
+                        (TyApp
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 34
+                             , srcInfoPoints = []
+                             }
+                           (TyCon
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 32
+                                , srcInfoPoints = []
+                                }
+                              (UnQual
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 32
+                                   , srcInfoPoints = []
+                                   }
+                                 (Ident
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 32
+                                      , srcInfoPoints = []
+                                      }
+                                    "Dict")))
+                           (TyVar
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 33 72 34
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 72 33 72 34
+                                   , srcInfoPoints = []
+                                   }
+                                 "b"))))
+                 ])
+          ]
+          []
+      , InfixDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 1 74 12
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 74 8 74 9 ]
+            }
+          (AssocLeft
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 1 74 7
+               , srcInfoPoints = []
+               })
+          (Just 1)
+          [ VarOp
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 10 74 12
+                , srcInfoPoints = []
+                }
+              (Symbol
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 10 74 12
+                   , srcInfoPoints = []
+                   }
+                 "\\\\")
+          ]
+      , TypeSig
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 1 75 39
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 75 6 75 8 ]
+            }
+          [ Symbol
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 1 75 5
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 75 1 75 2
+                    , SrcSpan "tests/examples/DerivingVia.hs" 75 2 75 4
+                    , SrcSpan "tests/examples/DerivingVia.hs" 75 4 75 5
+                    ]
+                }
+              "\\\\"
+          ]
+          (TyForall
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 39
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxSingle
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 13
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 75 11 75 13 ]
+                     }
+                   (TypeA
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 13
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 75 11 75 13 ]
+                        }
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 13
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 75 11 75 13 ]
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 10
+                              , srcInfoPoints = []
+                              }
+                            "a")))))
+             (TyFun
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 14 75 39
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingVia.hs" 75 23 75 25 ]
+                  }
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 14 75 22
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 75 14 75 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 75 21 75 22
+                         ]
+                     }
+                   (TyForall
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 21
+                        , srcInfoPoints = []
+                        }
+                      Nothing
+                      (Just
+                         (CxSingle
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 19
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 75 17 75 19 ]
+                              }
+                            (TypeA
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 19
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/DerivingVia.hs" 75 17 75 19 ]
+                                 }
+                               (TyVar
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 19
+                                    , srcInfoPoints =
+                                        [ SrcSpan "tests/examples/DerivingVia.hs" 75 17 75 19 ]
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 16
+                                       , srcInfoPoints = []
+                                       }
+                                     "b")))))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 20 75 21
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 20 75 21
+                              , srcInfoPoints = []
+                              }
+                            "r"))))
+                (TyFun
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 26 75 39
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 75 35 75 37 ]
+                     }
+                   (TyParen
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 26 75 34
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 75 26 75 27
+                            , SrcSpan "tests/examples/DerivingVia.hs" 75 33 75 34
+                            ]
+                        }
+                      (TyInfix
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 27 75 33
+                           , srcInfoPoints = []
+                           }
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 27 75 28
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 27 75 28
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))
+                         (UnpromotedName
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 29 75 31
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 29 75 31
+                                 , srcInfoPoints = []
+                                 }
+                               (Symbol
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 75 29 75 31
+                                    , srcInfoPoints = []
+                                    }
+                                  ":-")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 32 75 33
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 32 75 33
+                                 , srcInfoPoints = []
+                                 }
+                               "b"))))
+                   (TyVar
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 38 75 39
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 38 75 39
+                           , srcInfoPoints = []
+                           }
+                         "r")))))
+      , FunBind
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 18
+            , srcInfoPoints = []
+            }
+          [ InfixMatch
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 18
+                , srcInfoPoints = []
+                }
+              (PVar
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 2
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 2
+                      , srcInfoPoints = []
+                      }
+                    "r"))
+              (Symbol
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 3 76 5
+                   , srcInfoPoints = []
+                   }
+                 "\\\\")
+              [ PApp
+                  SrcSpanInfo
+                    { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 6 76 14
+                    , srcInfoPoints = []
+                    }
+                  (UnQual
+                     SrcSpanInfo
+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 6 76 9
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 6 76 9
+                          , srcInfoPoints = []
+                          }
+                        "Sub"))
+                  [ PApp
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 10 76 14
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 10 76 14
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 10 76 14
+                              , srcInfoPoints = []
+                              }
+                            "Dict"))
+                      []
+                  ]
+              ]
+              (UnGuardedRhs
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 15 76 18
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 76 15 76 16 ]
+                   }
+                 (Var
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 17 76 18
+                      , srcInfoPoints = []
+                      }
+                    (UnQual
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 17 76 18
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 17 76 18
+                            , srcInfoPoints = []
+                            }
+                          "r"))))
+              Nothing
+          ]
+      , ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 1 85 38
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 84 1 84 6
+                , SrcSpan "tests/examples/DerivingVia.hs" 84 38 84 43
+                , SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 87 1 87 0
+                ]
+            }
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 7 84 37
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 7 84 19
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 7 84 19
+                     , srcInfoPoints = []
+                     }
+                   "LiftingMonad"))
+             (KindedVar
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 20 84 37
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingVia.hs" 84 20 84 21
+                      , SrcSpan "tests/examples/DerivingVia.hs" 84 27 84 29
+                      , SrcSpan "tests/examples/DerivingVia.hs" 84 36 84 37
+                      ]
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 21 84 26
+                     , srcInfoPoints = []
+                     }
+                   "trans")
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 30 84 36
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 30 84 36
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 30 84 36
+                           , srcInfoPoints = []
+                           }
+                         "MTrans")))))
+          []
+          (Just
+             [ ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 38
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 85 9 85 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 38
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 85 9 85 11 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 8
+                          , srcInfoPoints = []
+                          }
+                        "proof"
+                    ]
+                    (TyInfix
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 38
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 19
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 17
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 17
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 17
+                                     , srcInfoPoints = []
+                                     }
+                                   "Monad")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 18 85 19
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 85 18 85 19
+                                  , srcInfoPoints = []
+                                  }
+                                "m")))
+                       (UnpromotedName
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 20 85 22
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 20 85 22
+                               , srcInfoPoints = []
+                               }
+                             (Symbol
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 85 20 85 22
+                                  , srcInfoPoints = []
+                                  }
+                                ":-")))
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 38
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 28
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 28
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 28
+                                     , srcInfoPoints = []
+                                     }
+                                   "Monad")))
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 29 85 38
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 85 29 85 30
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 85 37 85 38
+                                   ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 85 30 85 37
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 85 30 85 35
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 85 30 85 35
+                                        , srcInfoPoints = []
+                                        }
+                                      "trans"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 85 36 85 37
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 85 36 85 37
+                                        , srcInfoPoints = []
+                                        }
+                                      "m")))))))
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 1 91 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 87 1 87 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 87 44 87 49
+                , SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 91 1 91 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 43
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 43
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 22
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 22
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 22
+                           , srcInfoPoints = []
+                           }
+                         "LiftingMonad")))
+                (TyKind
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 23 87 43
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 87 23 87 24
+                         , SrcSpan "tests/examples/DerivingVia.hs" 87 33 87 35
+                         , SrcSpan "tests/examples/DerivingVia.hs" 87 42 87 43
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 32
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 30
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 30
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 30
+                                 , srcInfoPoints = []
+                                 }
+                               "StateT")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 31 87 32
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 31 87 32
+                              , srcInfoPoints = []
+                              }
+                            "s")))
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 36 87 42
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 36 87 42
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 36 87 42
+                              , srcInfoPoints = []
+                              }
+                            "MTrans"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 41
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 88 9 88 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 41
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 88 9 88 11 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 8
+                          , srcInfoPoints = []
+                          }
+                        "proof"
+                    ]
+                    (TyInfix
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 41
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 19
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 17
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 17
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 17
+                                     , srcInfoPoints = []
+                                     }
+                                   "Monad")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 18 88 19
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 88 18 88 19
+                                  , srcInfoPoints = []
+                                  }
+                                "m")))
+                       (UnpromotedName
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 20 88 22
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 20 88 22
+                               , srcInfoPoints = []
+                               }
+                             (Symbol
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 88 20 88 22
+                                  , srcInfoPoints = []
+                                  }
+                                ":-")))
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 41
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 28
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 28
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 28
+                                     , srcInfoPoints = []
+                                     }
+                                   "Monad")))
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 29 88 41
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 88 29 88 30
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 88 40 88 41
+                                   ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 40
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 38
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 36
+                                        , srcInfoPoints = []
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 36
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 88 30 88 36
+                                              , srcInfoPoints = []
+                                              }
+                                            "StateT")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 88 37 88 38
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 88 37 88 38
+                                           , srcInfoPoints = []
+                                           }
+                                         "s")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 88 39 88 40
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 88 39 88 40
+                                        , srcInfoPoints = []
+                                        }
+                                      "m")))))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 19
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 19
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 8
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 8
+                            , srcInfoPoints = []
+                            }
+                          "proof"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 9 89 19
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 89 9 89 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 19
+                            , srcInfoPoints = []
+                            }
+                          (Con
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 14
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 14
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 14
+                                     , srcInfoPoints = []
+                                     }
+                                   "Sub")))
+                          (Con
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 15 89 19
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 89 15 89 19
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 89 15 89 19
+                                     , srcInfoPoints = []
+                                     }
+                                   "Dict")))))
+                    Nothing)
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 1 95 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 91 1 91 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 91 57 91 62
+                , SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 95 1 95 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 56
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxSingle
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 21
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 91 19 91 21 ]
+                     }
+                   (TypeA
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 21
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 91 19 91 21 ]
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 21
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 91 19 91 21 ]
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 21
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 91 19 91 21 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 16
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 16
+                                    , srcInfoPoints = []
+                                    }
+                                  "Monoid")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 17 91 18
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 17 91 18
+                                 , srcInfoPoints = []
+                                 }
+                               "w"))))))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 56
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 34
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 34
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 34
+                           , srcInfoPoints = []
+                           }
+                         "LiftingMonad")))
+                (TyKind
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 35 91 56
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 91 35 91 36
+                         , SrcSpan "tests/examples/DerivingVia.hs" 91 46 91 48
+                         , SrcSpan "tests/examples/DerivingVia.hs" 91 55 91 56
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 45
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 43
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 43
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 43
+                                 , srcInfoPoints = []
+                                 }
+                               "WriterT")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 44 91 45
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 44 91 45
+                              , srcInfoPoints = []
+                              }
+                            "w")))
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 49 91 55
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 49 91 55
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 49 91 55
+                              , srcInfoPoints = []
+                              }
+                            "MTrans"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 42
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 92 9 92 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 42
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 92 9 92 11 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 8
+                          , srcInfoPoints = []
+                          }
+                        "proof"
+                    ]
+                    (TyInfix
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 42
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 19
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 17
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 17
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 17
+                                     , srcInfoPoints = []
+                                     }
+                                   "Monad")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 18 92 19
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 92 18 92 19
+                                  , srcInfoPoints = []
+                                  }
+                                "m")))
+                       (UnpromotedName
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 20 92 22
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 20 92 22
+                               , srcInfoPoints = []
+                               }
+                             (Symbol
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 92 20 92 22
+                                  , srcInfoPoints = []
+                                  }
+                                ":-")))
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 42
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 28
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 28
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 28
+                                     , srcInfoPoints = []
+                                     }
+                                   "Monad")))
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 29 92 42
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 92 29 92 30
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 92 41 92 42
+                                   ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 41
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 39
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 37
+                                        , srcInfoPoints = []
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 37
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 92 30 92 37
+                                              , srcInfoPoints = []
+                                              }
+                                            "WriterT")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 92 38 92 39
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 92 38 92 39
+                                           , srcInfoPoints = []
+                                           }
+                                         "w")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 92 40 92 41
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 92 40 92 41
+                                        , srcInfoPoints = []
+                                        }
+                                      "m")))))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 19
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 19
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 8
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 8
+                            , srcInfoPoints = []
+                            }
+                          "proof"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 9 93 19
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 93 9 93 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 19
+                            , srcInfoPoints = []
+                            }
+                          (Con
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 14
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 14
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 14
+                                     , srcInfoPoints = []
+                                     }
+                                   "Sub")))
+                          (Con
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 15 93 19
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 93 15 93 19
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 93 15 93 19
+                                     , srcInfoPoints = []
+                                     }
+                                   "Dict")))))
+                    Nothing)
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 1 99 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 95 1 95 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 95 102 95 107
+                , SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 99 1 99 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 95 10 95 101
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 10 95 54
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 95 10 95 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 95 29 95 30
+                         , SrcSpan "tests/examples/DerivingVia.hs" 95 50 95 51
+                         , SrcSpan "tests/examples/DerivingVia.hs" 95 52 95 54
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 29
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 29
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 29
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 23
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 23
+                                     , srcInfoPoints = []
+                                     }
+                                   "LiftingMonad")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 24 95 29
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 95 24 95 29
+                                  , srcInfoPoints = []
+                                  }
+                                "trans")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 50
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 50
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 50
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 43
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 43
+                                     , srcInfoPoints = []
+                                     }
+                                   "LiftingMonad")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 44 95 50
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 95 44 95 50
+                                  , srcInfoPoints = []
+                                  }
+                                "trans'")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 101
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 67
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 67
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 67
+                           , srcInfoPoints = []
+                           }
+                         "LiftingMonad")))
+                (TyKind
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 95 68 95 101
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 95 68 95 69
+                         , SrcSpan "tests/examples/DerivingVia.hs" 95 91 95 93
+                         , SrcSpan "tests/examples/DerivingVia.hs" 95 100 95 101
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 90
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 83
+                           , srcInfoPoints = []
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 77
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 77
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 77
+                                    , srcInfoPoints = []
+                                    }
+                                  "ComposeT")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 78 95 83
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 78 95 83
+                                 , srcInfoPoints = []
+                                 }
+                               "trans")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 84 95 90
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 84 95 90
+                              , srcInfoPoints = []
+                              }
+                            "trans'")))
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 95 94 95 100
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 95 94 95 100
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 95 94 95 100
+                              , srcInfoPoints = []
+                              }
+                            "MTrans"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 64
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 96 9 96 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 64
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 96 9 96 11 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 8
+                          , srcInfoPoints = []
+                          }
+                        "proof"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 12 96 64
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 96 12 96 18
+                             , SrcSpan "tests/examples/DerivingVia.hs" 96 20 96 21
+                             ]
+                         }
+                       (Just
+                          [ UnkindedVar
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 19 96 20
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 96 19 96 20
+                                   , srcInfoPoints = []
+                                   }
+                                 "m")
+                          ])
+                       Nothing
+                       (TyInfix
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 64
+                            , srcInfoPoints = []
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 29
+                               , srcInfoPoints = []
+                               }
+                             (TyCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 27
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 27
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 27
+                                        , srcInfoPoints = []
+                                        }
+                                      "Monad")))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 96 28 96 29
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 96 28 96 29
+                                     , srcInfoPoints = []
+                                     }
+                                   "m")))
+                          (UnpromotedName
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 30 96 32
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 96 30 96 32
+                                  , srcInfoPoints = []
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 96 30 96 32
+                                     , srcInfoPoints = []
+                                     }
+                                   ":-")))
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 64
+                               , srcInfoPoints = []
+                               }
+                             (TyCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 38
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 38
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 38
+                                        , srcInfoPoints = []
+                                        }
+                                      "Monad")))
+                             (TyParen
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 96 39 96 64
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 96 39 96 40
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 96 63 96 64
+                                      ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 96 40 96 63
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 96 40 96 61
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyApp
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 96 40 96 54
+                                           , srcInfoPoints = []
+                                           }
+                                         (TyCon
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 96 40 96 48
+                                              , srcInfoPoints = []
+                                              }
+                                            (UnQual
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 96 40 96 48
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (Ident
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          96
+                                                          40
+                                                          96
+                                                          48
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  "ComposeT")))
+                                         (TyVar
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 96 49 96 54
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 96 49 96 54
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "trans")))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 96 55 96 61
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 96 55 96 61
+                                              , srcInfoPoints = []
+                                              }
+                                            "trans'")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 96 62 96 63
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 96 62 96 63
+                                           , srcInfoPoints = []
+                                           }
+                                         "m"))))))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 69
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 69
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 8
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 8
+                            , srcInfoPoints = []
+                            }
+                          "proof"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 9 97 69
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 97 9 97 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 69
+                            , srcInfoPoints = []
+                            }
+                          (Con
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 14
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 14
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 14
+                                     , srcInfoPoints = []
+                                     }
+                                   "Sub")))
+                          (Paren
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 15 97 69
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 97 15 97 16
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 97 68 97 69
+                                   ]
+                               }
+                             (InfixApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 68
+                                  , srcInfoPoints = []
+                                  }
+                                (InfixApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 48
+                                     , srcInfoPoints = []
+                                     }
+                                   (Con
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 20
+                                        , srcInfoPoints = []
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 20
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 97 16 97 20
+                                              , srcInfoPoints = []
+                                              }
+                                            "Dict")))
+                                   (QVarOp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 97 21 97 23
+                                        , srcInfoPoints = []
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 21 97 23
+                                           , srcInfoPoints = []
+                                           }
+                                         (Symbol
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 97 21 97 23
+                                              , srcInfoPoints = []
+                                              }
+                                            "\\\\")))
+                                   (App
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 97 24 97 48
+                                        , srcInfoPoints = []
+                                        }
+                                      (App
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 24 97 36
+                                           , srcInfoPoints = []
+                                           }
+                                         (Var
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 97 24 97 29
+                                              , srcInfoPoints = []
+                                              }
+                                            (UnQual
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 97 24 97 29
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (Ident
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          97
+                                                          24
+                                                          97
+                                                          29
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  "proof")))
+                                         (TypeApp
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 97 30 97 36
+                                              , srcInfoPoints =
+                                                  [ SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 97 30 97 31
+                                                  ]
+                                              }
+                                            (TyVar
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 97 31 97 36
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (Ident
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          97
+                                                          31
+                                                          97
+                                                          36
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  "trans"))))
+                                      (TypeApp
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 37 97 48
+                                           , srcInfoPoints =
+                                               [ SrcSpan "tests/examples/DerivingVia.hs" 97 37 97 38
+                                               ]
+                                           }
+                                         (TyParen
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 97 38 97 48
+                                              , srcInfoPoints =
+                                                  [ SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 97 38 97 39
+                                                  , SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 97 47 97 48
+                                                  ]
+                                              }
+                                            (TyApp
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 97 39 97 47
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (TyVar
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          97
+                                                          39
+                                                          97
+                                                          45
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  (Ident
+                                                     SrcSpanInfo
+                                                       { srcInfoSpan =
+                                                           SrcSpan
+                                                             "tests/examples/DerivingVia.hs"
+                                                             97
+                                                             39
+                                                             97
+                                                             45
+                                                       , srcInfoPoints = []
+                                                       }
+                                                     "trans'"))
+                                               (TyVar
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          97
+                                                          46
+                                                          97
+                                                          47
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  (Ident
+                                                     SrcSpanInfo
+                                                       { srcInfoSpan =
+                                                           SrcSpan
+                                                             "tests/examples/DerivingVia.hs"
+                                                             97
+                                                             46
+                                                             97
+                                                             47
+                                                       , srcInfoPoints = []
+                                                       }
+                                                     "m")))))))
+                                (QVarOp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 97 49 97 51
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 97 49 97 51
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 49 97 51
+                                           , srcInfoPoints = []
+                                           }
+                                         "\\\\")))
+                                (App
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 97 52 97 68
+                                     , srcInfoPoints = []
+                                     }
+                                   (App
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 97 52 97 65
+                                        , srcInfoPoints = []
+                                        }
+                                      (Var
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 52 97 57
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 97 52 97 57
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 97 52 97 57
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "proof")))
+                                      (TypeApp
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 58 97 65
+                                           , srcInfoPoints =
+                                               [ SrcSpan "tests/examples/DerivingVia.hs" 97 58 97 59
+                                               ]
+                                           }
+                                         (TyVar
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 97 59 97 65
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 97 59 97 65
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "trans'"))))
+                                   (TypeApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 97 66 97 68
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 97 66 97 67 ]
+                                        }
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 67 97 68
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 97 67 97 68
+                                              , srcInfoPoints = []
+                                              }
+                                            "m"))))))))
+                    Nothing)
+             ])
+      , GDataDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 1 109 34
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 99 15 99 17
+                , SrcSpan "tests/examples/DerivingVia.hs" 99 25 99 30
+                , SrcSpan "tests/examples/DerivingVia.hs" 100 3 100 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 101 3 101 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 101 3 101 3
+                ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 1 99 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHead
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 9 99 14
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 9 99 14
+                  , srcInfoPoints = []
+                  }
+                "Stack"))
+          (Just
+             (TyCon
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 18 99 24
+                  , srcInfoPoints = []
+                  }
+                (UnQual
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 18 99 24
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 18 99 24
+                        , srcInfoPoints = []
+                        }
+                      "MTrans"))))
+          [ GadtDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 100 3 100 71
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 100 9 100 11 ]
+                }
+              (Ident
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 100 3 100 8
+                   , srcInfoPoints = []
+                   }
+                 "Stack")
+              Nothing
+              Nothing
+              Nothing
+              (TyFun
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 71
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 100 59 100 61 ]
+                   }
+                 (TyApp
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 58
+                      , srcInfoPoints = []
+                      }
+                    (TyApp
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 56
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 23
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 19
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 19
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 19
+                                     , srcInfoPoints = []
+                                     }
+                                   "ReaderT")))
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 100 20 100 23
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 100 20 100 23
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 100 20 100 23
+                                     , srcInfoPoints = []
+                                     }
+                                   "Int"))))
+                       (TyParen
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 100 24 100 56
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 100 24 100 25
+                                , SrcSpan "tests/examples/DerivingVia.hs" 100 55 100 56
+                                ]
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 55
+                               , srcInfoPoints = []
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 36
+                                  , srcInfoPoints = []
+                                  }
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 31
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 31
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 31
+                                           , srcInfoPoints = []
+                                           }
+                                         "StateT")))
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 100 32 100 36
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 100 32 100 36
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 100 32 100 36
+                                           , srcInfoPoints = []
+                                           }
+                                         "Bool"))))
+                             (TyParen
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 100 37 100 55
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 100 37 100 38
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 100 54 100 55
+                                      ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 100 38 100 54
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 100 38 100 52
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyCon
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 100 38 100 45
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 100 38 100 45
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 100 38 100 45
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "WriterT")))
+                                      (TyCon
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 100 46 100 52
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 100 46 100 52
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 100 46 100 52
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "String"))))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 100 53 100 54
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 100 53 100 54
+                                           , srcInfoPoints = []
+                                           }
+                                         "m")))))))
+                    (TyVar
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 100 57 100 58
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 100 57 100 58
+                            , srcInfoPoints = []
+                            }
+                          "a")))
+                 (TyApp
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 71
+                      , srcInfoPoints = []
+                      }
+                    (TyApp
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 69
+                         , srcInfoPoints = []
+                         }
+                       (TyCon
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 67
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 67
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 67
+                                  , srcInfoPoints = []
+                                  }
+                                "Stack")))
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 100 68 100 69
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 100 68 100 69
+                               , srcInfoPoints = []
+                               }
+                             "m")))
+                    (TyVar
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 100 70 100 71
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 100 70 100 71
+                            , srcInfoPoints = []
+                            }
+                          "a"))))
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 101 3 108 6
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 101 3 101 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 102 5 102 6
+                    , SrcSpan "tests/examples/DerivingVia.hs" 103 5 103 6
+                    , SrcSpan "tests/examples/DerivingVia.hs" 104 5 104 6
+                    , SrcSpan "tests/examples/DerivingVia.hs" 105 5 105 6
+                    , SrcSpan "tests/examples/DerivingVia.hs" 106 5 106 6
+                    , SrcSpan "tests/examples/DerivingVia.hs" 107 5 107 6
+                    , SrcSpan "tests/examples/DerivingVia.hs" 108 5 108 6
+                    ]
+                }
+              (Just
+                 (DerivNewtype
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 101 12 101 19
+                      , srcInfoPoints = []
+                      }))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14
+                             , srcInfoPoints = []
+                             }
+                           "Functor")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18
+                             , srcInfoPoints = []
+                             }
+                           "Applicative")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12
+                             , srcInfoPoints = []
+                             }
+                           "Monad")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 22
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHApp
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 22
+                       , srcInfoPoints = []
+                       }
+                     (IHCon
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 18
+                          , srcInfoPoints = []
+                          }
+                        (UnQual
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 18
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 18
+                                , srcInfoPoints = []
+                                }
+                              "MonadReader")))
+                     (TyCon
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 105 19 105 22
+                          , srcInfoPoints = []
+                          }
+                        (UnQual
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 105 19 105 22
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 105 19 105 22
+                                , srcInfoPoints = []
+                                }
+                              "Int"))))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 22
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHApp
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 22
+                       , srcInfoPoints = []
+                       }
+                     (IHCon
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 17
+                          , srcInfoPoints = []
+                          }
+                        (UnQual
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 17
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 17
+                                , srcInfoPoints = []
+                                }
+                              "MonadState")))
+                     (TyCon
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 106 18 106 22
+                          , srcInfoPoints = []
+                          }
+                        (UnQual
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 106 18 106 22
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 106 18 106 22
+                                , srcInfoPoints = []
+                                }
+                              "Bool"))))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 25
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHApp
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 25
+                       , srcInfoPoints = []
+                       }
+                     (IHCon
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 18
+                          , srcInfoPoints = []
+                          }
+                        (UnQual
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 18
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 18
+                                , srcInfoPoints = []
+                                }
+                              "MonadWriter")))
+                     (TyCon
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 107 19 107 25
+                          , srcInfoPoints = []
+                          }
+                        (UnQual
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 107 19 107 25
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 107 19 107 25
+                                , srcInfoPoints = []
+                                }
+                              "String"))))
+              ]
+          , Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 109 3 109 34
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 109 3 109 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 109 12 109 13
+                    , SrcSpan "tests/examples/DerivingVia.hs" 109 23 109 24
+                    , SrcSpan "tests/examples/DerivingVia.hs" 109 33 109 34
+                    ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 110 8 110 11
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 110 12 110 74
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 110 12 110 13
+                             , SrcSpan "tests/examples/DerivingVia.hs" 110 73 110 74
+                             ]
+                         }
+                       (TyInfix
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 73
+                            , srcInfoPoints = []
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 24
+                               , srcInfoPoints = []
+                               }
+                             (TyCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 20
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 20
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 20
+                                        , srcInfoPoints = []
+                                        }
+                                      "ReaderT")))
+                             (TyCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 110 21 110 24
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 21 110 24
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 110 21 110 24
+                                        , srcInfoPoints = []
+                                        }
+                                      "Int"))))
+                          (UnpromotedName
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 35
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 26
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 110 26 110 34
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 110 34 110 35
+                                   ]
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 35
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 26
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 110 26 110 34
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 110 34 110 35
+                                      ]
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 26 110 34
+                                     , srcInfoPoints = []
+                                     }
+                                   "ComposeT")))
+                          (TyInfix
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 73
+                               , srcInfoPoints = []
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 47
+                                  , srcInfoPoints = []
+                                  }
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 42
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 42
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 42
+                                           , srcInfoPoints = []
+                                           }
+                                         "StateT")))
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 43 110 47
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 110 43 110 47
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 110 43 110 47
+                                           , srcInfoPoints = []
+                                           }
+                                         "Bool"))))
+                             (UnpromotedName
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 58
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 49
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 110 49 110 57
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 110 57 110 58
+                                      ]
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 58
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 49
+                                         , SrcSpan "tests/examples/DerivingVia.hs" 110 49 110 57
+                                         , SrcSpan "tests/examples/DerivingVia.hs" 110 57 110 58
+                                         ]
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 110 49 110 57
+                                        , srcInfoPoints = []
+                                        }
+                                      "ComposeT")))
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 73
+                                  , srcInfoPoints = []
+                                  }
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 66
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 66
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 66
+                                           , srcInfoPoints = []
+                                           }
+                                         "WriterT")))
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 67 110 73
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 110 67 110 73
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 110 67 110 73
+                                           , srcInfoPoints = []
+                                           }
+                                         "String")))))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23
+                             , srcInfoPoints = []
+                             }
+                           "MonadTrans")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33
+                             , srcInfoPoints = []
+                             }
+                           "MFunctor")))
+              ]
+          ]
+      , ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 112 1 113 57
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 112 1 112 6
+                , SrcSpan "tests/examples/DerivingVia.hs" 112 34 112 39
+                , SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 115 1 115 0
+                ]
+            }
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 112 7 112 33
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 112 7 112 15
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 112 7 112 15
+                     , srcInfoPoints = []
+                     }
+                   "MFunctor"))
+             (KindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 112 16 112 33
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingVia.hs" 112 16 112 17
+                      , SrcSpan "tests/examples/DerivingVia.hs" 112 23 112 25
+                      , SrcSpan "tests/examples/DerivingVia.hs" 112 32 112 33
+                      ]
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 112 17 112 22
+                     , srcInfoPoints = []
+                     }
+                   "trans")
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 112 26 112 32
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 112 26 112 32
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 112 26 112 32
+                           , srcInfoPoints = []
+                           }
+                         "MTrans")))))
+          []
+          (Just
+             [ ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 57
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 113 9 113 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 57
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 113 9 113 11 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 8
+                          , srcInfoPoints = []
+                          }
+                        "hoist"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 57
+                         , srcInfoPoints = []
+                         }
+                       Nothing
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 22
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 113 20 113 22 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 22
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 113 20 113 22 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 22
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 113 20 113 22 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 22
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 113 20 113 22
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 17
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 113 12 113 17
+                                              , srcInfoPoints = []
+                                              }
+                                            "Monad")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 18 113 19
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 18 113 19
+                                           , srcInfoPoints = []
+                                           }
+                                         "m"))))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 113 23 113 57
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 113 33 113 35 ]
+                            }
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 113 23 113 32
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 113 23 113 24
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 113 31 113 32
+                                   ]
+                               }
+                             (TyInfix
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 113 24 113 31
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 113 24 113 25
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 24 113 25
+                                        , srcInfoPoints = []
+                                        }
+                                      "m"))
+                                (UnpromotedName
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 113 26 113 28
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 26 113 28
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 26 113 28
+                                           , srcInfoPoints = []
+                                           }
+                                         "~>")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 113 29 113 31
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 29 113 31
+                                        , srcInfoPoints = []
+                                        }
+                                      "m'"))))
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 113 36 113 57
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 113 36 113 37
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 113 56 113 57
+                                   ]
+                               }
+                             (TyInfix
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 56
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 44
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 42
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 42
+                                           , srcInfoPoints = []
+                                           }
+                                         "trans"))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 43 113 44
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 43 113 44
+                                           , srcInfoPoints = []
+                                           }
+                                         "m")))
+                                (UnpromotedName
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 113 45 113 47
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 45 113 47
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 45 113 47
+                                           , srcInfoPoints = []
+                                           }
+                                         "~>")))
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 113 48 113 56
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 48 113 53
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 48 113 53
+                                           , srcInfoPoints = []
+                                           }
+                                         "trans"))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 54 113 56
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 54 113 56
+                                           , srcInfoPoints = []
+                                           }
+                                         "m'"))))))))
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 115 1 119 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 115 1 115 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 115 41 115 46
+                , SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 119 1 119 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 40
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 40
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 18
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 18
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 18
+                           , srcInfoPoints = []
+                           }
+                         "MFunctor")))
+                (TyKind
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 115 19 115 40
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 115 19 115 20
+                         , SrcSpan "tests/examples/DerivingVia.hs" 115 30 115 32
+                         , SrcSpan "tests/examples/DerivingVia.hs" 115 39 115 40
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 29
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 27
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 27
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 27
+                                 , srcInfoPoints = []
+                                 }
+                               "ReaderT")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 115 28 115 29
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 115 28 115 29
+                              , srcInfoPoints = []
+                              }
+                            "r")))
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 115 33 115 39
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 115 33 115 39
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 115 33 115 39
+                              , srcInfoPoints = []
+                              }
+                            "MTrans"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 65
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 116 9 116 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 65
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 116 9 116 11 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 8
+                          , srcInfoPoints = []
+                          }
+                        "hoist"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 65
+                         , srcInfoPoints = []
+                         }
+                       Nothing
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 22
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 116 20 116 22 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 22
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 116 20 116 22 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 22
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 116 20 116 22 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 22
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 116 20 116 22
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 17
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 116 12 116 17
+                                              , srcInfoPoints = []
+                                              }
+                                            "Monad")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 18 116 19
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 18 116 19
+                                           , srcInfoPoints = []
+                                           }
+                                         "m"))))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 116 23 116 65
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 116 33 116 35 ]
+                            }
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 116 23 116 32
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 116 23 116 24
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 116 31 116 32
+                                   ]
+                               }
+                             (TyInfix
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 116 24 116 31
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 116 24 116 25
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 24 116 25
+                                        , srcInfoPoints = []
+                                        }
+                                      "m"))
+                                (UnpromotedName
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 116 26 116 28
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 26 116 28
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 26 116 28
+                                           , srcInfoPoints = []
+                                           }
+                                         "~>")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 116 29 116 31
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 29 116 31
+                                        , srcInfoPoints = []
+                                        }
+                                      "m'"))))
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 116 36 116 65
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 116 36 116 37
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 116 64 116 65
+                                   ]
+                               }
+                             (TyInfix
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 64
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 48
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 46
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyCon
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 44
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 116 37 116 44
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 116 37 116 44
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "ReaderT")))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 45 116 46
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 116 45 116 46
+                                              , srcInfoPoints = []
+                                              }
+                                            "r")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 47 116 48
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 47 116 48
+                                           , srcInfoPoints = []
+                                           }
+                                         "m")))
+                                (UnpromotedName
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 116 49 116 51
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 49 116 51
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 49 116 51
+                                           , srcInfoPoints = []
+                                           }
+                                         "~>")))
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 116 52 116 64
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 52 116 61
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyCon
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 52 116 59
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 116 52 116 59
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 116 52 116 59
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "ReaderT")))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 60 116 61
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 116 60 116 61
+                                              , srcInfoPoints = []
+                                              }
+                                            "r")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 62 116 64
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 62 116 64
+                                           , srcInfoPoints = []
+                                           }
+                                         "m'"))))))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 46
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 46
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 46
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 8
+                             , srcInfoPoints = []
+                             }
+                           "hoist")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 117 9 117 12
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 117 9 117 12
+                                 , srcInfoPoints = []
+                                 }
+                               "nat")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 117 13 117 46
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 117 13 117 14 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 46
+                                , srcInfoPoints = []
+                                }
+                              (Con
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 22
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 22
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 22
+                                         , srcInfoPoints = []
+                                         }
+                                       "ReaderT")))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 117 23 117 24
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 117 23 117 24
+                                      , srcInfoPoints = []
+                                      }
+                                    (Symbol
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 117 23 117 24
+                                         , srcInfoPoints = []
+                                         }
+                                       ".")))
+                              (InfixApp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 117 25 117 46
+                                   , srcInfoPoints = []
+                                   }
+                                 (App
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 117 25 117 33
+                                      , srcInfoPoints = []
+                                      }
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 117 25 117 29
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 117 25 117 29
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 117 25 117 29
+                                               , srcInfoPoints = []
+                                               }
+                                             "fmap")))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 117 30 117 33
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 117 30 117 33
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 117 30 117 33
+                                               , srcInfoPoints = []
+                                               }
+                                             "nat"))))
+                                 (QVarOp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 117 34 117 35
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 117 34 117 35
+                                         , srcInfoPoints = []
+                                         }
+                                       (Symbol
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 117 34 117 35
+                                            , srcInfoPoints = []
+                                            }
+                                          ".")))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 117 36 117 46
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 117 36 117 46
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 117 36 117 46
+                                            , srcInfoPoints = []
+                                            }
+                                          "runReaderT"))))))
+                        Nothing
+                    ])
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 119 1 123 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 119 1 119 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 119 40 119 45
+                , SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 123 1 123 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 39
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 39
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 18
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 18
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 18
+                           , srcInfoPoints = []
+                           }
+                         "MFunctor")))
+                (TyKind
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 119 19 119 39
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 119 19 119 20
+                         , SrcSpan "tests/examples/DerivingVia.hs" 119 29 119 31
+                         , SrcSpan "tests/examples/DerivingVia.hs" 119 38 119 39
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 28
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 26
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 26
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 26
+                                 , srcInfoPoints = []
+                                 }
+                               "StateT")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 119 27 119 28
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 119 27 119 28
+                              , srcInfoPoints = []
+                              }
+                            "s")))
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 119 32 119 38
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 119 32 119 38
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 119 32 119 38
+                              , srcInfoPoints = []
+                              }
+                            "MTrans"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 63
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 120 9 120 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 63
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 120 9 120 11 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 8
+                          , srcInfoPoints = []
+                          }
+                        "hoist"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 63
+                         , srcInfoPoints = []
+                         }
+                       Nothing
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 22
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 120 20 120 22 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 22
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 120 20 120 22 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 22
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 120 20 120 22 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 22
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 120 20 120 22
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 17
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 120 12 120 17
+                                              , srcInfoPoints = []
+                                              }
+                                            "Monad")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 18 120 19
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 18 120 19
+                                           , srcInfoPoints = []
+                                           }
+                                         "m"))))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 120 23 120 63
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 120 33 120 35 ]
+                            }
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 120 23 120 32
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 120 23 120 24
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 120 31 120 32
+                                   ]
+                               }
+                             (TyInfix
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 120 24 120 31
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 120 24 120 25
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 24 120 25
+                                        , srcInfoPoints = []
+                                        }
+                                      "m"))
+                                (UnpromotedName
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 120 26 120 28
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 26 120 28
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 26 120 28
+                                           , srcInfoPoints = []
+                                           }
+                                         "~>")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 120 29 120 31
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 29 120 31
+                                        , srcInfoPoints = []
+                                        }
+                                      "m'"))))
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 120 36 120 63
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 120 36 120 37
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 120 62 120 63
+                                   ]
+                               }
+                             (TyInfix
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 62
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 47
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 45
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyCon
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 43
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 120 37 120 43
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 120 37 120 43
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "StateT")))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 44 120 45
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 120 44 120 45
+                                              , srcInfoPoints = []
+                                              }
+                                            "s")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 46 120 47
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 46 120 47
+                                           , srcInfoPoints = []
+                                           }
+                                         "m")))
+                                (UnpromotedName
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 120 48 120 50
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 48 120 50
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 48 120 50
+                                           , srcInfoPoints = []
+                                           }
+                                         "~>")))
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 120 51 120 62
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 51 120 59
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyCon
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 51 120 57
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 120 51 120 57
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 120 51 120 57
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "StateT")))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 58 120 59
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 120 58 120 59
+                                              , srcInfoPoints = []
+                                              }
+                                            "s")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 60 120 62
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 60 120 62
+                                           , srcInfoPoints = []
+                                           }
+                                         "m'"))))))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 44
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 44
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 44
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 8
+                             , srcInfoPoints = []
+                             }
+                           "hoist")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 121 9 121 12
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 121 9 121 12
+                                 , srcInfoPoints = []
+                                 }
+                               "nat")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 121 13 121 44
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 121 13 121 14 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 44
+                                , srcInfoPoints = []
+                                }
+                              (Con
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 21
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 21
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 21
+                                         , srcInfoPoints = []
+                                         }
+                                       "StateT")))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 121 22 121 23
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 121 22 121 23
+                                      , srcInfoPoints = []
+                                      }
+                                    (Symbol
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 121 22 121 23
+                                         , srcInfoPoints = []
+                                         }
+                                       ".")))
+                              (InfixApp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 121 24 121 44
+                                   , srcInfoPoints = []
+                                   }
+                                 (App
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 121 24 121 32
+                                      , srcInfoPoints = []
+                                      }
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 121 24 121 28
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 121 24 121 28
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 121 24 121 28
+                                               , srcInfoPoints = []
+                                               }
+                                             "fmap")))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 121 29 121 32
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 121 29 121 32
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 121 29 121 32
+                                               , srcInfoPoints = []
+                                               }
+                                             "nat"))))
+                                 (QVarOp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 121 33 121 34
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 121 33 121 34
+                                         , srcInfoPoints = []
+                                         }
+                                       (Symbol
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 121 33 121 34
+                                            , srcInfoPoints = []
+                                            }
+                                          ".")))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 121 35 121 44
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 121 35 121 44
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 121 35 121 44
+                                            , srcInfoPoints = []
+                                            }
+                                          "runStateT"))))))
+                        Nothing
+                    ])
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 123 1 127 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 123 1 123 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 123 41 123 46
+                , SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 127 1 127 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 40
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 40
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 18
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 18
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 18
+                           , srcInfoPoints = []
+                           }
+                         "MFunctor")))
+                (TyKind
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 123 19 123 40
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 123 19 123 20
+                         , SrcSpan "tests/examples/DerivingVia.hs" 123 30 123 32
+                         , SrcSpan "tests/examples/DerivingVia.hs" 123 39 123 40
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 29
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 27
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 27
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 27
+                                 , srcInfoPoints = []
+                                 }
+                               "WriterT")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 123 28 123 29
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 123 28 123 29
+                              , srcInfoPoints = []
+                              }
+                            "w")))
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 123 33 123 39
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 123 33 123 39
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 123 33 123 39
+                              , srcInfoPoints = []
+                              }
+                            "MTrans"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 65
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 124 9 124 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 65
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 124 9 124 11 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 8
+                          , srcInfoPoints = []
+                          }
+                        "hoist"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 65
+                         , srcInfoPoints = []
+                         }
+                       Nothing
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 22
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 124 20 124 22 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 22
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 124 20 124 22 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 22
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 124 20 124 22 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 22
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 124 20 124 22
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 17
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 124 12 124 17
+                                              , srcInfoPoints = []
+                                              }
+                                            "Monad")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 18 124 19
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 18 124 19
+                                           , srcInfoPoints = []
+                                           }
+                                         "m"))))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 124 23 124 65
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 124 33 124 35 ]
+                            }
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 124 23 124 32
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 124 23 124 24
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 124 31 124 32
+                                   ]
+                               }
+                             (TyInfix
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 124 24 124 31
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 124 24 124 25
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 24 124 25
+                                        , srcInfoPoints = []
+                                        }
+                                      "m"))
+                                (UnpromotedName
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 124 26 124 28
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 26 124 28
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 26 124 28
+                                           , srcInfoPoints = []
+                                           }
+                                         "~>")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 124 29 124 31
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 29 124 31
+                                        , srcInfoPoints = []
+                                        }
+                                      "m'"))))
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 124 36 124 65
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 124 36 124 37
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 124 64 124 65
+                                   ]
+                               }
+                             (TyInfix
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 64
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 48
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 46
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyCon
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 44
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 124 37 124 44
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 124 37 124 44
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "WriterT")))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 45 124 46
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 124 45 124 46
+                                              , srcInfoPoints = []
+                                              }
+                                            "w")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 47 124 48
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 47 124 48
+                                           , srcInfoPoints = []
+                                           }
+                                         "m")))
+                                (UnpromotedName
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 124 49 124 51
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 49 124 51
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 49 124 51
+                                           , srcInfoPoints = []
+                                           }
+                                         "~>")))
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 124 52 124 64
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 52 124 61
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyCon
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 52 124 59
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 124 52 124 59
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 124 52 124 59
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "WriterT")))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 60 124 61
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 124 60 124 61
+                                              , srcInfoPoints = []
+                                              }
+                                            "w")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 62 124 64
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 62 124 64
+                                           , srcInfoPoints = []
+                                           }
+                                         "m'"))))))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 41
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 41
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 41
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 8
+                             , srcInfoPoints = []
+                             }
+                           "hoist")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 125 9 125 12
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 125 9 125 12
+                                 , srcInfoPoints = []
+                                 }
+                               "nat")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 125 13 125 41
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 125 13 125 14 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 41
+                                , srcInfoPoints = []
+                                }
+                              (Con
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 22
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 22
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 22
+                                         , srcInfoPoints = []
+                                         }
+                                       "WriterT")))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 125 23 125 24
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 125 23 125 24
+                                      , srcInfoPoints = []
+                                      }
+                                    (Symbol
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 125 23 125 24
+                                         , srcInfoPoints = []
+                                         }
+                                       ".")))
+                              (InfixApp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 125 25 125 41
+                                   , srcInfoPoints = []
+                                   }
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 125 25 125 28
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 125 25 125 28
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 125 25 125 28
+                                            , srcInfoPoints = []
+                                            }
+                                          "nat")))
+                                 (QVarOp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 125 29 125 30
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 125 29 125 30
+                                         , srcInfoPoints = []
+                                         }
+                                       (Symbol
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 125 29 125 30
+                                            , srcInfoPoints = []
+                                            }
+                                          ".")))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 125 31 125 41
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 125 31 125 41
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 125 31 125 41
+                                            , srcInfoPoints = []
+                                            }
+                                          "runWriterT"))))))
+                        Nothing
+                    ])
+             ])
+      , InfixDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 127 1 127 20
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 127 8 127 9 ]
+            }
+          (AssocRight
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 127 1 127 7
+               , srcInfoPoints = []
+               })
+          (Just 9)
+          [ ConOp
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 20
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 127 11 127 19
+                    , SrcSpan "tests/examples/DerivingVia.hs" 127 19 127 20
+                    ]
+                }
+              (Ident
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 20
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 11
+                       , SrcSpan "tests/examples/DerivingVia.hs" 127 11 127 19
+                       , SrcSpan "tests/examples/DerivingVia.hs" 127 19 127 20
+                       ]
+                   }
+                 "ComposeT")
+          ]
+      , GDataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 128 1 130 49
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 128 18 128 20
+                , SrcSpan "tests/examples/DerivingVia.hs" 128 48 128 53
+                , SrcSpan "tests/examples/DerivingVia.hs" 129 3 129 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 3
+                ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 128 1 128 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHead
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 128 9 128 17
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 128 9 128 17
+                  , srcInfoPoints = []
+                  }
+                "ComposeT"))
+          (Just
+             (TyFun
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 47
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingVia.hs" 128 28 128 30 ]
+                  }
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 27
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 27
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 27
+                           , srcInfoPoints = []
+                           }
+                         "MTrans")))
+                (TyFun
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 47
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 128 38 128 40 ]
+                     }
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 37
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 37
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 37
+                              , srcInfoPoints = []
+                              }
+                            "MTrans")))
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 128 41 128 47
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 128 41 128 47
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 128 41 128 47
+                              , srcInfoPoints = []
+                              }
+                            "MTrans"))))))
+          [ GadtDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 129 3 129 63
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 129 12 129 14
+                    , SrcSpan "tests/examples/DerivingVia.hs" 129 15 129 16
+                    , SrcSpan "tests/examples/DerivingVia.hs" 129 42 129 43
+                    , SrcSpan "tests/examples/DerivingVia.hs" 129 44 129 46
+                    ]
+                }
+              (Ident
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 129 3 129 11
+                   , srcInfoPoints = []
+                   }
+                 "ComposeT")
+              Nothing
+              Nothing
+              (Just
+                 [ FieldDecl
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 129 17 129 41
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 129 29 129 31 ]
+                       }
+                     [ Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 129 17 129 28
+                           , srcInfoPoints = []
+                           }
+                         "getComposeT"
+                     ]
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 41
+                          , srcInfoPoints = []
+                          }
+                        (TyApp
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 39
+                             , srcInfoPoints = []
+                             }
+                           (TyVar
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 33
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 33
+                                   , srcInfoPoints = []
+                                   }
+                                 "f"))
+                           (TyParen
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 129 34 129 39
+                                , srcInfoPoints =
+                                    [ SrcSpan "tests/examples/DerivingVia.hs" 129 34 129 35
+                                    , SrcSpan "tests/examples/DerivingVia.hs" 129 38 129 39
+                                    ]
+                                }
+                              (TyApp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 129 35 129 38
+                                   , srcInfoPoints = []
+                                   }
+                                 (TyVar
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 129 35 129 36
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 129 35 129 36
+                                         , srcInfoPoints = []
+                                         }
+                                       "g"))
+                                 (TyVar
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 129 37 129 38
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 129 37 129 38
+                                         , srcInfoPoints = []
+                                         }
+                                       "m")))))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 129 40 129 41
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 129 40 129 41
+                                , srcInfoPoints = []
+                                }
+                              "a")))
+                 ])
+              (TyApp
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 63
+                   , srcInfoPoints = []
+                   }
+                 (TyApp
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 61
+                      , srcInfoPoints = []
+                      }
+                    (TyApp
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 59
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 57
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 55
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 55
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 55
+                                     , srcInfoPoints = []
+                                     }
+                                   "ComposeT")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 129 56 129 57
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 129 56 129 57
+                                  , srcInfoPoints = []
+                                  }
+                                "f")))
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 129 58 129 59
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 129 58 129 59
+                               , srcInfoPoints = []
+                               }
+                             "g")))
+                    (TyVar
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 129 60 129 61
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 129 60 129 61
+                            , srcInfoPoints = []
+                            }
+                          "m")))
+                 (TyVar
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 129 62 129 63
+                      , srcInfoPoints = []
+                      }
+                    (Ident
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 129 62 129 63
+                         , srcInfoPoints = []
+                         }
+                       "a")))
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 49
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 130 20 130 21
+                    , SrcSpan "tests/examples/DerivingVia.hs" 130 28 130 29
+                    , SrcSpan "tests/examples/DerivingVia.hs" 130 41 130 42
+                    , SrcSpan "tests/examples/DerivingVia.hs" 130 48 130 49
+                    ]
+                }
+              (Just
+                 (DerivNewtype
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 130 12 130 19
+                      , srcInfoPoints = []
+                      }))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28
+                             , srcInfoPoints = []
+                             }
+                           "Functor")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41
+                             , srcInfoPoints = []
+                             }
+                           "Applicative")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48
+                             , srcInfoPoints = []
+                             }
+                           "Monad")))
+              ]
+          ]
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 132 1 137 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 132 1 132 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 132 84 132 89
+                , SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 134 3 134 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 137 1 137 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 132 10 132 83
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 132 10 132 57
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 132 10 132 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 132 23 132 24
+                         , SrcSpan "tests/examples/DerivingVia.hs" 132 37 132 38
+                         , SrcSpan "tests/examples/DerivingVia.hs" 132 53 132 54
+                         , SrcSpan "tests/examples/DerivingVia.hs" 132 55 132 57
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 23
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 23
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 23
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 21
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 21
+                                     , srcInfoPoints = []
+                                     }
+                                   "MonadTrans")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 132 22 132 23
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 132 22 132 23
+                                  , srcInfoPoints = []
+                                  }
+                                "f")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 37
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 37
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 37
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 35
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 35
+                                     , srcInfoPoints = []
+                                     }
+                                   "MonadTrans")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 132 36 132 37
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 132 36 132 37
+                                  , srcInfoPoints = []
+                                  }
+                                "g")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 53
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 53
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 53
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 51
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 51
+                                     , srcInfoPoints = []
+                                     }
+                                   "LiftingMonad")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 132 52 132 53
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 132 52 132 53
+                                  , srcInfoPoints = []
+                                  }
+                                "g")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 83
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 68
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 68
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 68
+                           , srcInfoPoints = []
+                           }
+                         "MonadTrans")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 132 69 132 83
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 132 69 132 70
+                         , SrcSpan "tests/examples/DerivingVia.hs" 132 82 132 83
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 82
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 80
+                           , srcInfoPoints = []
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 78
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 78
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 78
+                                    , srcInfoPoints = []
+                                    }
+                                  "ComposeT")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 132 79 132 80
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 132 79 132 80
+                                 , srcInfoPoints = []
+                                 }
+                               "f")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 132 81 132 82
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 132 81 132 82
+                              , srcInfoPoints = []
+                              }
+                            "g"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 51
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 133 8 133 10 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 51
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 133 8 133 10 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 7
+                          , srcInfoPoints = []
+                          }
+                        "lift"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 133 11 133 51
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 133 11 133 17
+                             , SrcSpan "tests/examples/DerivingVia.hs" 133 19 133 20
+                             ]
+                         }
+                       (Just
+                          [ UnkindedVar
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 133 18 133 19
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 133 18 133 19
+                                   , srcInfoPoints = []
+                                   }
+                                 "m")
+                          ])
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 31
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 133 29 133 31 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 31
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 133 29 133 31 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 31
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 133 29 133 31 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 31
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 133 29 133 31
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 26
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 133 21 133 26
+                                              , srcInfoPoints = []
+                                              }
+                                            "Monad")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 133 27 133 28
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 133 27 133 28
+                                           , srcInfoPoints = []
+                                           }
+                                         "m"))))))
+                       (TyInfix
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 133 32 133 51
+                            , srcInfoPoints = []
+                            }
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 133 32 133 33
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 133 32 133 33
+                                  , srcInfoPoints = []
+                                  }
+                                "m"))
+                          (UnpromotedName
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 133 34 133 36
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 133 34 133 36
+                                  , srcInfoPoints = []
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 133 34 133 36
+                                     , srcInfoPoints = []
+                                     }
+                                   "~>")))
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 51
+                               , srcInfoPoints = []
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 49
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 47
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 45
+                                        , srcInfoPoints = []
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 45
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 133 37 133 45
+                                              , srcInfoPoints = []
+                                              }
+                                            "ComposeT")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 133 46 133 47
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 133 46 133 47
+                                           , srcInfoPoints = []
+                                           }
+                                         "f")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 133 48 133 49
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 133 48 133 49
+                                        , srcInfoPoints = []
+                                        }
+                                      "g")))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 133 50 133 51
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 133 50 133 51
+                                     , srcInfoPoints = []
+                                     }
+                                   "m"))))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 134 3 135 19
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 134 3 135 19
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 134 3 134 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 134 3 134 7
+                            , srcInfoPoints = []
+                            }
+                          "lift"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 134 8 135 19
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 134 8 134 9 ]
+                         }
+                       (InfixApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 134 10 135 19
+                            , srcInfoPoints = []
+                            }
+                          (InfixApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 32
+                               , srcInfoPoints = []
+                               }
+                             (Con
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 18
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 18
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 18
+                                        , srcInfoPoints = []
+                                        }
+                                      "ComposeT")))
+                             (QVarOp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 134 19 134 20
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 134 19 134 20
+                                     , srcInfoPoints = []
+                                     }
+                                   (Symbol
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 134 19 134 20
+                                        , srcInfoPoints = []
+                                        }
+                                      ".")))
+                             (InfixApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 32
+                                  , srcInfoPoints = []
+                                  }
+                                (Var
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 25
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 25
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 25
+                                           , srcInfoPoints = []
+                                           }
+                                         "lift")))
+                                (QVarOp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 134 26 134 27
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 134 26 134 27
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 134 26 134 27
+                                           , srcInfoPoints = []
+                                           }
+                                         ".")))
+                                (Var
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 134 28 134 32
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 134 28 134 32
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 134 28 134 32
+                                           , srcInfoPoints = []
+                                           }
+                                         "lift")))))
+                          (QVarOp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 135 5 135 7
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 135 5 135 7
+                                  , srcInfoPoints = []
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 135 5 135 7
+                                     , srcInfoPoints = []
+                                     }
+                                   "\\\\")))
+                          (App
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 19
+                               , srcInfoPoints = []
+                               }
+                             (App
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 16
+                                  , srcInfoPoints = []
+                                  }
+                                (Var
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 13
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 13
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 13
+                                           , srcInfoPoints = []
+                                           }
+                                         "proof")))
+                                (TypeApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 135 14 135 16
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 135 14 135 15 ]
+                                     }
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 135 15 135 16
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 135 15 135 16
+                                           , srcInfoPoints = []
+                                           }
+                                         "g"))))
+                             (TypeApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 135 17 135 19
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 135 17 135 18 ]
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 135 18 135 19
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 135 18 135 19
+                                        , srcInfoPoints = []
+                                        }
+                                      "m"))))))
+                    Nothing)
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 137 1 146 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 137 1 137 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 137 78 137 83
+                , SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 139 3 139 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 146 1 146 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 137 10 137 77
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 137 10 137 53
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 137 10 137 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 137 21 137 22
+                         , SrcSpan "tests/examples/DerivingVia.hs" 137 33 137 34
+                         , SrcSpan "tests/examples/DerivingVia.hs" 137 49 137 50
+                         , SrcSpan "tests/examples/DerivingVia.hs" 137 51 137 53
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 21
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 21
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 21
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 19
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 19
+                                     , srcInfoPoints = []
+                                     }
+                                   "MFunctor")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 137 20 137 21
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 137 20 137 21
+                                  , srcInfoPoints = []
+                                  }
+                                "f")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 33
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 33
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 33
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 31
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 31
+                                     , srcInfoPoints = []
+                                     }
+                                   "MFunctor")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 137 32 137 33
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 137 32 137 33
+                                  , srcInfoPoints = []
+                                  }
+                                "g")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 49
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 49
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 49
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 47
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 47
+                                     , srcInfoPoints = []
+                                     }
+                                   "LiftingMonad")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 137 48 137 49
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 137 48 137 49
+                                  , srcInfoPoints = []
+                                  }
+                                "g")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 77
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 62
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 62
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 62
+                           , srcInfoPoints = []
+                           }
+                         "MFunctor")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 137 63 137 77
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 137 63 137 64
+                         , SrcSpan "tests/examples/DerivingVia.hs" 137 76 137 77
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 76
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 74
+                           , srcInfoPoints = []
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 72
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 72
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 72
+                                    , srcInfoPoints = []
+                                    }
+                                  "ComposeT")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 137 73 137 74
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 137 73 137 74
+                                 , srcInfoPoints = []
+                                 }
+                               "f")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 137 75 137 76
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 137 75 137 76
+                              , srcInfoPoints = []
+                              }
+                            "g"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 84
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 138 9 138 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 84
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 138 9 138 11 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 8
+                          , srcInfoPoints = []
+                          }
+                        "hoist"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 138 12 138 84
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 138 12 138 18
+                             , SrcSpan "tests/examples/DerivingVia.hs" 138 23 138 24
+                             ]
+                         }
+                       (Just
+                          [ UnkindedVar
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 138 19 138 20
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 138 19 138 20
+                                   , srcInfoPoints = []
+                                   }
+                                 "m")
+                          , UnkindedVar
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 138 21 138 23
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 138 21 138 23
+                                   , srcInfoPoints = []
+                                   }
+                                 "m'")
+                          ])
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 35
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 138 33 138 35 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 35
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 138 33 138 35 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 35
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 138 33 138 35 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 35
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 138 33 138 35
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 30
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 138 25 138 30
+                                              , srcInfoPoints = []
+                                              }
+                                            "Monad")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 31 138 32
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 31 138 32
+                                           , srcInfoPoints = []
+                                           }
+                                         "m"))))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 138 36 138 84
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 138 46 138 48 ]
+                            }
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 138 36 138 45
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 138 36 138 37
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 138 44 138 45
+                                   ]
+                               }
+                             (TyInfix
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 138 37 138 44
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 138 37 138 38
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 37 138 38
+                                        , srcInfoPoints = []
+                                        }
+                                      "m"))
+                                (UnpromotedName
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 138 39 138 41
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 39 138 41
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 39 138 41
+                                           , srcInfoPoints = []
+                                           }
+                                         "~>")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 138 42 138 44
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 42 138 44
+                                        , srcInfoPoints = []
+                                        }
+                                      "m'"))))
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 138 49 138 84
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 138 49 138 50
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 138 83 138 84
+                                   ]
+                               }
+                             (TyInfix
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 83
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 64
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 62
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyApp
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 60
+                                           , srcInfoPoints = []
+                                           }
+                                         (TyCon
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 138 50 138 58
+                                              , srcInfoPoints = []
+                                              }
+                                            (UnQual
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 138 50 138 58
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (Ident
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          138
+                                                          50
+                                                          138
+                                                          58
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  "ComposeT")))
+                                         (TyVar
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 138 59 138 60
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 138 59 138 60
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "f")))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 61 138 62
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 138 61 138 62
+                                              , srcInfoPoints = []
+                                              }
+                                            "g")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 63 138 64
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 63 138 64
+                                           , srcInfoPoints = []
+                                           }
+                                         "m")))
+                                (UnpromotedName
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 138 65 138 67
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 65 138 67
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 65 138 67
+                                           , srcInfoPoints = []
+                                           }
+                                         "~>")))
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 138 68 138 83
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 68 138 80
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyApp
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 68 138 78
+                                           , srcInfoPoints = []
+                                           }
+                                         (TyCon
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 138 68 138 76
+                                              , srcInfoPoints = []
+                                              }
+                                            (UnQual
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 138 68 138 76
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (Ident
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          138
+                                                          68
+                                                          138
+                                                          76
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  "ComposeT")))
+                                         (TyVar
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 138 77 138 78
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 138 77 138 78
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "f")))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 79 138 80
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 138 79 138 80
+                                              , srcInfoPoints = []
+                                              }
+                                            "g")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 81 138 83
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 81 138 83
+                                           , srcInfoPoints = []
+                                           }
+                                         "m'"))))))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 139 3 140 19
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 139 3 140 19
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 139 3 140 19
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 139 3 139 8
+                             , srcInfoPoints = []
+                             }
+                           "hoist")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 139 9 139 10
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 139 9 139 10
+                                 , srcInfoPoints = []
+                                 }
+                               "f")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 139 11 140 19
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 139 11 139 12 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 139 13 140 19
+                                , srcInfoPoints = []
+                                }
+                              (InfixApp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 139 13 139 53
+                                   , srcInfoPoints = []
+                                   }
+                                 (Con
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 139 13 139 21
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 139 13 139 21
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 139 13 139 21
+                                            , srcInfoPoints = []
+                                            }
+                                          "ComposeT")))
+                                 (QVarOp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 139 22 139 23
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 139 22 139 23
+                                         , srcInfoPoints = []
+                                         }
+                                       (Symbol
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 139 22 139 23
+                                            , srcInfoPoints = []
+                                            }
+                                          ".")))
+                                 (InfixApp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 139 24 139 53
+                                      , srcInfoPoints = []
+                                      }
+                                    (App
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 139 24 139 39
+                                         , srcInfoPoints = []
+                                         }
+                                       (Var
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 139 24 139 29
+                                            , srcInfoPoints = []
+                                            }
+                                          (UnQual
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 139 24 139 29
+                                               , srcInfoPoints = []
+                                               }
+                                             (Ident
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        139
+                                                        24
+                                                        139
+                                                        29
+                                                  , srcInfoPoints = []
+                                                  }
+                                                "hoist")))
+                                       (Paren
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 139 30 139 39
+                                            , srcInfoPoints =
+                                                [ SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 139 30 139 31
+                                                , SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 139 38 139 39
+                                                ]
+                                            }
+                                          (App
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 139 31 139 38
+                                               , srcInfoPoints = []
+                                               }
+                                             (Var
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        139
+                                                        31
+                                                        139
+                                                        36
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (UnQual
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/DerivingVia.hs"
+                                                           139
+                                                           31
+                                                           139
+                                                           36
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   (Ident
+                                                      SrcSpanInfo
+                                                        { srcInfoSpan =
+                                                            SrcSpan
+                                                              "tests/examples/DerivingVia.hs"
+                                                              139
+                                                              31
+                                                              139
+                                                              36
+                                                        , srcInfoPoints = []
+                                                        }
+                                                      "hoist")))
+                                             (Var
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        139
+                                                        37
+                                                        139
+                                                        38
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (UnQual
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/DerivingVia.hs"
+                                                           139
+                                                           37
+                                                           139
+                                                           38
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   (Ident
+                                                      SrcSpanInfo
+                                                        { srcInfoSpan =
+                                                            SrcSpan
+                                                              "tests/examples/DerivingVia.hs"
+                                                              139
+                                                              37
+                                                              139
+                                                              38
+                                                        , srcInfoPoints = []
+                                                        }
+                                                      "f"))))))
+                                    (QVarOp
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 139 40 139 41
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 139 40 139 41
+                                            , srcInfoPoints = []
+                                            }
+                                          (Symbol
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 139 40 139 41
+                                               , srcInfoPoints = []
+                                               }
+                                             ".")))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 139 42 139 53
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 139 42 139 53
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 139 42 139 53
+                                               , srcInfoPoints = []
+                                               }
+                                             "getComposeT")))))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 140 5 140 7
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 140 5 140 7
+                                      , srcInfoPoints = []
+                                      }
+                                    (Symbol
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 140 5 140 7
+                                         , srcInfoPoints = []
+                                         }
+                                       "\\\\")))
+                              (App
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 19
+                                   , srcInfoPoints = []
+                                   }
+                                 (App
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 16
+                                      , srcInfoPoints = []
+                                      }
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 13
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 13
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 140 8 140 13
+                                               , srcInfoPoints = []
+                                               }
+                                             "proof")))
+                                    (TypeApp
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 140 14 140 16
+                                         , srcInfoPoints =
+                                             [ SrcSpan "tests/examples/DerivingVia.hs" 140 14 140 15
+                                             ]
+                                         }
+                                       (TyVar
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 140 15 140 16
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 140 15 140 16
+                                               , srcInfoPoints = []
+                                               }
+                                             "g"))))
+                                 (TypeApp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 140 17 140 19
+                                      , srcInfoPoints =
+                                          [ SrcSpan "tests/examples/DerivingVia.hs" 140 17 140 18 ]
+                                      }
+                                    (TyVar
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 140 18 140 19
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 140 18 140 19
+                                            , srcInfoPoints = []
+                                            }
+                                          "m"))))))
+                        Nothing
+                    ])
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 146 1 150 22
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 146 13 146 14 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 146 1 146 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 146 9 146 12
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 146 9 146 10
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 146 9 146 10
+                     , srcInfoPoints = []
+                     }
+                   "X"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 146 11 146 12
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 146 11 146 12
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 146 15 146 23
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 146 15 146 23
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 146 15 146 16
+                      , srcInfoPoints = []
+                      }
+                    "X")
+                 [ TyTuple
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 146 17 146 23
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 146 17 146 18
+                           , SrcSpan "tests/examples/DerivingVia.hs" 146 19 146 20
+                           , SrcSpan "tests/examples/DerivingVia.hs" 146 22 146 23
+                           ]
+                       }
+                     Boxed
+                     [ TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 146 18 146 19
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 146 18 146 19
+                              , srcInfoPoints = []
+                              }
+                            "a")
+                     , TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 146 21 146 22
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 146 21 146 22
+                              , srcInfoPoints = []
+                              }
+                            "a")
+                     ]
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 147 3 147 31
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 147 3 147 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 147 12 147 13
+                    , SrcSpan "tests/examples/DerivingVia.hs" 147 22 147 23
+                    , SrcSpan "tests/examples/DerivingVia.hs" 147 30 147 31
+                    ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 148 8 148 11
+                      , srcInfoPoints = []
+                      }
+                    (TyTuple
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 148 12 148 30
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 148 12 148 13
+                             , SrcSpan "tests/examples/DerivingVia.hs" 148 22 148 23
+                             , SrcSpan "tests/examples/DerivingVia.hs" 148 29 148 30
+                             ]
+                         }
+                       Boxed
+                       [ TyApp
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 22
+                             , srcInfoPoints = []
+                             }
+                           (TyCon
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 20
+                                , srcInfoPoints = []
+                                }
+                              (UnQual
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 20
+                                   , srcInfoPoints = []
+                                   }
+                                 (Ident
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 20
+                                      , srcInfoPoints = []
+                                      }
+                                    "Product")))
+                           (TyVar
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 148 21 148 22
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 148 21 148 22
+                                   , srcInfoPoints = []
+                                   }
+                                 "a"))
+                       , TyApp
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 29
+                             , srcInfoPoints = []
+                             }
+                           (TyCon
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 27
+                                , srcInfoPoints = []
+                                }
+                              (UnQual
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 27
+                                   , srcInfoPoints = []
+                                   }
+                                 (Ident
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 27
+                                      , srcInfoPoints = []
+                                      }
+                                    "Sum")))
+                           (TyVar
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 148 28 148 29
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 148 28 148 29
+                                   , srcInfoPoints = []
+                                   }
+                                 "a"))
+                       ])))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22
+                             , srcInfoPoints = []
+                             }
+                           "Semigroup")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30
+                             , srcInfoPoints = []
+                             }
+                           "Monoid")))
+              ]
+          , Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 150 3 150 22
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 150 3 150 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 150 12 150 13
+                    , SrcSpan "tests/examples/DerivingVia.hs" 150 17 150 18
+                    , SrcSpan "tests/examples/DerivingVia.hs" 150 21 150 22
+                    ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 151 8 151 11
+                      , srcInfoPoints = []
+                      }
+                    (TyTuple
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 151 12 151 18
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 151 12 151 13
+                             , SrcSpan "tests/examples/DerivingVia.hs" 151 14 151 15
+                             , SrcSpan "tests/examples/DerivingVia.hs" 151 17 151 18
+                             ]
+                         }
+                       Boxed
+                       [ TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 151 13 151 14
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 151 13 151 14
+                                , srcInfoPoints = []
+                                }
+                              "a")
+                       , TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 151 16 151 17
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 151 16 151 17
+                                , srcInfoPoints = []
+                                }
+                              "a")
+                       ])))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17
+                             , srcInfoPoints = []
+                             }
+                           "Show")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21
+                             , srcInfoPoints = []
+                             }
+                           "Eq")))
+              ]
+          ]
+      , ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 157 1 158 18
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 157 1 157 6
+                , SrcSpan "tests/examples/DerivingVia.hs" 157 11 157 16
+                , SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 160 1 160 0
+                ]
+            }
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 157 7 157 10
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 157 7 157 8
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 157 7 157 8
+                     , srcInfoPoints = []
+                     }
+                   "C"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 157 9 157 10
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 157 9 157 10
+                     , srcInfoPoints = []
+                     }
+                   "f")))
+          []
+          (Just
+             [ ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 18
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 158 5 158 7 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 18
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 158 5 158 7 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 4
+                          , srcInfoPoints = []
+                          }
+                        "c"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 18
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 158 12 158 14 ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 11
+                            , srcInfoPoints = []
+                            }
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 9
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 9
+                                  , srcInfoPoints = []
+                                  }
+                                "f"))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 158 10 158 11
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 158 10 158 11
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                       (TyCon
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 158 15 158 18
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 158 15 158 18
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 158 15 158 18
+                                  , srcInfoPoints = []
+                                  }
+                                "Int")))))
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 160 1 160 26
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 160 16 160 17 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 160 1 160 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 15
+               , srcInfoPoints = []
+               }
+             (DHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 13
+                  , srcInfoPoints = []
+                  }
+                (DHead
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 11
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 11
+                        , srcInfoPoints = []
+                        }
+                      "X2"))
+                (UnkindedVar
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 160 12 160 13
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 160 12 160 13
+                        , srcInfoPoints = []
+                        }
+                      "f")))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 160 14 160 15
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 160 14 160 15
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 160 18 160 26
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 160 18 160 26
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 160 18 160 20
+                      , srcInfoPoints = []
+                      }
+                    "X2")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 160 21 160 26
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 160 21 160 22
+                           , SrcSpan "tests/examples/DerivingVia.hs" 160 25 160 26
+                           ]
+                       }
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 160 22 160 25
+                          , srcInfoPoints = []
+                          }
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 160 22 160 23
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 160 22 160 23
+                                , srcInfoPoints = []
+                                }
+                              "f"))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 160 24 160 25
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 160 24 160 25
+                                , srcInfoPoints = []
+                                }
+                              "a")))
+                 ])
+          ]
+          []
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 162 1 165 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 162 1 162 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 162 19 162 24
+                , SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 165 1 165 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 18
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 18
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 11
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 11
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 11
+                           , srcInfoPoints = []
+                           }
+                         "C")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 162 12 162 18
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 162 12 162 13
+                         , SrcSpan "tests/examples/DerivingVia.hs" 162 17 162 18
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 17
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 15
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 15
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 15
+                                 , srcInfoPoints = []
+                                 }
+                               "X2")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 162 16 162 17
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 162 16 162 17
+                              , srcInfoPoints = []
+                              }
+                            "f"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 14
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 14
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 4
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 4
+                            , srcInfoPoints = []
+                            }
+                          "c"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 163 5 163 14
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 163 5 163 6 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 14
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 12
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 12
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 12
+                                     , srcInfoPoints = []
+                                     }
+                                   "const")))
+                          (Lit
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 163 13 163 14
+                               , srcInfoPoints = []
+                               }
+                             (Int
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 163 13 163 14
+                                  , srcInfoPoints = []
+                                  }
+                                0
+                                "0"))))
+                    Nothing)
+             ])
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 165 1 165 35
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 165 1 165 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 165 22 165 30
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 165 10 165 13
+                  , srcInfoPoints = []
+                  }
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 165 14 165 21
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 165 14 165 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 165 20 165 21
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 20
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 17
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 17
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 17
+                                 , srcInfoPoints = []
+                                 }
+                               "X2")))
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 165 18 165 20
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 165 18 165 20
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 165 18 165 20
+                                 , srcInfoPoints = []
+                                 }
+                               "IO")))))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 35
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 35
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 32
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 32
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 32
+                           , srcInfoPoints = []
+                           }
+                         "C")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 165 33 165 35
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 165 33 165 35
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 165 33 165 35
+                           , srcInfoPoints = []
+                           }
+                         "IO")))))
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 171 1 171 46
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 171 14 171 15 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 171 1 171 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 171 9 171 13
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 171 9 171 11
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 171 9 171 11
+                     , srcInfoPoints = []
+                     }
+                   "P0"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 171 12 171 13
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 171 12 171 13
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 171 16 171 20
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 171 16 171 20
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 171 16 171 18
+                      , srcInfoPoints = []
+                      }
+                    "P0")
+                 [ TyVar
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 171 19 171 20
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 171 19 171 20
+                          , srcInfoPoints = []
+                          }
+                        "a")
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 171 33 171 46
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 171 33 171 41 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 171 47 171 50
+                      , srcInfoPoints = []
+                      }
+                    (TyVar
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 171 51 171 52
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 171 51 171 52
+                            , srcInfoPoints = []
+                            }
+                          "a"))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46
+                             , srcInfoPoints = []
+                             }
+                           "Show")))
+              ]
+          ]
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 172 1 172 46
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 172 14 172 15 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 172 1 172 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 172 9 172 13
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 172 9 172 11
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 172 9 172 11
+                     , srcInfoPoints = []
+                     }
+                   "P1"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 172 12 172 13
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 172 12 172 13
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 172 16 172 22
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 172 16 172 22
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 172 16 172 18
+                      , srcInfoPoints = []
+                      }
+                    "P1")
+                 [ TyList
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 172 19 172 22
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 172 19 172 20
+                           , SrcSpan "tests/examples/DerivingVia.hs" 172 21 172 22
+                           ]
+                       }
+                     (TyVar
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 172 20 172 21
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 172 20 172 21
+                             , srcInfoPoints = []
+                             }
+                           "a"))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 172 33 172 46
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 172 33 172 41 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 172 47 172 50
+                      , srcInfoPoints = []
+                      }
+                    (TyList
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 172 51 172 54
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 172 51 172 52
+                             , SrcSpan "tests/examples/DerivingVia.hs" 172 53 172 54
+                             ]
+                         }
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 172 52 172 53
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 172 52 172 53
+                               , srcInfoPoints = []
+                               }
+                             "a")))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46
+                             , srcInfoPoints = []
+                             }
+                           "Show")))
+              ]
+          ]
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 173 1 173 46
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 173 14 173 15 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 173 1 173 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 173 9 173 13
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 173 9 173 11
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 173 9 173 11
+                     , srcInfoPoints = []
+                     }
+                   "P2"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 173 12 173 13
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 173 12 173 13
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 173 16 173 25
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 173 16 173 25
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 173 16 173 18
+                      , srcInfoPoints = []
+                      }
+                    "P2")
+                 [ TyTuple
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 173 19 173 25
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 173 19 173 20
+                           , SrcSpan "tests/examples/DerivingVia.hs" 173 21 173 22
+                           , SrcSpan "tests/examples/DerivingVia.hs" 173 24 173 25
+                           ]
+                       }
+                     Boxed
+                     [ TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 173 20 173 21
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 173 20 173 21
+                              , srcInfoPoints = []
+                              }
+                            "a")
+                     , TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 173 23 173 24
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 173 23 173 24
+                              , srcInfoPoints = []
+                              }
+                            "a")
+                     ]
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 173 33 173 46
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 173 33 173 41 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 173 47 173 50
+                      , srcInfoPoints = []
+                      }
+                    (TyTuple
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 173 51 173 57
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 173 51 173 52
+                             , SrcSpan "tests/examples/DerivingVia.hs" 173 53 173 54
+                             , SrcSpan "tests/examples/DerivingVia.hs" 173 56 173 57
+                             ]
+                         }
+                       Boxed
+                       [ TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 173 52 173 53
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 173 52 173 53
+                                , srcInfoPoints = []
+                                }
+                              "a")
+                       , TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 173 55 173 56
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 173 55 173 56
+                                , srcInfoPoints = []
+                                }
+                              "a")
+                       ])))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46
+                             , srcInfoPoints = []
+                             }
+                           "Show")))
+              ]
+          ]
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 174 1 174 46
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 174 14 174 15 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 174 1 174 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 174 9 174 13
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 174 9 174 11
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 174 9 174 11
+                     , srcInfoPoints = []
+                     }
+                   "P3"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 174 12 174 13
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 174 12 174 13
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 174 16 174 28
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 174 16 174 28
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 174 16 174 18
+                      , srcInfoPoints = []
+                      }
+                    "P3")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 174 19 174 28
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 174 19 174 20
+                           , SrcSpan "tests/examples/DerivingVia.hs" 174 27 174 28
+                           ]
+                       }
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 27
+                          , srcInfoPoints = []
+                          }
+                        (TyCon
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 25
+                             , srcInfoPoints = []
+                             }
+                           (UnQual
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 25
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 25
+                                   , srcInfoPoints = []
+                                   }
+                                 "Maybe")))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 174 26 174 27
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 174 26 174 27
+                                , srcInfoPoints = []
+                                }
+                              "a")))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 174 33 174 46
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 174 33 174 41 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 174 47 174 50
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 174 51 174 60
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 174 51 174 52
+                             , SrcSpan "tests/examples/DerivingVia.hs" 174 59 174 60
+                             ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 59
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 57
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 57
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 57
+                                     , srcInfoPoints = []
+                                     }
+                                   "First")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 174 58 174 59
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 174 58 174 59
+                                  , srcInfoPoints = []
+                                  }
+                                "a"))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46
+                             , srcInfoPoints = []
+                             }
+                           "Show")))
+              ]
+          ]
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 175 1 175 46
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 175 14 175 15 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 175 1 175 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 175 9 175 13
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 175 9 175 11
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 175 9 175 11
+                     , srcInfoPoints = []
+                     }
+                   "P4"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 175 12 175 13
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 175 12 175 13
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 175 16 175 28
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 175 16 175 28
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 175 16 175 18
+                      , srcInfoPoints = []
+                      }
+                    "P4")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 175 19 175 28
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 175 19 175 20
+                           , SrcSpan "tests/examples/DerivingVia.hs" 175 27 175 28
+                           ]
+                       }
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 27
+                          , srcInfoPoints = []
+                          }
+                        (TyCon
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 25
+                             , srcInfoPoints = []
+                             }
+                           (UnQual
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 25
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 25
+                                   , srcInfoPoints = []
+                                   }
+                                 "Maybe")))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 175 26 175 27
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 175 26 175 27
+                                , srcInfoPoints = []
+                                }
+                              "a")))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 175 33 175 46
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 175 33 175 41 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 175 47 175 50
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 175 51 175 62
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 175 51 175 52
+                             , SrcSpan "tests/examples/DerivingVia.hs" 175 61 175 62
+                             ]
+                         }
+                       (TyInfix
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 61
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 57
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 57
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 57
+                                     , srcInfoPoints = []
+                                     }
+                                   "First")))
+                          (UnpromotedName
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 175 58 175 59
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 175 58 175 59
+                                  , srcInfoPoints = []
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 175 58 175 59
+                                     , srcInfoPoints = []
+                                     }
+                                   "$")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 175 60 175 61
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 175 60 175 61
+                                  , srcInfoPoints = []
+                                  }
+                                "a"))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46
+                             , srcInfoPoints = []
+                             }
+                           "Show")))
+              ]
+          ]
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 176 1 176 46
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 176 14 176 15 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 176 1 176 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 176 9 176 13
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 176 9 176 11
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 176 9 176 11
+                     , srcInfoPoints = []
+                     }
+                   "P5"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 176 12 176 13
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 176 12 176 13
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 176 16 176 20
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 176 16 176 20
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 176 16 176 18
+                      , srcInfoPoints = []
+                      }
+                    "P5")
+                 [ TyVar
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 176 19 176 20
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 176 19 176 20
+                          , srcInfoPoints = []
+                          }
+                        "a")
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 176 33 176 46
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 176 33 176 41 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 176 47 176 50
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 176 51 176 65
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 176 51 176 52
+                             , SrcSpan "tests/examples/DerivingVia.hs" 176 64 176 65
+                             ]
+                         }
+                       (TyInfix
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 64
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 60
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 60
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 60
+                                     , srcInfoPoints = []
+                                     }
+                                   "Identity")))
+                          (UnpromotedName
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 176 61 176 62
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 176 61 176 62
+                                  , srcInfoPoints = []
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 176 61 176 62
+                                     , srcInfoPoints = []
+                                     }
+                                   "$")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 176 63 176 64
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 176 63 176 64
+                                  , srcInfoPoints = []
+                                  }
+                                "a"))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46
+                             , srcInfoPoints = []
+                             }
+                           "Show")))
+              ]
+          ]
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 177 1 177 46
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 177 14 177 15 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 177 1 177 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 177 9 177 13
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 177 9 177 11
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 177 9 177 11
+                     , srcInfoPoints = []
+                     }
+                   "P6"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 177 12 177 13
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 177 12 177 13
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 177 16 177 22
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 177 16 177 22
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 177 16 177 18
+                      , srcInfoPoints = []
+                      }
+                    "P6")
+                 [ TyList
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 177 19 177 22
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 177 19 177 20
+                           , SrcSpan "tests/examples/DerivingVia.hs" 177 21 177 22
+                           ]
+                       }
+                     (TyVar
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 177 20 177 21
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 177 20 177 21
+                             , srcInfoPoints = []
+                             }
+                           "a"))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 177 33 177 46
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 177 33 177 41 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 177 47 177 50
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 177 51 177 59
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 177 51 177 52
+                             , SrcSpan "tests/examples/DerivingVia.hs" 177 58 177 59
+                             ]
+                         }
+                       (TyInfix
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 58
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 54
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 53
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 177 53 177 54
+                                   ]
+                               }
+                             (Special
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 54
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 53
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 177 53 177 54
+                                      ]
+                                  }
+                                (ListCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 54
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 53
+                                         , SrcSpan "tests/examples/DerivingVia.hs" 177 53 177 54
+                                         ]
+                                     })))
+                          (UnpromotedName
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 177 55 177 56
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 177 55 177 56
+                                  , srcInfoPoints = []
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 177 55 177 56
+                                     , srcInfoPoints = []
+                                     }
+                                   "$")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 177 57 177 58
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 177 57 177 58
+                                  , srcInfoPoints = []
+                                  }
+                                "a"))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46
+                             , srcInfoPoints = []
+                             }
+                           "Show")))
+              ]
+          ]
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 178 1 178 46
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 178 14 178 15 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 178 1 178 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 178 9 178 13
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 178 9 178 11
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 178 9 178 11
+                     , srcInfoPoints = []
+                     }
+                   "P7"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 178 12 178 13
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 178 12 178 13
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 178 16 178 25
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 178 16 178 25
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 178 16 178 18
+                      , srcInfoPoints = []
+                      }
+                    "P7")
+                 [ TyTuple
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 178 19 178 25
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 178 19 178 20
+                           , SrcSpan "tests/examples/DerivingVia.hs" 178 21 178 22
+                           , SrcSpan "tests/examples/DerivingVia.hs" 178 24 178 25
+                           ]
+                       }
+                     Boxed
+                     [ TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 178 20 178 21
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 178 20 178 21
+                              , srcInfoPoints = []
+                              }
+                            "a")
+                     , TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 178 23 178 24
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 178 23 178 24
+                              , srcInfoPoints = []
+                              }
+                            "a")
+                     ]
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 178 33 178 46
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 178 33 178 41 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 178 47 178 50
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 178 51 178 70
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 178 51 178 52
+                             , SrcSpan "tests/examples/DerivingVia.hs" 178 69 178 70
+                             ]
+                         }
+                       (TyInfix
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 69
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 60
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 60
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 60
+                                     , srcInfoPoints = []
+                                     }
+                                   "Identity")))
+                          (UnpromotedName
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 178 61 178 62
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 178 61 178 62
+                                  , srcInfoPoints = []
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 178 61 178 62
+                                     , srcInfoPoints = []
+                                     }
+                                   "$")))
+                          (TyTuple
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 178 63 178 69
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 178 63 178 64
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 178 65 178 66
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 178 68 178 69
+                                   ]
+                               }
+                             Boxed
+                             [ TyVar
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 178 64 178 65
+                                   , srcInfoPoints = []
+                                   }
+                                 (Ident
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 178 64 178 65
+                                      , srcInfoPoints = []
+                                      }
+                                    "a")
+                             , TyVar
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 178 67 178 68
+                                   , srcInfoPoints = []
+                                   }
+                                 (Ident
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 178 67 178 68
+                                      , srcInfoPoints = []
+                                      }
+                                    "a")
+                             ])))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46
+                             , srcInfoPoints = []
+                             }
+                           "Show")))
+              ]
+          ]
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 179 1 179 49
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 179 14 179 15 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 179 1 179 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 179 9 179 13
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 179 9 179 11
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 179 9 179 11
+                     , srcInfoPoints = []
+                     }
+                   "P8"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 179 12 179 13
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 179 12 179 13
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 179 16 179 32
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 179 16 179 32
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 179 16 179 18
+                      , srcInfoPoints = []
+                      }
+                    "P8")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 179 19 179 32
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 179 19 179 20
+                           , SrcSpan "tests/examples/DerivingVia.hs" 179 31 179 32
+                           ]
+                       }
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 31
+                          , srcInfoPoints = []
+                          }
+                        (TyApp
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 29
+                             , srcInfoPoints = []
+                             }
+                           (TyCon
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 26
+                                , srcInfoPoints = []
+                                }
+                              (UnQual
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 26
+                                   , srcInfoPoints = []
+                                   }
+                                 (Ident
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 26
+                                      , srcInfoPoints = []
+                                      }
+                                    "Either")))
+                           (TyCon
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 29
+                                , srcInfoPoints =
+                                    [ SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 28
+                                    , SrcSpan "tests/examples/DerivingVia.hs" 179 28 179 29
+                                    ]
+                                }
+                              (Special
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 29
+                                   , srcInfoPoints =
+                                       [ SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 28
+                                       , SrcSpan "tests/examples/DerivingVia.hs" 179 28 179 29
+                                       ]
+                                   }
+                                 (UnitCon
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 29
+                                      , srcInfoPoints =
+                                          [ SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 28
+                                          , SrcSpan "tests/examples/DerivingVia.hs" 179 28 179 29
+                                          ]
+                                      }))))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 179 30 179 31
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 179 30 179 31
+                                , srcInfoPoints = []
+                                }
+                              "a")))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 179 33 179 49
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 179 33 179 41 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 179 50 179 53
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 179 54 179 71
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 179 54 179 55
+                             , SrcSpan "tests/examples/DerivingVia.hs" 179 70 179 71
+                             ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 70
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 58
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 56
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 179 56 179 57
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 179 57 179 58
+                                   ]
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 58
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 56
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 179 56 179 57
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 179 57 179 58
+                                      ]
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 179 56 179 57
+                                     , srcInfoPoints = []
+                                     }
+                                   "$")))
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 179 59 179 70
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 179 59 179 60
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 179 69 179 70
+                                   ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 69
+                                  , srcInfoPoints = []
+                                  }
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 66
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 66
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 66
+                                           , srcInfoPoints = []
+                                           }
+                                         "Either")))
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 69
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 68
+                                         , SrcSpan "tests/examples/DerivingVia.hs" 179 68 179 69
+                                         ]
+                                     }
+                                   (Special
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 69
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 68
+                                            , SrcSpan "tests/examples/DerivingVia.hs" 179 68 179 69
+                                            ]
+                                        }
+                                      (UnitCon
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 69
+                                           , srcInfoPoints =
+                                               [ SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 179 67 179 68
+                                               , SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 179 68 179 69
+                                               ]
+                                           })))))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49
+                             , srcInfoPoints = []
+                             }
+                           "Functor")))
+              ]
+          ]
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 181 1 181 73
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 181 15 181 16 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 181 1 181 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 14
+               , srcInfoPoints = []
+               }
+             (DHInfix
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 14
+                  , srcInfoPoints = []
+                  }
+                (UnkindedVar
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 10
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 10
+                        , srcInfoPoints = []
+                        }
+                      "f"))
+                (Symbol
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 181 11 181 12
+                     , srcInfoPoints = []
+                     }
+                   "$"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 181 13 181 14
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 181 13 181 14
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 181 17 181 26
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 181 17 181 26
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 181 17 181 20
+                      , srcInfoPoints = []
+                      }
+                    "APP")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 181 21 181 26
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 181 21 181 22
+                           , SrcSpan "tests/examples/DerivingVia.hs" 181 25 181 26
+                           ]
+                       }
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 181 22 181 25
+                          , srcInfoPoints = []
+                          }
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 181 22 181 23
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 181 22 181 23
+                                , srcInfoPoints = []
+                                }
+                              "f"))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 181 24 181 25
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 181 24 181 25
+                                , srcInfoPoints = []
+                                }
+                              "a")))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 181 27 181 48
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 181 27 181 35 ]
+                }
+              (Just
+                 (DerivNewtype
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 181 36 181 43
+                      , srcInfoPoints = []
+                      }))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48
+                             , srcInfoPoints = []
+                             }
+                           "Show")))
+              ]
+          , Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 181 49 181 73
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 181 49 181 57 ]
+                }
+              (Just
+                 (DerivNewtype
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 181 58 181 65
+                      , srcInfoPoints = []
+                      }))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73
+                             , srcInfoPoints = []
+                             }
+                           "Functor")))
+              ]
+          ]
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 190 1 191 34
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 190 29 190 30 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 190 1 190 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 28
+               , srcInfoPoints = []
+               }
+             (DHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 26
+                  , srcInfoPoints = []
+                  }
+                (DHead
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 24
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 24
+                        , srcInfoPoints = []
+                        }
+                      "WrapApplicative"))
+                (UnkindedVar
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 190 25 190 26
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 190 25 190 26
+                        , srcInfoPoints = []
+                        }
+                      "f")))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 190 27 190 28
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 190 27 190 28
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 190 31 190 55
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 190 31 190 55
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 190 31 190 49
+                      , srcInfoPoints = []
+                      }
+                    "WrappedApplicative")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 190 50 190 55
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 190 50 190 51
+                           , SrcSpan "tests/examples/DerivingVia.hs" 190 54 190 55
+                           ]
+                       }
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 190 51 190 54
+                          , srcInfoPoints = []
+                          }
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 190 51 190 52
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 190 51 190 52
+                                , srcInfoPoints = []
+                                }
+                              "f"))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 190 53 190 54
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 190 53 190 54
+                                , srcInfoPoints = []
+                                }
+                              "a")))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 191 3 191 34
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 191 3 191 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 191 12 191 13
+                    , SrcSpan "tests/examples/DerivingVia.hs" 191 20 191 21
+                    , SrcSpan "tests/examples/DerivingVia.hs" 191 33 191 34
+                    ]
+                }
+              Nothing
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20
+                             , srcInfoPoints = []
+                             }
+                           "Functor")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33
+                             , srcInfoPoints = []
+                             }
+                           "Applicative")))
+              ]
+          ]
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 193 1 201 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 193 1 193 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 193 62 193 67
+                , SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 201 1 201 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 193 10 193 61
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 193 10 193 35
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 193 10 193 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 193 24 193 25
+                         , SrcSpan "tests/examples/DerivingVia.hs" 193 31 193 32
+                         , SrcSpan "tests/examples/DerivingVia.hs" 193 33 193 35
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 24
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 24
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 24
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "Applicative")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 193 23 193 24
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 193 23 193 24
+                                  , srcInfoPoints = []
+                                  }
+                                "f")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 31
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 31
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 31
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 29
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 29
+                                     , srcInfoPoints = []
+                                     }
+                                   "Num")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 193 30 193 31
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 193 30 193 31
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 61
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 39
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 39
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 39
+                           , srcInfoPoints = []
+                           }
+                         "Num")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 193 40 193 61
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 193 40 193 41
+                         , SrcSpan "tests/examples/DerivingVia.hs" 193 60 193 61
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 60
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 58
+                           , srcInfoPoints = []
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 56
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 56
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 56
+                                    , srcInfoPoints = []
+                                    }
+                                  "WrapApplicative")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 193 57 193 58
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 193 57 193 58
+                                 , srcInfoPoints = []
+                                 }
+                               "f")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 193 59 193 60
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 193 59 193 60
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 27
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 27
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 6
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 4
+                             , SrcSpan "tests/examples/DerivingVia.hs" 194 4 194 5
+                             , SrcSpan "tests/examples/DerivingVia.hs" 194 5 194 6
+                             ]
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 194 4 194 5
+                            , srcInfoPoints = []
+                            }
+                          "+"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 194 15 194 27
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 194 15 194 16 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 27
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 23
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 23
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 23
+                                     , srcInfoPoints = []
+                                     }
+                                   "liftA2")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 27
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 25
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 194 25 194 26
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 194 26 194 27
+                                   ]
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 27
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 25
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 194 25 194 26
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 194 26 194 27
+                                      ]
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 194 25 194 26
+                                     , srcInfoPoints = []
+                                     }
+                                   "+")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 27
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 27
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 6
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 4
+                             , SrcSpan "tests/examples/DerivingVia.hs" 195 4 195 5
+                             , SrcSpan "tests/examples/DerivingVia.hs" 195 5 195 6
+                             ]
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 195 4 195 5
+                            , srcInfoPoints = []
+                            }
+                          "*"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 195 15 195 27
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 195 15 195 16 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 27
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 23
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 23
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 23
+                                     , srcInfoPoints = []
+                                     }
+                                   "liftA2")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 27
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 25
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 195 25 195 26
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 195 26 195 27
+                                   ]
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 27
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 25
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 195 25 195 26
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 195 26 195 27
+                                      ]
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 195 25 195 26
+                                     , srcInfoPoints = []
+                                     }
+                                   "*")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 28
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 28
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 9
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 9
+                            , srcInfoPoints = []
+                            }
+                          "negate"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 196 15 196 28
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 196 15 196 16 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 28
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 21
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 21
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 21
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 196 22 196 28
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 196 22 196 28
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 196 22 196 28
+                                     , srcInfoPoints = []
+                                     }
+                                   "negate")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 35
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 35
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 14
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 14
+                            , srcInfoPoints = []
+                            }
+                          "fromInteger"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 197 15 197 35
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 197 15 197 16 ]
+                         }
+                       (InfixApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 35
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 21
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 21
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 21
+                                     , srcInfoPoints = []
+                                     }
+                                   "pure")))
+                          (QVarOp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 197 22 197 23
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 197 22 197 23
+                                  , srcInfoPoints = []
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 197 22 197 23
+                                     , srcInfoPoints = []
+                                     }
+                                   ".")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 197 24 197 35
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 197 24 197 35
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 197 24 197 35
+                                     , srcInfoPoints = []
+                                     }
+                                   "fromInteger")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 25
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 25
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 6
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 6
+                            , srcInfoPoints = []
+                            }
+                          "abs"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 198 15 198 25
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 198 15 198 16 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 25
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 21
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 21
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 21
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 198 22 198 25
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 198 22 198 25
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 198 22 198 25
+                                     , srcInfoPoints = []
+                                     }
+                                   "abs")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 28
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 28
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 9
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 9
+                            , srcInfoPoints = []
+                            }
+                          "signum"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 199 15 199 28
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 199 15 199 16 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 28
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 21
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 21
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 21
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 199 22 199 28
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 199 22 199 28
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 199 22 199 28
+                                     , srcInfoPoints = []
+                                     }
+                                   "signum")))))
+                    Nothing)
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 201 1 205 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 201 1 201 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 201 76 201 81
+                , SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 205 1 205 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 201 10 201 75
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 201 10 201 42
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 201 10 201 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 201 24 201 25
+                         , SrcSpan "tests/examples/DerivingVia.hs" 201 38 201 39
+                         , SrcSpan "tests/examples/DerivingVia.hs" 201 40 201 42
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 24
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 24
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 24
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "Applicative")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 201 23 201 24
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 201 23 201 24
+                                  , srcInfoPoints = []
+                                  }
+                                "f")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 38
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 38
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 38
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 36
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 36
+                                     , srcInfoPoints = []
+                                     }
+                                   "Fractional")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 201 37 201 38
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 201 37 201 38
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 75
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 53
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 53
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 53
+                           , srcInfoPoints = []
+                           }
+                         "Fractional")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 201 54 201 75
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 201 54 201 55
+                         , SrcSpan "tests/examples/DerivingVia.hs" 201 74 201 75
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 74
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 72
+                           , srcInfoPoints = []
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 70
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 70
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 70
+                                    , srcInfoPoints = []
+                                    }
+                                  "WrapApplicative")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 201 71 201 72
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 201 71 201 72
+                                 , srcInfoPoints = []
+                                 }
+                               "f")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 201 73 201 74
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 201 73 201 74
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 28
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 28
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 8
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 8
+                            , srcInfoPoints = []
+                            }
+                          "recip"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 202 16 202 28
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 202 16 202 17 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 28
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 22
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 202 23 202 28
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 202 23 202 28
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 202 23 202 28
+                                     , srcInfoPoints = []
+                                     }
+                                   "recip")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 37
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 37
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 15
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 15
+                            , srcInfoPoints = []
+                            }
+                          "fromRational"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 203 16 203 37
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 203 16 203 17 ]
+                         }
+                       (InfixApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 37
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 22
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "pure")))
+                          (QVarOp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 203 23 203 24
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 203 23 203 24
+                                  , srcInfoPoints = []
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 203 23 203 24
+                                     , srcInfoPoints = []
+                                     }
+                                   ".")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 203 25 203 37
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 203 25 203 37
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 203 25 203 37
+                                     , srcInfoPoints = []
+                                     }
+                                   "fromRational")))))
+                    Nothing)
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 205 1 221 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 205 1 205 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 205 72 205 77
+                , SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 221 1 221 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 205 10 205 71
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 205 10 205 40
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 205 10 205 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 205 24 205 25
+                         , SrcSpan "tests/examples/DerivingVia.hs" 205 36 205 37
+                         , SrcSpan "tests/examples/DerivingVia.hs" 205 38 205 40
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 24
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 24
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 24
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "Applicative")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 205 23 205 24
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 205 23 205 24
+                                  , srcInfoPoints = []
+                                  }
+                                "f")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 36
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 36
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 36
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 34
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 34
+                                     , srcInfoPoints = []
+                                     }
+                                   "Floating")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 205 35 205 36
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 205 35 205 36
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 71
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 49
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 49
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 49
+                           , srcInfoPoints = []
+                           }
+                         "Floating")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 205 50 205 71
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 205 50 205 51
+                         , SrcSpan "tests/examples/DerivingVia.hs" 205 70 205 71
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 70
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 68
+                           , srcInfoPoints = []
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 66
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 66
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 66
+                                    , srcInfoPoints = []
+                                    }
+                                  "WrapApplicative")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 205 67 205 68
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 205 67 205 68
+                                 , srcInfoPoints = []
+                                 }
+                               "f")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 205 69 205 70
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 205 69 205 70
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 18
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 18
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 5
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 5
+                            , srcInfoPoints = []
+                            }
+                          "pi"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 206 9 206 18
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 206 9 206 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 18
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "pure")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 206 16 206 18
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 206 16 206 18
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 206 16 206 18
+                                     , srcInfoPoints = []
+                                     }
+                                   "pi")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 20
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 20
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 7
+                            , srcInfoPoints = []
+                            }
+                          "sqrt"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 207 9 207 20
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 207 9 207 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 20
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 207 16 207 20
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 207 16 207 20
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 207 16 207 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "sqrt")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 19
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 19
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 6
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 6
+                            , srcInfoPoints = []
+                            }
+                          "exp"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 208 9 208 19
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 208 9 208 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 19
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 208 16 208 19
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 208 16 208 19
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 208 16 208 19
+                                     , srcInfoPoints = []
+                                     }
+                                   "exp")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 19
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 19
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 6
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 6
+                            , srcInfoPoints = []
+                            }
+                          "log"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 209 9 209 19
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 209 9 209 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 19
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 209 16 209 19
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 209 16 209 19
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 209 16 209 19
+                                     , srcInfoPoints = []
+                                     }
+                                   "log")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 19
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 19
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 6
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 6
+                            , srcInfoPoints = []
+                            }
+                          "sin"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 210 9 210 19
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 210 9 210 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 19
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 210 16 210 19
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 210 16 210 19
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 210 16 210 19
+                                     , srcInfoPoints = []
+                                     }
+                                   "sin")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 19
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 19
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 6
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 6
+                            , srcInfoPoints = []
+                            }
+                          "cos"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 211 9 211 19
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 211 9 211 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 19
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 211 16 211 19
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 211 16 211 19
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 211 16 211 19
+                                     , srcInfoPoints = []
+                                     }
+                                   "cos")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 20
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 20
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 7
+                            , srcInfoPoints = []
+                            }
+                          "asin"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 212 9 212 20
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 212 9 212 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 20
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 212 16 212 20
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 212 16 212 20
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 212 16 212 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "asin")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 20
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 20
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 7
+                            , srcInfoPoints = []
+                            }
+                          "atan"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 213 9 213 20
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 213 9 213 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 20
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 213 16 213 20
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 213 16 213 20
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 213 16 213 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "atan")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 20
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 20
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 7
+                            , srcInfoPoints = []
+                            }
+                          "acos"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 214 9 214 20
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 214 9 214 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 20
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 214 16 214 20
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 214 16 214 20
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 214 16 214 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "acos")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 20
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 20
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 7
+                            , srcInfoPoints = []
+                            }
+                          "sinh"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 215 9 215 20
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 215 9 215 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 20
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 215 16 215 20
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 215 16 215 20
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 215 16 215 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "sinh")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 20
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 20
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 7
+                            , srcInfoPoints = []
+                            }
+                          "cosh"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 216 9 216 20
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 216 9 216 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 20
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 216 16 216 20
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 216 16 216 20
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 216 16 216 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "cosh")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 21
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 21
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 8
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 8
+                            , srcInfoPoints = []
+                            }
+                          "asinh"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 217 9 217 21
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 217 9 217 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 21
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 217 16 217 21
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 217 16 217 21
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 217 16 217 21
+                                     , srcInfoPoints = []
+                                     }
+                                   "asinh")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 21
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 21
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 8
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 8
+                            , srcInfoPoints = []
+                            }
+                          "atanh"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 218 9 218 21
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 218 9 218 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 21
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 218 16 218 21
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 218 16 218 21
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 218 16 218 21
+                                     , srcInfoPoints = []
+                                     }
+                                   "atanh")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 21
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 21
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 8
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 8
+                            , srcInfoPoints = []
+                            }
+                          "acosh"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 219 9 219 21
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 219 9 219 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 21
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 219 16 219 21
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 219 16 219 21
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 219 16 219 21
+                                     , srcInfoPoints = []
+                                     }
+                                   "acosh")))))
+                    Nothing)
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 221 1 224 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 221 1 221 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 221 74 221 79
+                , SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 224 1 224 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 221 10 221 73
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 221 10 221 41
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 221 10 221 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 221 24 221 25
+                         , SrcSpan "tests/examples/DerivingVia.hs" 221 37 221 38
+                         , SrcSpan "tests/examples/DerivingVia.hs" 221 39 221 41
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 24
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 24
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 24
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "Applicative")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 221 23 221 24
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 221 23 221 24
+                                  , srcInfoPoints = []
+                                  }
+                                "f")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 37
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 37
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 37
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 35
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 35
+                                     , srcInfoPoints = []
+                                     }
+                                   "Semigroup")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 221 36 221 37
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 221 36 221 37
+                                  , srcInfoPoints = []
+                                  }
+                                "s")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 73
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 51
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 51
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 51
+                           , srcInfoPoints = []
+                           }
+                         "Semigroup")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 221 52 221 73
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 221 52 221 53
+                         , SrcSpan "tests/examples/DerivingVia.hs" 221 72 221 73
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 72
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 70
+                           , srcInfoPoints = []
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 68
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 68
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 68
+                                    , srcInfoPoints = []
+                                    }
+                                  "WrapApplicative")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 221 69 221 70
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 221 69 221 70
+                                 , srcInfoPoints = []
+                                 }
+                               "f")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 221 71 221 72
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 221 71 221 72
+                              , srcInfoPoints = []
+                              }
+                            "s"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 21
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 21
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 7
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 4
+                             , SrcSpan "tests/examples/DerivingVia.hs" 222 4 222 6
+                             , SrcSpan "tests/examples/DerivingVia.hs" 222 6 222 7
+                             ]
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 222 4 222 6
+                            , srcInfoPoints = []
+                            }
+                          "<>"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 222 8 222 21
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 222 8 222 9 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 21
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 16
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 16
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 16
+                                     , srcInfoPoints = []
+                                     }
+                                   "liftA2")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 21
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 18
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 222 18 222 20
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 222 20 222 21
+                                   ]
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 21
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 18
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 222 18 222 20
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 222 20 222 21
+                                      ]
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 222 18 222 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "<>")))))
+                    Nothing)
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 224 1 230 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 224 1 224 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 224 68 224 73
+                , SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 230 1 230 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 224 10 224 67
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 224 10 224 38
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 224 10 224 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 224 24 224 25
+                         , SrcSpan "tests/examples/DerivingVia.hs" 224 34 224 35
+                         , SrcSpan "tests/examples/DerivingVia.hs" 224 36 224 38
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 24
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 24
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 24
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "Applicative")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 224 23 224 24
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 224 23 224 24
+                                  , srcInfoPoints = []
+                                  }
+                                "f")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 34
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 34
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 34
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 32
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 32
+                                     , srcInfoPoints = []
+                                     }
+                                   "Monoid")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 224 33 224 34
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 224 33 224 34
+                                  , srcInfoPoints = []
+                                  }
+                                "m")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 67
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 45
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 45
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 45
+                           , srcInfoPoints = []
+                           }
+                         "Monoid")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 224 46 224 67
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 224 46 224 47
+                         , SrcSpan "tests/examples/DerivingVia.hs" 224 66 224 67
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 66
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 64
+                           , srcInfoPoints = []
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 62
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 62
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 62
+                                    , srcInfoPoints = []
+                                    }
+                                  "WrapApplicative")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 224 63 224 64
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 224 63 224 64
+                                 , srcInfoPoints = []
+                                 }
+                               "f")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 224 65 224 66
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 224 65 224 66
+                              , srcInfoPoints = []
+                              }
+                            "m"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 23
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 23
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 9
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 9
+                            , srcInfoPoints = []
+                            }
+                          "mempty"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 225 10 225 23
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 225 10 225 11 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 23
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 16
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 16
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 16
+                                     , srcInfoPoints = []
+                                     }
+                                   "pure")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 225 17 225 23
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 225 17 225 23
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 225 17 225 23
+                                     , srcInfoPoints = []
+                                     }
+                                   "mempty")))))
+                    Nothing)
+             ])
+      , ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 230 1 231 22
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 230 1 230 6
+                , SrcSpan "tests/examples/DerivingVia.hs" 230 17 230 22
+                , SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 233 1 233 0
+                ]
+            }
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 230 7 230 16
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 230 7 230 14
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 230 7 230 14
+                     , srcInfoPoints = []
+                     }
+                   "Pointed"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 230 15 230 16
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 230 15 230 16
+                     , srcInfoPoints = []
+                     }
+                   "p")))
+          []
+          (Just
+             [ ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 22
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 231 11 231 13 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 22
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 231 11 231 13 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 10
+                          , srcInfoPoints = []
+                          }
+                        "pointed"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 231 14 231 22
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 231 16 231 18 ]
+                         }
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 231 14 231 15
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 231 14 231 15
+                               , srcInfoPoints = []
+                               }
+                             "a"))
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 231 19 231 22
+                            , srcInfoPoints = []
+                            }
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 231 19 231 20
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 231 19 231 20
+                                  , srcInfoPoints = []
+                                  }
+                                "p"))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 231 21 231 22
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 231 21 231 22
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))))
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 233 1 234 36
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 233 23 233 24 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 233 1 233 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 22
+               , srcInfoPoints = []
+               }
+             (DHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 20
+                  , srcInfoPoints = []
+                  }
+                (DHead
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 18
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 18
+                        , srcInfoPoints = []
+                        }
+                      "WrapMonad"))
+                (UnkindedVar
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 233 19 233 20
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 233 19 233 20
+                        , srcInfoPoints = []
+                        }
+                      "f")))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 233 21 233 22
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 233 21 233 22
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 233 25 233 43
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 233 25 233 43
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 233 25 233 37
+                      , srcInfoPoints = []
+                      }
+                    "WrappedMonad")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 233 38 233 43
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 233 38 233 39
+                           , SrcSpan "tests/examples/DerivingVia.hs" 233 42 233 43
+                           ]
+                       }
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 233 39 233 42
+                          , srcInfoPoints = []
+                          }
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 233 39 233 40
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 233 39 233 40
+                                , srcInfoPoints = []
+                                }
+                              "f"))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 233 41 233 42
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 233 41 233 42
+                                , srcInfoPoints = []
+                                }
+                              "a")))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 234 3 234 36
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 234 3 234 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 234 20 234 21
+                    , SrcSpan "tests/examples/DerivingVia.hs" 234 28 234 29
+                    , SrcSpan "tests/examples/DerivingVia.hs" 234 35 234 36
+                    ]
+                }
+              (Just
+                 (DerivNewtype
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 234 12 234 19
+                      , srcInfoPoints = []
+                      }))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28
+                             , srcInfoPoints = []
+                             }
+                           "Pointed")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35
+                             , srcInfoPoints = []
+                             }
+                           "Monad")))
+              ]
+          ]
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 236 1 239 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 236 1 236 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 236 56 236 61
+                , SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 239 1 239 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 236 10 236 55
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 236 10 236 33
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 236 10 236 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 236 18 236 19
+                         , SrcSpan "tests/examples/DerivingVia.hs" 236 29 236 30
+                         , SrcSpan "tests/examples/DerivingVia.hs" 236 31 236 33
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 18
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 18
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 18
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 16
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 16
+                                     , srcInfoPoints = []
+                                     }
+                                   "Monad")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 236 17 236 18
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 236 17 236 18
+                                  , srcInfoPoints = []
+                                  }
+                                "m")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 29
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 29
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 29
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 27
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 27
+                                     , srcInfoPoints = []
+                                     }
+                                   "Pointed")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 236 28 236 29
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 236 28 236 29
+                                  , srcInfoPoints = []
+                                  }
+                                "m")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 55
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 41
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 41
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 41
+                           , srcInfoPoints = []
+                           }
+                         "Functor")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 236 42 236 55
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 236 42 236 43
+                         , SrcSpan "tests/examples/DerivingVia.hs" 236 54 236 55
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 54
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 52
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 52
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 52
+                                 , srcInfoPoints = []
+                                 }
+                               "WrapMonad")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 236 53 236 54
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 236 53 236 54
+                              , srcInfoPoints = []
+                              }
+                            "m"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 15
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 15
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 7
+                            , srcInfoPoints = []
+                            }
+                          "fmap"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 237 8 237 15
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 237 8 237 9 ]
+                         }
+                       (Var
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 237 10 237 15
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 237 10 237 15
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 237 10 237 15
+                                  , srcInfoPoints = []
+                                  }
+                                "liftM"))))
+                    Nothing)
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 239 1 244 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 239 1 239 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 239 60 239 65
+                , SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 244 1 244 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 239 10 239 59
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 239 10 239 33
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 239 10 239 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 239 18 239 19
+                         , SrcSpan "tests/examples/DerivingVia.hs" 239 29 239 30
+                         , SrcSpan "tests/examples/DerivingVia.hs" 239 31 239 33
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 18
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 18
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 18
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 16
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 16
+                                     , srcInfoPoints = []
+                                     }
+                                   "Monad")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 239 17 239 18
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 239 17 239 18
+                                  , srcInfoPoints = []
+                                  }
+                                "m")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 29
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 29
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 29
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 27
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 27
+                                     , srcInfoPoints = []
+                                     }
+                                   "Pointed")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 239 28 239 29
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 239 28 239 29
+                                  , srcInfoPoints = []
+                                  }
+                                "m")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 59
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 45
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 45
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 45
+                           , srcInfoPoints = []
+                           }
+                         "Applicative")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 239 46 239 59
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 239 46 239 47
+                         , SrcSpan "tests/examples/DerivingVia.hs" 239 58 239 59
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 58
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 56
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 56
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 56
+                                 , srcInfoPoints = []
+                                 }
+                               "WrapMonad")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 239 57 239 58
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 239 57 239 58
+                              , srcInfoPoints = []
+                              }
+                            "m"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 18
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 18
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 7
+                            , srcInfoPoints = []
+                            }
+                          "pure"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 240 9 240 18
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 240 9 240 10 ]
+                         }
+                       (Var
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 240 11 240 18
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 240 11 240 18
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 240 11 240 18
+                                  , srcInfoPoints = []
+                                  }
+                                "pointed"))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 13
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 13
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 8
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 4
+                             , SrcSpan "tests/examples/DerivingVia.hs" 241 4 241 7
+                             , SrcSpan "tests/examples/DerivingVia.hs" 241 7 241 8
+                             ]
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 241 4 241 7
+                            , srcInfoPoints = []
+                            }
+                          "<*>"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 241 9 241 13
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 241 9 241 10 ]
+                         }
+                       (Var
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 241 11 241 13
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 241 11 241 13
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 241 11 241 13
+                                  , srcInfoPoints = []
+                                  }
+                                "ap"))))
+                    Nothing)
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 244 1 247 58
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 244 15 244 16 ]
+            }
+          (DataType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 244 1 244 5
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 244 6 244 14
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 244 6 244 12
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 244 6 244 12
+                     , srcInfoPoints = []
+                     }
+                   "Sorted"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 244 13 244 14
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 244 13 244 14
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 244 17 244 29
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 244 17 244 29
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 244 17 244 23
+                      , srcInfoPoints = []
+                      }
+                    "Sorted")
+                 [ TyVar
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 244 24 244 25
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 244 24 244 25
+                          , srcInfoPoints = []
+                          }
+                        "a")
+                 , TyVar
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 244 26 244 27
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 244 26 244 27
+                          , srcInfoPoints = []
+                          }
+                        "a")
+                 , TyVar
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 244 28 244 29
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 244 28 244 29
+                          , srcInfoPoints = []
+                          }
+                        "a")
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 245 3 245 34
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 245 3 245 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 245 12 245 13
+                    , SrcSpan "tests/examples/DerivingVia.hs" 245 20 245 21
+                    , SrcSpan "tests/examples/DerivingVia.hs" 245 33 245 34
+                    ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 246 5 246 8
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 246 9 246 27
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 246 9 246 10
+                             , SrcSpan "tests/examples/DerivingVia.hs" 246 26 246 27
+                             ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 26
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 19
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 19
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 19
+                                     , srcInfoPoints = []
+                                     }
+                                   "WrapMonad")))
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 246 20 246 26
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 246 20 246 26
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 246 20 246 26
+                                     , srcInfoPoints = []
+                                     }
+                                   "Sorted")))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20
+                             , srcInfoPoints = []
+                             }
+                           "Functor")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33
+                             , srcInfoPoints = []
+                             }
+                           "Applicative")))
+              ]
+          , Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 247 3 247 58
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 247 3 247 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 247 12 247 13
+                    , SrcSpan "tests/examples/DerivingVia.hs" 247 16 247 17
+                    , SrcSpan "tests/examples/DerivingVia.hs" 247 28 247 29
+                    , SrcSpan "tests/examples/DerivingVia.hs" 247 38 247 39
+                    , SrcSpan "tests/examples/DerivingVia.hs" 247 49 247 50
+                    , SrcSpan "tests/examples/DerivingVia.hs" 247 57 247 58
+                    ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 248 5 248 8
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 248 9 248 35
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 248 9 248 10
+                             , SrcSpan "tests/examples/DerivingVia.hs" 248 34 248 35
+                             ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 34
+                            , srcInfoPoints = []
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 32
+                               , srcInfoPoints = []
+                               }
+                             (TyCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 25
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 25
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 25
+                                        , srcInfoPoints = []
+                                        }
+                                      "WrapApplicative")))
+                             (TyCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 248 26 248 32
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 248 26 248 32
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 248 26 248 32
+                                        , srcInfoPoints = []
+                                        }
+                                      "Sorted"))))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 248 33 248 34
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 248 33 248 34
+                                  , srcInfoPoints = []
+                                  }
+                                "a"))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16
+                             , srcInfoPoints = []
+                             }
+                           "Num")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28
+                             , srcInfoPoints = []
+                             }
+                           "Fractional")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38
+                             , srcInfoPoints = []
+                             }
+                           "Floating")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49
+                             , srcInfoPoints = []
+                             }
+                           "Semigroup")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57
+                             , srcInfoPoints = []
+                             }
+                           "Monoid")))
+              ]
+          ]
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 251 1 258 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 251 1 251 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 251 23 251 28
+                , SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 258 1 258 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 22
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 22
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 15
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 15
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 15
+                           , srcInfoPoints = []
+                           }
+                         "Monad")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 251 16 251 22
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 251 16 251 22
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 251 16 251 22
+                           , srcInfoPoints = []
+                           }
+                         "Sorted")))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 51
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 252 9 252 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 51
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 252 9 252 11 ]
+                      }
+                    [ Symbol
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 8
+                          , srcInfoPoints =
+                              [ SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 4
+                              , SrcSpan "tests/examples/DerivingVia.hs" 252 4 252 7
+                              , SrcSpan "tests/examples/DerivingVia.hs" 252 7 252 8
+                              ]
+                          }
+                        ">>="
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 51
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 252 21 252 23 ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 20
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 18
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 18
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 18
+                                     , srcInfoPoints = []
+                                     }
+                                   "Sorted")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 252 19 252 20
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 252 19 252 20
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 252 24 252 51
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 252 40 252 42 ]
+                            }
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 252 24 252 39
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 252 24 252 25
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 252 38 252 39
+                                   ]
+                               }
+                             (TyFun
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 252 25 252 38
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 252 27 252 29 ]
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 252 25 252 26
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 252 25 252 26
+                                        , srcInfoPoints = []
+                                        }
+                                      "a"))
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 252 30 252 38
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 252 30 252 36
+                                        , srcInfoPoints = []
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 252 30 252 36
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 252 30 252 36
+                                              , srcInfoPoints = []
+                                              }
+                                            "Sorted")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 252 37 252 38
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 252 37 252 38
+                                           , srcInfoPoints = []
+                                           }
+                                         "b")))))
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 51
+                               , srcInfoPoints = []
+                               }
+                             (TyCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 49
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 49
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 49
+                                        , srcInfoPoints = []
+                                        }
+                                      "Sorted")))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 252 50 252 51
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 252 50 252 51
+                                     , srcInfoPoints = []
+                                     }
+                                   "b"))))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 253 3 256 26
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 253 40 253 45 ]
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 253 3 256 26
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 253 40 253 45 ]
+                      }
+                    [ InfixMatch
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 253 3 256 26
+                          , srcInfoPoints =
+                              [ SrcSpan "tests/examples/DerivingVia.hs" 253 40 253 45 ]
+                          }
+                        (PApp
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 15
+                             , srcInfoPoints = []
+                             }
+                           (UnQual
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 9
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 9
+                                   , srcInfoPoints = []
+                                   }
+                                 "Sorted"))
+                           [ PVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 253 10 253 11
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 253 10 253 11
+                                    , srcInfoPoints = []
+                                    }
+                                  "a")
+                           , PVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 253 12 253 13
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 253 12 253 13
+                                    , srcInfoPoints = []
+                                    }
+                                  "b")
+                           , PVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 253 14 253 15
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 253 14 253 15
+                                    , srcInfoPoints = []
+                                    }
+                                  "c")
+                           ])
+                        (Symbol
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 253 16 253 19
+                             , srcInfoPoints = []
+                             }
+                           ">>=")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 253 20 253 21
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 253 20 253 21
+                                 , srcInfoPoints = []
+                                 }
+                               "f")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 253 22 253 39
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 253 22 253 23 ]
+                             }
+                           (App
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 39
+                                , srcInfoPoints = []
+                                }
+                              (App
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 36
+                                   , srcInfoPoints = []
+                                   }
+                                 (App
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 33
+                                      , srcInfoPoints = []
+                                      }
+                                    (Con
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 30
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 253 24 253 30
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 253 24 253 30
+                                               , srcInfoPoints = []
+                                               }
+                                             "Sorted")))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 253 31 253 33
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 253 31 253 33
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 253 31 253 33
+                                               , srcInfoPoints = []
+                                               }
+                                             "a'"))))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 253 34 253 36
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 253 34 253 36
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 253 34 253 36
+                                            , srcInfoPoints = []
+                                            }
+                                          "b'"))))
+                              (Var
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 253 37 253 39
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 253 37 253 39
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 253 37 253 39
+                                         , srcInfoPoints = []
+                                         }
+                                       "c'")))))
+                        (Just
+                           (BDecls
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 254 5 256 26
+                                , srcInfoPoints =
+                                    [ SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 5
+                                    , SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 5
+                                    , SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 5
+                                    , SrcSpan "tests/examples/DerivingVia.hs" 258 1 258 0
+                                    ]
+                                }
+                              [ PatBind
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 26
+                                    , srcInfoPoints = []
+                                    }
+                                  (PApp
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 19
+                                       , srcInfoPoints = []
+                                       }
+                                     (UnQual
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 11
+                                          , srcInfoPoints = []
+                                          }
+                                        (Ident
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 254 5 254 11
+                                             , srcInfoPoints = []
+                                             }
+                                           "Sorted"))
+                                     [ PVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 254 12 254 14
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 254 12 254 14
+                                              , srcInfoPoints = []
+                                              }
+                                            "a'")
+                                     , PWildCard
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 254 15 254 16
+                                           , srcInfoPoints = []
+                                           }
+                                     , PWildCard
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 254 18 254 19
+                                           , srcInfoPoints = []
+                                           }
+                                     ])
+                                  (UnGuardedRhs
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 254 21 254 26
+                                       , srcInfoPoints =
+                                           [ SrcSpan "tests/examples/DerivingVia.hs" 254 21 254 22 ]
+                                       }
+                                     (App
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 254 23 254 26
+                                          , srcInfoPoints = []
+                                          }
+                                        (Var
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 254 23 254 24
+                                             , srcInfoPoints = []
+                                             }
+                                           (UnQual
+                                              SrcSpanInfo
+                                                { srcInfoSpan =
+                                                    SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 254 23 254 24
+                                                , srcInfoPoints = []
+                                                }
+                                              (Ident
+                                                 SrcSpanInfo
+                                                   { srcInfoSpan =
+                                                       SrcSpan
+                                                         "tests/examples/DerivingVia.hs"
+                                                         254
+                                                         23
+                                                         254
+                                                         24
+                                                   , srcInfoPoints = []
+                                                   }
+                                                 "f")))
+                                        (Var
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 254 25 254 26
+                                             , srcInfoPoints = []
+                                             }
+                                           (UnQual
+                                              SrcSpanInfo
+                                                { srcInfoSpan =
+                                                    SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 254 25 254 26
+                                                , srcInfoPoints = []
+                                                }
+                                              (Ident
+                                                 SrcSpanInfo
+                                                   { srcInfoSpan =
+                                                       SrcSpan
+                                                         "tests/examples/DerivingVia.hs"
+                                                         254
+                                                         25
+                                                         254
+                                                         26
+                                                   , srcInfoPoints = []
+                                                   }
+                                                 "a")))))
+                                  Nothing
+                              , PatBind
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 26
+                                    , srcInfoPoints = []
+                                    }
+                                  (PApp
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 19
+                                       , srcInfoPoints = []
+                                       }
+                                     (UnQual
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 11
+                                          , srcInfoPoints = []
+                                          }
+                                        (Ident
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 255 5 255 11
+                                             , srcInfoPoints = []
+                                             }
+                                           "Sorted"))
+                                     [ PWildCard
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 255 12 255 13
+                                           , srcInfoPoints = []
+                                           }
+                                     , PVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 255 15 255 17
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 255 15 255 17
+                                              , srcInfoPoints = []
+                                              }
+                                            "b'")
+                                     , PWildCard
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 255 18 255 19
+                                           , srcInfoPoints = []
+                                           }
+                                     ])
+                                  (UnGuardedRhs
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 255 21 255 26
+                                       , srcInfoPoints =
+                                           [ SrcSpan "tests/examples/DerivingVia.hs" 255 21 255 22 ]
+                                       }
+                                     (App
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 255 23 255 26
+                                          , srcInfoPoints = []
+                                          }
+                                        (Var
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 255 23 255 24
+                                             , srcInfoPoints = []
+                                             }
+                                           (UnQual
+                                              SrcSpanInfo
+                                                { srcInfoSpan =
+                                                    SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 255 23 255 24
+                                                , srcInfoPoints = []
+                                                }
+                                              (Ident
+                                                 SrcSpanInfo
+                                                   { srcInfoSpan =
+                                                       SrcSpan
+                                                         "tests/examples/DerivingVia.hs"
+                                                         255
+                                                         23
+                                                         255
+                                                         24
+                                                   , srcInfoPoints = []
+                                                   }
+                                                 "f")))
+                                        (Var
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 255 25 255 26
+                                             , srcInfoPoints = []
+                                             }
+                                           (UnQual
+                                              SrcSpanInfo
+                                                { srcInfoSpan =
+                                                    SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 255 25 255 26
+                                                , srcInfoPoints = []
+                                                }
+                                              (Ident
+                                                 SrcSpanInfo
+                                                   { srcInfoSpan =
+                                                       SrcSpan
+                                                         "tests/examples/DerivingVia.hs"
+                                                         255
+                                                         25
+                                                         255
+                                                         26
+                                                   , srcInfoPoints = []
+                                                   }
+                                                 "b")))))
+                                  Nothing
+                              , PatBind
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 26
+                                    , srcInfoPoints = []
+                                    }
+                                  (PApp
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 20
+                                       , srcInfoPoints = []
+                                       }
+                                     (UnQual
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 11
+                                          , srcInfoPoints = []
+                                          }
+                                        (Ident
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 256 5 256 11
+                                             , srcInfoPoints = []
+                                             }
+                                           "Sorted"))
+                                     [ PWildCard
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 256 12 256 13
+                                           , srcInfoPoints = []
+                                           }
+                                     , PWildCard
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 256 15 256 16
+                                           , srcInfoPoints = []
+                                           }
+                                     , PVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 256 18 256 20
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 256 18 256 20
+                                              , srcInfoPoints = []
+                                              }
+                                            "c'")
+                                     ])
+                                  (UnGuardedRhs
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 256 21 256 26
+                                       , srcInfoPoints =
+                                           [ SrcSpan "tests/examples/DerivingVia.hs" 256 21 256 22 ]
+                                       }
+                                     (App
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 256 23 256 26
+                                          , srcInfoPoints = []
+                                          }
+                                        (Var
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 256 23 256 24
+                                             , srcInfoPoints = []
+                                             }
+                                           (UnQual
+                                              SrcSpanInfo
+                                                { srcInfoSpan =
+                                                    SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 256 23 256 24
+                                                , srcInfoPoints = []
+                                                }
+                                              (Ident
+                                                 SrcSpanInfo
+                                                   { srcInfoSpan =
+                                                       SrcSpan
+                                                         "tests/examples/DerivingVia.hs"
+                                                         256
+                                                         23
+                                                         256
+                                                         24
+                                                   , srcInfoPoints = []
+                                                   }
+                                                 "f")))
+                                        (Var
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 256 25 256 26
+                                             , srcInfoPoints = []
+                                             }
+                                           (UnQual
+                                              SrcSpanInfo
+                                                { srcInfoSpan =
+                                                    SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 256 25 256 26
+                                                , srcInfoPoints = []
+                                                }
+                                              (Ident
+                                                 SrcSpanInfo
+                                                   { srcInfoSpan =
+                                                       SrcSpan
+                                                         "tests/examples/DerivingVia.hs"
+                                                         256
+                                                         25
+                                                         256
+                                                         26
+                                                   , srcInfoPoints = []
+                                                   }
+                                                 "c")))))
+                                  Nothing
+                              ]))
+                    ])
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 258 1 265 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 258 1 258 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 258 25 258 30
+                , SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 265 1 265 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 24
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 24
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 17
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 17
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 17
+                           , srcInfoPoints = []
+                           }
+                         "Pointed")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 258 18 258 24
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 258 18 258 24
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 258 18 258 24
+                           , srcInfoPoints = []
+                           }
+                         "Sorted")))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 27
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 259 11 259 13 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 27
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 259 11 259 13 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 10
+                          , srcInfoPoints = []
+                          }
+                        "pointed"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 259 14 259 27
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 259 16 259 18 ]
+                         }
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 259 14 259 15
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 259 14 259 15
+                               , srcInfoPoints = []
+                               }
+                             "a"))
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 27
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 25
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 25
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 25
+                                     , srcInfoPoints = []
+                                     }
+                                   "Sorted")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 259 26 259 27
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 259 26 259 27
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 27
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 27
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 27
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 10
+                             , srcInfoPoints = []
+                             }
+                           "pointed")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 260 11 260 12
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 260 11 260 12
+                                 , srcInfoPoints = []
+                                 }
+                               "a")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 260 13 260 27
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 260 13 260 14 ]
+                             }
+                           (App
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 27
+                                , srcInfoPoints = []
+                                }
+                              (App
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 25
+                                   , srcInfoPoints = []
+                                   }
+                                 (App
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 23
+                                      , srcInfoPoints = []
+                                      }
+                                    (Con
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 21
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 260 15 260 21
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 260 15 260 21
+                                               , srcInfoPoints = []
+                                               }
+                                             "Sorted")))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 260 22 260 23
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 260 22 260 23
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 260 22 260 23
+                                               , srcInfoPoints = []
+                                               }
+                                             "a"))))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 260 24 260 25
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 260 24 260 25
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 260 24 260 25
+                                            , srcInfoPoints = []
+                                            }
+                                          "a"))))
+                              (Var
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 260 26 260 27
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 260 26 260 27
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 260 26 260 27
+                                         , srcInfoPoints = []
+                                         }
+                                       "a")))))
+                        Nothing
+                    ])
+             ])
+      , ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 265 1 266 22
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 265 1 265 6
+                , SrcSpan "tests/examples/DerivingVia.hs" 265 16 265 21
+                , SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 268 1 268 0
+                ]
+            }
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 265 7 265 15
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 265 7 265 13
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 265 7 265 13
+                     , srcInfoPoints = []
+                     }
+                   "IsZero"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 265 14 265 15
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 265 14 265 15
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          []
+          (Just
+             [ ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 22
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 266 10 266 12 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 22
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 266 10 266 12 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 9
+                          , srcInfoPoints = []
+                          }
+                        "isZero"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 266 13 266 22
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 266 15 266 17 ]
+                         }
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 266 13 266 14
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 266 13 266 14
+                               , srcInfoPoints = []
+                               }
+                             "a"))
+                       (TyCon
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 266 18 266 22
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 266 18 266 22
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 266 18 266 22
+                                  , srcInfoPoints = []
+                                  }
+                                "Bool")))))
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 268 1 268 41
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 268 25 268 26 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 268 1 268 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 268 9 268 24
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 268 9 268 21
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 268 9 268 21
+                     , srcInfoPoints = []
+                     }
+                   "WrappedNumEq"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 268 23 268 24
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 268 23 268 24
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 268 27 268 41
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 268 27 268 41
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 268 27 268 39
+                      , srcInfoPoints = []
+                      }
+                    "WrappedNumEq")
+                 [ TyVar
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 268 40 268 41
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 268 40 268 41
+                          , srcInfoPoints = []
+                          }
+                        "a")
+                 ])
+          ]
+          []
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 269 1 269 41
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 269 25 269 26 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 269 1 269 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 269 9 269 24
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 269 9 269 20
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 269 9 269 20
+                     , srcInfoPoints = []
+                     }
+                   "WrappedShow"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 269 23 269 24
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 269 23 269 24
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 269 27 269 41
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 269 27 269 41
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 269 27 269 38
+                      , srcInfoPoints = []
+                      }
+                    "WrappedShow")
+                 [ TyVar
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 269 40 269 41
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 269 40 269 41
+                          , srcInfoPoints = []
+                          }
+                        "a")
+                 ])
+          ]
+          []
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 270 1 270 42
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 270 25 270 26 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 270 1 270 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 270 9 270 24
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 270 9 270 22
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 270 9 270 22
+                     , srcInfoPoints = []
+                     }
+                   "WrappedNumEq2"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 270 23 270 24
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 270 23 270 24
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 270 27 270 42
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 270 27 270 42
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 270 27 270 40
+                      , srcInfoPoints = []
+                      }
+                    "WrappedNumEq2")
+                 [ TyVar
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 270 41 270 42
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 270 41 270 42
+                          , srcInfoPoints = []
+                          }
+                        "a")
+                 ])
+          ]
+          []
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 272 1 276 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 272 1 272 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 272 51 272 56
+                , SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 276 1 276 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 272 10 272 50
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 272 10 272 26
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 272 10 272 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 272 16 272 17
+                         , SrcSpan "tests/examples/DerivingVia.hs" 272 22 272 23
+                         , SrcSpan "tests/examples/DerivingVia.hs" 272 24 272 26
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 16
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 16
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 16
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 14
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 14
+                                     , srcInfoPoints = []
+                                     }
+                                   "Num")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 272 15 272 16
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 272 15 272 16
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 22
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 22
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 22
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 20
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "Eq")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 272 21 272 22
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 272 21 272 22
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 50
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 33
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 33
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 33
+                           , srcInfoPoints = []
+                           }
+                         "IsZero")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 272 34 272 50
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 272 34 272 35
+                         , SrcSpan "tests/examples/DerivingVia.hs" 272 49 272 50
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 49
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 47
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 47
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 47
+                                 , srcInfoPoints = []
+                                 }
+                               "WrappedNumEq")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 272 48 272 49
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 272 48 272 49
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 35
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 273 10 273 12 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 35
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 273 10 273 12 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 9
+                          , srcInfoPoints = []
+                          }
+                        "isZero"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 35
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 273 28 273 30 ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 27
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 25
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 25
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 25
+                                     , srcInfoPoints = []
+                                     }
+                                   "WrappedNumEq")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 273 26 273 27
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 273 26 273 27
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                       (TyCon
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 273 31 273 35
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 273 31 273 35
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 273 31 273 35
+                                  , srcInfoPoints = []
+                                  }
+                                "Bool")))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 35
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 35
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 35
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 9
+                             , srcInfoPoints = []
+                             }
+                           "isZero")
+                        [ PParen
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 274 10 274 26
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 274 10 274 11
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 274 25 274 26
+                                  ]
+                              }
+                            (PApp
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 274 11 274 25
+                                 , srcInfoPoints = []
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 274 11 274 23
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 274 11 274 23
+                                       , srcInfoPoints = []
+                                       }
+                                     "WrappedNumEq"))
+                               [ PVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 274 24 274 25
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 274 24 274 25
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")
+                               ])
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 274 27 274 35
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 274 27 274 28 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 274 29 274 35
+                                , srcInfoPoints = []
+                                }
+                              (Lit
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 274 29 274 30
+                                   , srcInfoPoints = []
+                                   }
+                                 (Int
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 274 29 274 30
+                                      , srcInfoPoints = []
+                                      }
+                                    0
+                                    "0"))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 274 31 274 33
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 274 31 274 33
+                                      , srcInfoPoints = []
+                                      }
+                                    (Symbol
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 274 31 274 33
+                                         , srcInfoPoints = []
+                                         }
+                                       "==")))
+                              (Var
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 274 34 274 35
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 274 34 274 35
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 274 34 274 35
+                                         , srcInfoPoints = []
+                                         }
+                                       "a")))))
+                        Nothing
+                    ])
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 276 1 280 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 276 1 276 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 276 43 276 48
+                , SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 280 1 280 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 42
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxSingle
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 19
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 276 17 276 19 ]
+                     }
+                   (TypeA
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 19
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 276 17 276 19 ]
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 19
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 276 17 276 19 ]
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 19
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 276 17 276 19 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 14
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 14
+                                    , srcInfoPoints = []
+                                    }
+                                  "Show")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 276 15 276 16
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 276 15 276 16
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))))))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 42
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 26
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 26
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 26
+                           , srcInfoPoints = []
+                           }
+                         "IsZero")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 276 27 276 42
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 276 27 276 28
+                         , SrcSpan "tests/examples/DerivingVia.hs" 276 41 276 42
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 41
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 39
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 39
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 39
+                                 , srcInfoPoints = []
+                                 }
+                               "WrappedShow")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 276 40 276 41
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 276 40 276 41
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 34
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 277 10 277 12 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 34
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 277 10 277 12 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 9
+                          , srcInfoPoints = []
+                          }
+                        "isZero"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 34
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 277 27 277 29 ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 26
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 24
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 24
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "WrappedShow")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 277 25 277 26
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 277 25 277 26
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                       (TyCon
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 277 30 277 34
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 277 30 277 34
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 277 30 277 34
+                                  , srcInfoPoints = []
+                                  }
+                                "Bool")))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 41
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 41
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 41
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 9
+                             , srcInfoPoints = []
+                             }
+                           "isZero")
+                        [ PParen
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 278 10 278 25
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 278 10 278 11
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 278 24 278 25
+                                  ]
+                              }
+                            (PApp
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 278 11 278 24
+                                 , srcInfoPoints = []
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 278 11 278 22
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 278 11 278 22
+                                       , srcInfoPoints = []
+                                       }
+                                     "WrappedShow"))
+                               [ PVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 278 23 278 24
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 278 23 278 24
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")
+                               ])
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 278 26 278 41
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 278 26 278 27 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 278 28 278 41
+                                , srcInfoPoints = []
+                                }
+                              (Lit
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 278 28 278 31
+                                   , srcInfoPoints = []
+                                   }
+                                 (String
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 278 28 278 31
+                                      , srcInfoPoints = []
+                                      }
+                                    "0"
+                                    "0"))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 278 32 278 34
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 278 32 278 34
+                                      , srcInfoPoints = []
+                                      }
+                                    (Symbol
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 278 32 278 34
+                                         , srcInfoPoints = []
+                                         }
+                                       "==")))
+                              (App
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 278 35 278 41
+                                   , srcInfoPoints = []
+                                   }
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 278 35 278 39
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 278 35 278 39
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 278 35 278 39
+                                            , srcInfoPoints = []
+                                            }
+                                          "show")))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 278 40 278 41
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 278 40 278 41
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 278 40 278 41
+                                            , srcInfoPoints = []
+                                            }
+                                          "a"))))))
+                        Nothing
+                    ])
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 280 1 284 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 280 1 280 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 280 52 280 57
+                , SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 284 1 284 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 280 10 280 51
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 280 10 280 26
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 280 10 280 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 280 16 280 17
+                         , SrcSpan "tests/examples/DerivingVia.hs" 280 22 280 23
+                         , SrcSpan "tests/examples/DerivingVia.hs" 280 24 280 26
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 16
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 16
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 16
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 14
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 14
+                                     , srcInfoPoints = []
+                                     }
+                                   "Num")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 280 15 280 16
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 280 15 280 16
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 22
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 22
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 22
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 20
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "Eq")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 280 21 280 22
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 280 21 280 22
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 51
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 33
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 33
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 33
+                           , srcInfoPoints = []
+                           }
+                         "IsZero")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 280 34 280 51
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 280 34 280 35
+                         , SrcSpan "tests/examples/DerivingVia.hs" 280 50 280 51
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 50
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 48
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 48
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 48
+                                 , srcInfoPoints = []
+                                 }
+                               "WrappedNumEq2")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 280 49 280 50
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 280 49 280 50
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 36
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 281 10 281 12 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 36
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 281 10 281 12 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 9
+                          , srcInfoPoints = []
+                          }
+                        "isZero"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 36
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 281 29 281 31 ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 28
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 26
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 26
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 26
+                                     , srcInfoPoints = []
+                                     }
+                                   "WrappedNumEq2")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 281 27 281 28
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 281 27 281 28
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                       (TyCon
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 281 32 281 36
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 281 32 281 36
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 281 32 281 36
+                                  , srcInfoPoints = []
+                                  }
+                                "Bool")))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 40
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 40
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 40
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 9
+                             , srcInfoPoints = []
+                             }
+                           "isZero")
+                        [ PParen
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 282 10 282 27
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 282 10 282 11
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 282 26 282 27
+                                  ]
+                              }
+                            (PApp
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 282 11 282 26
+                                 , srcInfoPoints = []
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 282 11 282 24
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 282 11 282 24
+                                       , srcInfoPoints = []
+                                       }
+                                     "WrappedNumEq2"))
+                               [ PVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 282 25 282 26
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 282 25 282 26
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")
+                               ])
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 282 28 282 40
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 282 28 282 29 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 40
+                                , srcInfoPoints = []
+                                }
+                              (InfixApp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 35
+                                   , srcInfoPoints = []
+                                   }
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 31
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 31
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 282 30 282 31
+                                            , srcInfoPoints = []
+                                            }
+                                          "a")))
+                                 (QVarOp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 282 32 282 33
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 282 32 282 33
+                                         , srcInfoPoints = []
+                                         }
+                                       (Symbol
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 282 32 282 33
+                                            , srcInfoPoints = []
+                                            }
+                                          "+")))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 282 34 282 35
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 282 34 282 35
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 282 34 282 35
+                                            , srcInfoPoints = []
+                                            }
+                                          "a"))))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 282 36 282 38
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 282 36 282 38
+                                      , srcInfoPoints = []
+                                      }
+                                    (Symbol
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 282 36 282 38
+                                         , srcInfoPoints = []
+                                         }
+                                       "==")))
+                              (Var
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 282 39 282 40
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 282 39 282 40
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 282 39 282 40
+                                         , srcInfoPoints = []
+                                         }
+                                       "a")))))
+                        Nothing
+                    ])
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 284 1 286 18
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 284 13 284 14 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 284 1 284 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHead
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 284 9 284 12
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 284 9 284 12
+                  , srcInfoPoints = []
+                  }
+                "INT"))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 284 15 284 22
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 284 15 284 22
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 284 15 284 18
+                      , srcInfoPoints = []
+                      }
+                    "INT")
+                 [ TyCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 284 19 284 22
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 284 19 284 22
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 284 19 284 22
+                             , srcInfoPoints = []
+                             }
+                           "Int"))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 285 3 285 24
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 285 3 285 11 ]
+                }
+              (Just
+                 (DerivNewtype
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 285 12 285 19
+                      , srcInfoPoints = []
+                      }))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24
+                             , srcInfoPoints = []
+                             }
+                           "Show")))
+              ]
+          , Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 286 3 286 18
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 286 3 286 11 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 286 19 286 22
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 286 23 286 41
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 286 23 286 24
+                             , SrcSpan "tests/examples/DerivingVia.hs" 286 40 286 41
+                             ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 40
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 36
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 36
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 36
+                                     , srcInfoPoints = []
+                                     }
+                                   "WrappedNumEq")))
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 286 37 286 40
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 286 37 286 40
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 286 37 286 40
+                                     , srcInfoPoints = []
+                                     }
+                                   "Int")))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18
+                             , srcInfoPoints = []
+                             }
+                           "IsZero")))
+              ]
+          ]
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 288 1 288 41
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 288 14 288 15 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 288 1 288 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHead
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 288 9 288 13
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 288 9 288 13
+                  , srcInfoPoints = []
+                  }
+                "VOID"))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 288 16 288 25
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 288 16 288 25
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 288 16 288 20
+                      , srcInfoPoints = []
+                      }
+                    "VOID")
+                 [ TyCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 288 21 288 25
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 288 21 288 25
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 288 21 288 25
+                             , srcInfoPoints = []
+                             }
+                           "Void"))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 288 26 288 41
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 288 26 288 34 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 288 42 288 45
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 288 46 288 64
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 288 46 288 47
+                             , SrcSpan "tests/examples/DerivingVia.hs" 288 63 288 64
+                             ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 63
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 58
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 58
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 58
+                                     , srcInfoPoints = []
+                                     }
+                                   "WrappedShow")))
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 288 59 288 63
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 288 59 288 63
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 288 59 288 63
+                                     , srcInfoPoints = []
+                                     }
+                                   "Void")))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41
+                             , srcInfoPoints = []
+                             }
+                           "IsZero")))
+              ]
+          ]
+      , ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 293 1 301 14
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 293 1 293 6
+                , SrcSpan "tests/examples/DerivingVia.hs" 293 38 293 43
+                , SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 296 3 296 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 303 1 303 0
+                ]
+            }
+          (Just
+             (CxSingle
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 21
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingVia.hs" 293 19 293 21 ]
+                  }
+                (TypeA
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 21
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 293 19 293 21 ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 21
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 293 19 293 21 ]
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 21
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 293 19 293 21 ]
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 16
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 16
+                                 , srcInfoPoints = []
+                                 }
+                               "Bifunctor")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 293 17 293 18
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 293 17 293 18
+                              , srcInfoPoints = []
+                              }
+                            "p"))))))
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 293 22 293 37
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 293 22 293 35
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 293 22 293 35
+                     , srcInfoPoints = []
+                     }
+                   "Biapplicative"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 293 36 293 37
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 293 36 293 37
+                     , srcInfoPoints = []
+                     }
+                   "p")))
+          []
+          (Just
+             [ ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 28
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 294 10 294 12 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 28
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 294 10 294 12 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 9
+                          , srcInfoPoints = []
+                          }
+                        "bipure"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 294 13 294 28
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 294 15 294 17 ]
+                         }
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 294 13 294 14
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 294 13 294 14
+                               , srcInfoPoints = []
+                               }
+                             "a"))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 294 18 294 28
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 294 20 294 22 ]
+                            }
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 294 18 294 19
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 294 18 294 19
+                                  , srcInfoPoints = []
+                                  }
+                                "b"))
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 28
+                               , srcInfoPoints = []
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 26
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 24
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 24
+                                        , srcInfoPoints = []
+                                        }
+                                      "p"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 294 25 294 26
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 294 25 294 26
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 294 27 294 28
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 294 27 294 28
+                                     , srcInfoPoints = []
+                                     }
+                                   "b"))))))
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 296 3 301 14
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 297 5 297 7 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 296 3 301 14
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 297 5 297 7 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 296 3 296 11
+                          , srcInfoPoints = []
+                          }
+                        "biliftA2"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 297 8 301 14
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 298 5 298 7 ]
+                         }
+                       (TyParen
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 297 8 297 23
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 297 8 297 9
+                                , SrcSpan "tests/examples/DerivingVia.hs" 297 22 297 23
+                                ]
+                            }
+                          (TyFun
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 297 9 297 22
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 297 12 297 14 ]
+                               }
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 297 9 297 10
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 297 9 297 10
+                                     , srcInfoPoints = []
+                                     }
+                                   "a"))
+                             (TyFun
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 297 15 297 22
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 297 18 297 20 ]
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 297 15 297 16
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 297 15 297 16
+                                        , srcInfoPoints = []
+                                        }
+                                      "b"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 297 21 297 22
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 297 21 297 22
+                                        , srcInfoPoints = []
+                                        }
+                                      "c")))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 298 8 301 14
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 299 5 299 7 ]
+                            }
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 298 8 298 24
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 298 8 298 9
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 298 23 298 24
+                                   ]
+                               }
+                             (TyFun
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 298 9 298 23
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 298 12 298 14 ]
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 298 9 298 11
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 298 9 298 11
+                                        , srcInfoPoints = []
+                                        }
+                                      "a'"))
+                                (TyFun
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 298 15 298 23
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 298 18 298 20 ]
+                                     }
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 298 15 298 17
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 298 15 298 17
+                                           , srcInfoPoints = []
+                                           }
+                                         "b'"))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 298 21 298 23
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 298 21 298 23
+                                           , srcInfoPoints = []
+                                           }
+                                         "c'")))))
+                          (TyFun
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 299 8 301 14
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 300 5 300 7 ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 14
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 11
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 9
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 9
+                                           , srcInfoPoints = []
+                                           }
+                                         "p"))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 299 10 299 11
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 299 10 299 11
+                                           , srcInfoPoints = []
+                                           }
+                                         "a")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 299 12 299 14
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 299 12 299 14
+                                        , srcInfoPoints = []
+                                        }
+                                      "a'")))
+                             (TyFun
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 300 8 301 14
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 301 5 301 7 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 300 8 300 14
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 300 8 300 11
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 300 8 300 9
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 300 8 300 9
+                                              , srcInfoPoints = []
+                                              }
+                                            "p"))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 300 10 300 11
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 300 10 300 11
+                                              , srcInfoPoints = []
+                                              }
+                                            "b")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 300 12 300 14
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 300 12 300 14
+                                           , srcInfoPoints = []
+                                           }
+                                         "b'")))
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 301 8 301 14
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 301 8 301 11
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 301 8 301 9
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 301 8 301 9
+                                              , srcInfoPoints = []
+                                              }
+                                            "p"))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 301 10 301 11
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 301 10 301 11
+                                              , srcInfoPoints = []
+                                              }
+                                            "c")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 301 12 301 14
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 301 12 301 14
+                                           , srcInfoPoints = []
+                                           }
+                                         "c'"))))))))
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 303 1 309 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 303 1 303 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 303 28 303 33
+                , SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 306 3 306 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 309 1 309 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 27
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 27
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 23
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 23
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 23
+                           , srcInfoPoints = []
+                           }
+                         "Biapplicative")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 27
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 25
+                         , SrcSpan "tests/examples/DerivingVia.hs" 303 25 303 26
+                         , SrcSpan "tests/examples/DerivingVia.hs" 303 26 303 27
+                         ]
+                     }
+                   (Special
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 27
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 25
+                            , SrcSpan "tests/examples/DerivingVia.hs" 303 25 303 26
+                            , SrcSpan "tests/examples/DerivingVia.hs" 303 26 303 27
+                            ]
+                        }
+                      (TupleCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 27
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 25
+                               , SrcSpan "tests/examples/DerivingVia.hs" 303 25 303 26
+                               , SrcSpan "tests/examples/DerivingVia.hs" 303 26 303 27
+                               ]
+                           }
+                         Boxed
+                         2)))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 15
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 15
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 9
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 9
+                            , srcInfoPoints = []
+                            }
+                          "bipure"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 304 10 304 15
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 304 10 304 11 ]
+                         }
+                       (Con
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 15
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 13
+                                , SrcSpan "tests/examples/DerivingVia.hs" 304 13 304 14
+                                , SrcSpan "tests/examples/DerivingVia.hs" 304 14 304 15
+                                ]
+                            }
+                          (Special
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 15
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 13
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 304 13 304 14
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 304 14 304 15
+                                   ]
+                               }
+                             (TupleCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 15
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 13
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 304 13 304 14
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 304 14 304 15
+                                      ]
+                                  }
+                                Boxed
+                                2))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 306 3 307 22
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 306 3 307 22
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 306 3 307 22
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 306 3 306 11
+                             , srcInfoPoints = []
+                             }
+                           "biliftA2")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 306 12 306 13
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 306 12 306 13
+                                 , srcInfoPoints = []
+                                 }
+                               "f")
+                        , PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 306 14 306 16
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 306 14 306 16
+                                 , srcInfoPoints = []
+                                 }
+                               "f'")
+                        , PTuple
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 306 17 306 24
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 306 17 306 18
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 306 19 306 20
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 306 23 306 24
+                                  ]
+                              }
+                            Boxed
+                            [ PVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 306 18 306 19
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 306 18 306 19
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")
+                            , PVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 306 21 306 23
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 306 21 306 23
+                                     , srcInfoPoints = []
+                                     }
+                                   "a'")
+                            ]
+                        , PTuple
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 306 25 306 32
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 306 25 306 26
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 306 27 306 28
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 306 31 306 32
+                                  ]
+                              }
+                            Boxed
+                            [ PVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 306 26 306 27
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 306 26 306 27
+                                     , srcInfoPoints = []
+                                     }
+                                   "b")
+                            , PVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 306 29 306 31
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 306 29 306 31
+                                     , srcInfoPoints = []
+                                     }
+                                   "b'")
+                            ]
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 306 33 307 22
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 306 33 306 34 ]
+                             }
+                           (Tuple
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 307 5 307 22
+                                , srcInfoPoints =
+                                    [ SrcSpan "tests/examples/DerivingVia.hs" 307 5 307 6
+                                    , SrcSpan "tests/examples/DerivingVia.hs" 307 11 307 12
+                                    , SrcSpan "tests/examples/DerivingVia.hs" 307 21 307 22
+                                    ]
+                                }
+                              Boxed
+                              [ App
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 11
+                                    , srcInfoPoints = []
+                                    }
+                                  (App
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 9
+                                       , srcInfoPoints = []
+                                       }
+                                     (Var
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 7
+                                          , srcInfoPoints = []
+                                          }
+                                        (UnQual
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 7
+                                             , srcInfoPoints = []
+                                             }
+                                           (Ident
+                                              SrcSpanInfo
+                                                { srcInfoSpan =
+                                                    SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 307 6 307 7
+                                                , srcInfoPoints = []
+                                                }
+                                              "f")))
+                                     (Var
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 307 8 307 9
+                                          , srcInfoPoints = []
+                                          }
+                                        (UnQual
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan "tests/examples/DerivingVia.hs" 307 8 307 9
+                                             , srcInfoPoints = []
+                                             }
+                                           (Ident
+                                              SrcSpanInfo
+                                                { srcInfoSpan =
+                                                    SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 307 8 307 9
+                                                , srcInfoPoints = []
+                                                }
+                                              "a"))))
+                                  (Var
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 307 10 307 11
+                                       , srcInfoPoints = []
+                                       }
+                                     (UnQual
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 307 10 307 11
+                                          , srcInfoPoints = []
+                                          }
+                                        (Ident
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 307 10 307 11
+                                             , srcInfoPoints = []
+                                             }
+                                           "b")))
+                              , App
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 307 13 307 21
+                                    , srcInfoPoints = []
+                                    }
+                                  (App
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 307 13 307 18
+                                       , srcInfoPoints = []
+                                       }
+                                     (Var
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 307 13 307 15
+                                          , srcInfoPoints = []
+                                          }
+                                        (UnQual
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 307 13 307 15
+                                             , srcInfoPoints = []
+                                             }
+                                           (Ident
+                                              SrcSpanInfo
+                                                { srcInfoSpan =
+                                                    SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 307 13 307 15
+                                                , srcInfoPoints = []
+                                                }
+                                              "f'")))
+                                     (Var
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 307 16 307 18
+                                          , srcInfoPoints = []
+                                          }
+                                        (UnQual
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 307 16 307 18
+                                             , srcInfoPoints = []
+                                             }
+                                           (Ident
+                                              SrcSpanInfo
+                                                { srcInfoSpan =
+                                                    SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 307 16 307 18
+                                                , srcInfoPoints = []
+                                                }
+                                              "a'"))))
+                                  (Var
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 307 19 307 21
+                                       , srcInfoPoints = []
+                                       }
+                                     (UnQual
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 307 19 307 21
+                                          , srcInfoPoints = []
+                                          }
+                                        (Ident
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 307 19 307 21
+                                             , srcInfoPoints = []
+                                             }
+                                           "b'")))
+                              ]))
+                        Nothing
+                    ])
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 309 1 310 50
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 309 25 309 26 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 309 1 309 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 24
+               , srcInfoPoints = []
+               }
+             (DHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 22
+                  , srcInfoPoints = []
+                  }
+                (DHApp
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 20
+                     , srcInfoPoints = []
+                     }
+                   (DHead
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 18
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 18
+                           , srcInfoPoints = []
+                           }
+                         "WrapBiapp"))
+                   (UnkindedVar
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 309 19 309 20
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 309 19 309 20
+                           , srcInfoPoints = []
+                           }
+                         "p")))
+                (UnkindedVar
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 309 21 309 22
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 309 21 309 22
+                        , srcInfoPoints = []
+                        }
+                      "a")))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 309 23 309 24
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 309 23 309 24
+                     , srcInfoPoints = []
+                     }
+                   "b")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 309 27 309 43
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 309 27 309 43
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 309 27 309 35
+                      , srcInfoPoints = []
+                      }
+                    "WrapBiap")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 309 36 309 43
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 309 36 309 37
+                           , SrcSpan "tests/examples/DerivingVia.hs" 309 42 309 43
+                           ]
+                       }
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 42
+                          , srcInfoPoints = []
+                          }
+                        (TyApp
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 40
+                             , srcInfoPoints = []
+                             }
+                           (TyVar
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 38
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 38
+                                   , srcInfoPoints = []
+                                   }
+                                 "p"))
+                           (TyVar
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 309 39 309 40
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 309 39 309 40
+                                   , srcInfoPoints = []
+                                   }
+                                 "a")))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 309 41 309 42
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 309 41 309 42
+                                , srcInfoPoints = []
+                                }
+                              "b")))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 310 3 310 50
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 310 3 310 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 310 20 310 21
+                    , SrcSpan "tests/examples/DerivingVia.hs" 310 30 310 31
+                    , SrcSpan "tests/examples/DerivingVia.hs" 310 45 310 46
+                    , SrcSpan "tests/examples/DerivingVia.hs" 310 49 310 50
+                    ]
+                }
+              (Just
+                 (DerivNewtype
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 310 12 310 19
+                      , srcInfoPoints = []
+                      }))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30
+                             , srcInfoPoints = []
+                             }
+                           "Bifunctor")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45
+                             , srcInfoPoints = []
+                             }
+                           "Biapplicative")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49
+                             , srcInfoPoints = []
+                             }
+                           "Eq")))
+              ]
+          ]
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 312 1 321 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 312 1 312 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 312 67 312 72
+                , SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 321 1 321 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 312 10 312 66
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 312 10 312 44
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 312 10 312 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 312 26 312 27
+                         , SrcSpan "tests/examples/DerivingVia.hs" 312 33 312 34
+                         , SrcSpan "tests/examples/DerivingVia.hs" 312 40 312 41
+                         , SrcSpan "tests/examples/DerivingVia.hs" 312 42 312 44
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 26
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 26
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 26
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 24
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "Biapplicative")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 312 25 312 26
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 312 25 312 26
+                                  , srcInfoPoints = []
+                                  }
+                                "p")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 33
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 33
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 33
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 31
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 31
+                                     , srcInfoPoints = []
+                                     }
+                                   "Num")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 312 32 312 33
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 312 32 312 33
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 40
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 40
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 40
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 38
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 38
+                                     , srcInfoPoints = []
+                                     }
+                                   "Num")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 312 39 312 40
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 312 39 312 40
+                                  , srcInfoPoints = []
+                                  }
+                                "b")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 66
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 48
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 48
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 48
+                           , srcInfoPoints = []
+                           }
+                         "Num")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 312 49 312 66
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 312 49 312 50
+                         , SrcSpan "tests/examples/DerivingVia.hs" 312 65 312 66
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 65
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 63
+                           , srcInfoPoints = []
+                           }
+                         (TyApp
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 61
+                              , srcInfoPoints = []
+                              }
+                            (TyCon
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 59
+                                 , srcInfoPoints = []
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 59
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 59
+                                       , srcInfoPoints = []
+                                       }
+                                     "WrapBiapp")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 312 60 312 61
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 312 60 312 61
+                                    , srcInfoPoints = []
+                                    }
+                                  "p")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 312 62 312 63
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 312 62 312 63
+                                 , srcInfoPoints = []
+                                 }
+                               "a")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 312 64 312 65
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 312 64 312 65
+                              , srcInfoPoints = []
+                              }
+                            "b"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 25
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 25
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 6
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 4
+                             , SrcSpan "tests/examples/DerivingVia.hs" 313 4 313 5
+                             , SrcSpan "tests/examples/DerivingVia.hs" 313 5 313 6
+                             ]
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 313 4 313 5
+                            , srcInfoPoints = []
+                            }
+                          "+"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 313 7 313 25
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 313 7 313 8 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 25
+                            , srcInfoPoints = []
+                            }
+                          (App
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 21
+                               , srcInfoPoints = []
+                               }
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 17
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 17
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 17
+                                        , srcInfoPoints = []
+                                        }
+                                      "biliftA2")))
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 21
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 19
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 313 19 313 20
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 313 20 313 21
+                                      ]
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 21
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 19
+                                         , SrcSpan "tests/examples/DerivingVia.hs" 313 19 313 20
+                                         , SrcSpan "tests/examples/DerivingVia.hs" 313 20 313 21
+                                         ]
+                                     }
+                                   (Symbol
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 313 19 313 20
+                                        , srcInfoPoints = []
+                                        }
+                                      "+"))))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 25
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 23
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 313 23 313 24
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 313 24 313 25
+                                   ]
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 25
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 23
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 313 23 313 24
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 313 24 313 25
+                                      ]
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 313 23 313 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "+")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 25
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 25
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 6
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 4
+                             , SrcSpan "tests/examples/DerivingVia.hs" 314 4 314 5
+                             , SrcSpan "tests/examples/DerivingVia.hs" 314 5 314 6
+                             ]
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 314 4 314 5
+                            , srcInfoPoints = []
+                            }
+                          "-"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 314 7 314 25
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 314 7 314 8 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 25
+                            , srcInfoPoints = []
+                            }
+                          (App
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 21
+                               , srcInfoPoints = []
+                               }
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 17
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 17
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 17
+                                        , srcInfoPoints = []
+                                        }
+                                      "biliftA2")))
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 21
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 19
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 314 19 314 20
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 314 20 314 21
+                                      ]
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 21
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 19
+                                         , SrcSpan "tests/examples/DerivingVia.hs" 314 19 314 20
+                                         , SrcSpan "tests/examples/DerivingVia.hs" 314 20 314 21
+                                         ]
+                                     }
+                                   (Symbol
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 314 19 314 20
+                                        , srcInfoPoints = []
+                                        }
+                                      "*"))))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 25
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 23
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 314 23 314 24
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 314 24 314 25
+                                   ]
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 25
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 23
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 314 23 314 24
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 314 24 314 25
+                                      ]
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 314 23 314 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "*")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 25
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 25
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 6
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 4
+                             , SrcSpan "tests/examples/DerivingVia.hs" 315 4 315 5
+                             , SrcSpan "tests/examples/DerivingVia.hs" 315 5 315 6
+                             ]
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 315 4 315 5
+                            , srcInfoPoints = []
+                            }
+                          "*"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 315 7 315 25
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 315 7 315 8 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 25
+                            , srcInfoPoints = []
+                            }
+                          (App
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 21
+                               , srcInfoPoints = []
+                               }
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 17
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 17
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 17
+                                        , srcInfoPoints = []
+                                        }
+                                      "biliftA2")))
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 21
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 19
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 315 19 315 20
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 315 20 315 21
+                                      ]
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 21
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 19
+                                         , SrcSpan "tests/examples/DerivingVia.hs" 315 19 315 20
+                                         , SrcSpan "tests/examples/DerivingVia.hs" 315 20 315 21
+                                         ]
+                                     }
+                                   (Symbol
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 315 19 315 20
+                                        , srcInfoPoints = []
+                                        }
+                                      "*"))))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 25
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 23
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 315 23 315 24
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 315 24 315 25
+                                   ]
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 25
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 23
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 315 23 315 24
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 315 24 315 25
+                                      ]
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 315 23 315 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "*")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 31
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 31
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 9
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 9
+                            , srcInfoPoints = []
+                            }
+                          "negate"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 316 10 316 31
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 316 10 316 11 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 31
+                            , srcInfoPoints = []
+                            }
+                          (App
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 24
+                               , srcInfoPoints = []
+                               }
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 17
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 17
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 17
+                                        , srcInfoPoints = []
+                                        }
+                                      "bimap")))
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 316 18 316 24
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 316 18 316 24
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 316 18 316 24
+                                        , srcInfoPoints = []
+                                        }
+                                      "negate"))))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 316 25 316 31
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 316 25 316 31
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 316 25 316 31
+                                     , srcInfoPoints = []
+                                     }
+                                   "negate")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 22
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 22
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 6
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 6
+                            , srcInfoPoints = []
+                            }
+                          "abs"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 317 7 317 22
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 317 7 317 8 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 22
+                            , srcInfoPoints = []
+                            }
+                          (App
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 18
+                               , srcInfoPoints = []
+                               }
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 14
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 14
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 14
+                                        , srcInfoPoints = []
+                                        }
+                                      "bimap")))
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 317 15 317 18
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 317 15 317 18
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 317 15 317 18
+                                        , srcInfoPoints = []
+                                        }
+                                      "abs"))))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 317 19 317 22
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 317 19 317 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 317 19 317 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "abs")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 31
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 31
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 9
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 9
+                            , srcInfoPoints = []
+                            }
+                          "signum"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 318 10 318 31
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 318 10 318 11 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 31
+                            , srcInfoPoints = []
+                            }
+                          (App
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 24
+                               , srcInfoPoints = []
+                               }
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 17
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 17
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 17
+                                        , srcInfoPoints = []
+                                        }
+                                      "bimap")))
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 318 18 318 24
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 318 18 318 24
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 318 18 318 24
+                                        , srcInfoPoints = []
+                                        }
+                                      "signum"))))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 318 25 318 31
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 318 25 318 31
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 318 25 318 31
+                                     , srcInfoPoints = []
+                                     }
+                                   "signum")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 55
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 55
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 55
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 14
+                             , srcInfoPoints = []
+                             }
+                           "fromInteger")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 319 15 319 16
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 319 15 319 16
+                                 , srcInfoPoints = []
+                                 }
+                               "n")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 319 17 319 55
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 319 17 319 18 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 55
+                                , srcInfoPoints = []
+                                }
+                              (App
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 32
+                                   , srcInfoPoints = []
+                                   }
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 30
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 30
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 319 19 319 30
+                                            , srcInfoPoints = []
+                                            }
+                                          "fromInteger")))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 319 31 319 32
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 319 31 319 32
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 319 31 319 32
+                                            , srcInfoPoints = []
+                                            }
+                                          "n"))))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 41
+                                   , srcInfoPoints =
+                                       [ SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 34
+                                       , SrcSpan "tests/examples/DerivingVia.hs" 319 34 319 40
+                                       , SrcSpan "tests/examples/DerivingVia.hs" 319 40 319 41
+                                       ]
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 41
+                                      , srcInfoPoints =
+                                          [ SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 34
+                                          , SrcSpan "tests/examples/DerivingVia.hs" 319 34 319 40
+                                          , SrcSpan "tests/examples/DerivingVia.hs" 319 40 319 41
+                                          ]
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 319 34 319 40
+                                         , srcInfoPoints = []
+                                         }
+                                       "bipure")))
+                              (App
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 319 42 319 55
+                                   , srcInfoPoints = []
+                                   }
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 319 42 319 53
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 319 42 319 53
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 319 42 319 53
+                                            , srcInfoPoints = []
+                                            }
+                                          "fromInteger")))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 319 54 319 55
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 319 54 319 55
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 319 54 319 55
+                                            , srcInfoPoints = []
+                                            }
+                                          "n"))))))
+                        Nothing
+                    ])
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 321 1 322 18
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 321 14 321 15 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 321 1 321 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHead
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 321 9 321 13
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 321 9 321 13
+                  , srcInfoPoints = []
+                  }
+                "INT2"))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 321 16 321 31
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 321 16 321 31
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 321 16 321 20
+                      , srcInfoPoints = []
+                      }
+                    "INT2")
+                 [ TyTuple
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 321 21 321 31
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 321 21 321 22
+                           , SrcSpan "tests/examples/DerivingVia.hs" 321 25 321 26
+                           , SrcSpan "tests/examples/DerivingVia.hs" 321 30 321 31
+                           ]
+                       }
+                     Boxed
+                     [ TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 321 22 321 25
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 321 22 321 25
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 321 22 321 25
+                                 , srcInfoPoints = []
+                                 }
+                               "Int"))
+                     , TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 321 27 321 30
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 321 27 321 30
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 321 27 321 30
+                                 , srcInfoPoints = []
+                                 }
+                               "Int"))
+                     ]
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 322 3 322 18
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 322 3 322 11 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 322 19 322 22
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 322 23 322 62
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 322 23 322 24
+                             , SrcSpan "tests/examples/DerivingVia.hs" 322 61 322 62
+                             ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 61
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 37
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 37
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 37
+                                     , srcInfoPoints = []
+                                     }
+                                   "WrappedNumEq2")))
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 322 38 322 61
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 322 38 322 39
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 322 60 322 61
+                                   ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 60
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 56
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 52
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyCon
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 48
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 322 39 322 48
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 322 39 322 48
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "WrapBiapp")))
+                                      (TyCon
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 322 49 322 52
+                                           , srcInfoPoints =
+                                               [ SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 322 49 322 50
+                                               , SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 322 50 322 51
+                                               , SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 322 51 322 52
+                                               ]
+                                           }
+                                         (Special
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 322 49 322 52
+                                              , srcInfoPoints =
+                                                  [ SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 322 49 322 50
+                                                  , SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 322 50 322 51
+                                                  , SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 322 51 322 52
+                                                  ]
+                                              }
+                                            (TupleCon
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 322 49 322 52
+                                                 , srcInfoPoints =
+                                                     [ SrcSpan
+                                                         "tests/examples/DerivingVia.hs"
+                                                         322
+                                                         49
+                                                         322
+                                                         50
+                                                     , SrcSpan
+                                                         "tests/examples/DerivingVia.hs"
+                                                         322
+                                                         50
+                                                         322
+                                                         51
+                                                     , SrcSpan
+                                                         "tests/examples/DerivingVia.hs"
+                                                         322
+                                                         51
+                                                         322
+                                                         52
+                                                     ]
+                                                 }
+                                               Boxed
+                                               2))))
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 322 53 322 56
+                                        , srcInfoPoints = []
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 322 53 322 56
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 322 53 322 56
+                                              , srcInfoPoints = []
+                                              }
+                                            "Int"))))
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 322 57 322 60
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 322 57 322 60
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 322 57 322 60
+                                           , srcInfoPoints = []
+                                           }
+                                         "Int")))))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18
+                             , srcInfoPoints = []
+                             }
+                           "IsZero")))
+              ]
+          ]
+      , ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 327 1 328 20
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 327 1 327 6
+                , SrcSpan "tests/examples/DerivingVia.hs" 327 32 327 37
+                , SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 330 1 330 0
+                ]
+            }
+          (Just
+             (CxSingle
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 18
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingVia.hs" 327 16 327 18 ]
+                  }
+                (TypeA
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 18
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 327 16 327 18 ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 18
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 327 16 327 18 ]
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 18
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 327 16 327 18 ]
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 13
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 13
+                                 , srcInfoPoints = []
+                                 }
+                               "Monoid")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 327 14 327 15
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 327 14 327 15
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 327 19 327 31
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 327 19 327 29
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 327 19 327 29
+                     , srcInfoPoints = []
+                     }
+                   "MonoidNull"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 327 30 327 31
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 327 30 327 31
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          []
+          (Just
+             [ ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 20
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 328 8 328 10 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 20
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 328 8 328 10 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 7
+                          , srcInfoPoints = []
+                          }
+                        "null"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 328 11 328 20
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 328 13 328 15 ]
+                         }
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 328 11 328 12
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 328 11 328 12
+                               , srcInfoPoints = []
+                               }
+                             "a"))
+                       (TyCon
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 328 16 328 20
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 328 16 328 20
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 328 16 328 20
+                                  , srcInfoPoints = []
+                                  }
+                                "Bool")))))
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 330 1 330 62
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 330 22 330 23 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 330 1 330 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 330 9 330 21
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 330 9 330 19
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 330 9 330 19
+                     , srcInfoPoints = []
+                     }
+                   "WrpMonNull"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 330 20 330 21
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 330 20 330 21
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 330 24 330 29
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 330 24 330 29
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 330 24 330 27
+                      , srcInfoPoints = []
+                      }
+                    "WRM")
+                 [ TyVar
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 330 28 330 29
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 330 28 330 29
+                          , srcInfoPoints = []
+                          }
+                        "a")
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 330 30 330 62
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 330 30 330 38
+                    , SrcSpan "tests/examples/DerivingVia.hs" 330 39 330 40
+                    , SrcSpan "tests/examples/DerivingVia.hs" 330 42 330 43
+                    , SrcSpan "tests/examples/DerivingVia.hs" 330 53 330 54
+                    , SrcSpan "tests/examples/DerivingVia.hs" 330 61 330 62
+                    ]
+                }
+              Nothing
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42
+                             , srcInfoPoints = []
+                             }
+                           "Eq")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53
+                             , srcInfoPoints = []
+                             }
+                           "Semigroup")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61
+                             , srcInfoPoints = []
+                             }
+                           "Monoid")))
+              ]
+          ]
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 332 1 336 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 332 1 332 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 332 56 332 61
+                , SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 336 1 336 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 332 10 332 55
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 332 10 332 29
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 332 10 332 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 332 15 332 16
+                         , SrcSpan "tests/examples/DerivingVia.hs" 332 25 332 26
+                         , SrcSpan "tests/examples/DerivingVia.hs" 332 27 332 29
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 15
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 15
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 13
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 13
+                                     , srcInfoPoints = []
+                                     }
+                                   "Eq")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 332 14 332 15
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 332 14 332 15
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 25
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 25
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 25
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 23
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 23
+                                     , srcInfoPoints = []
+                                     }
+                                   "Monoid")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 332 24 332 25
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 332 24 332 25
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 55
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 40
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 40
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 40
+                           , srcInfoPoints = []
+                           }
+                         "MonoidNull")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 332 41 332 55
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 332 41 332 42
+                         , SrcSpan "tests/examples/DerivingVia.hs" 332 54 332 55
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 54
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 52
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 52
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 52
+                                 , srcInfoPoints = []
+                                 }
+                               "WrpMonNull")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 332 53 332 54
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 332 53 332 54
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 31
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 333 8 333 10 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 31
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 333 8 333 10 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 7
+                          , srcInfoPoints = []
+                          }
+                        "null"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 31
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 333 24 333 26 ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 23
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 21
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 21
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 21
+                                     , srcInfoPoints = []
+                                     }
+                                   "WrpMonNull")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 333 22 333 23
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 333 22 333 23
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                       (TyCon
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 333 27 333 31
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 333 27 333 31
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 333 27 333 31
+                                  , srcInfoPoints = []
+                                  }
+                                "Bool")))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 21
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 21
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 7
+                            , srcInfoPoints = []
+                            }
+                          "null"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 334 8 334 21
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 334 8 334 9 ]
+                         }
+                       (RightSection
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 334 10 334 21
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 334 10 334 11
+                                , SrcSpan "tests/examples/DerivingVia.hs" 334 20 334 21
+                                ]
+                            }
+                          (QVarOp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 334 11 334 13
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 334 11 334 13
+                                  , srcInfoPoints = []
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 334 11 334 13
+                                     , srcInfoPoints = []
+                                     }
+                                   "==")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 334 14 334 20
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 334 14 334 20
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 334 14 334 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "mempty")))))
+                    Nothing)
+             ])
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 336 1 336 54
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 336 1 336 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 336 31 336 39
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 336 10 336 13
+                  , srcInfoPoints = []
+                  }
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 336 14 336 30
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 336 14 336 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 336 29 336 30
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 29
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 25
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 25
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 25
+                                 , srcInfoPoints = []
+                                 }
+                               "WrpMonNull")))
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 336 26 336 29
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 336 26 336 29
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 336 26 336 29
+                                 , srcInfoPoints = []
+                                 }
+                               "Any")))))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 54
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 54
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 50
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 50
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 50
+                           , srcInfoPoints = []
+                           }
+                         "MonoidNull")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 336 51 336 54
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 336 51 336 54
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 336 51 336 54
+                           , srcInfoPoints = []
+                           }
+                         "Any")))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 337 1 337 53
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 337 1 337 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 337 31 337 39
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 337 10 337 13
+                  , srcInfoPoints = []
+                  }
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 16
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 337 15 337 16
+                         ]
+                     }
+                   (Special
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 16
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 15
+                            , SrcSpan "tests/examples/DerivingVia.hs" 337 15 337 16
+                            ]
+                        }
+                      (UnitCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 16
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 15
+                               , SrcSpan "tests/examples/DerivingVia.hs" 337 15 337 16
+                               ]
+                           })))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 53
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 53
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 50
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 50
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 50
+                           , srcInfoPoints = []
+                           }
+                         "MonoidNull")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 53
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 52
+                         , SrcSpan "tests/examples/DerivingVia.hs" 337 52 337 53
+                         ]
+                     }
+                   (Special
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 53
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 52
+                            , SrcSpan "tests/examples/DerivingVia.hs" 337 52 337 53
+                            ]
+                        }
+                      (UnitCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 53
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 52
+                               , SrcSpan "tests/examples/DerivingVia.hs" 337 52 337 53
+                               ]
+                           })))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 338 1 338 59
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 338 1 338 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 338 31 338 39
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 338 10 338 13
+                  , srcInfoPoints = []
+                  }
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 338 14 338 22
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 338 14 338 22
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 338 14 338 22
+                           , srcInfoPoints = []
+                           }
+                         "Ordering")))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 59
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 59
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 50
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 50
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 50
+                           , srcInfoPoints = []
+                           }
+                         "MonoidNull")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 338 51 338 59
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 338 51 338 59
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 338 51 338 59
+                           , srcInfoPoints = []
+                           }
+                         "Ordering")))))
+      , ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 345 1 348 26
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 345 1 345 6
+                , SrcSpan "tests/examples/DerivingVia.hs" 345 17 345 22
+                , SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 350 1 350 0
+                ]
+            }
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 345 7 345 16
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 345 7 345 14
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 345 7 345 14
+                     , srcInfoPoints = []
+                     }
+                   "Lattice"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 345 15 345 16
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 345 15 345 16
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          []
+          (Just
+             [ ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 23
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 346 9 346 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 23
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 346 9 346 11 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 6
+                          , srcInfoPoints = []
+                          }
+                        "sup"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 346 12 346 23
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 346 14 346 16 ]
+                         }
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 346 12 346 13
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 346 12 346 13
+                               , srcInfoPoints = []
+                               }
+                             "a"))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 346 17 346 23
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 346 19 346 21 ]
+                            }
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 346 17 346 18
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 346 17 346 18
+                                  , srcInfoPoints = []
+                                  }
+                                "a"))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 346 22 346 23
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 346 22 346 23
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))))
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 26
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 347 9 347 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 26
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 347 9 347 11 ]
+                      }
+                    [ Symbol
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 8
+                          , srcInfoPoints =
+                              [ SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 4
+                              , SrcSpan "tests/examples/DerivingVia.hs" 347 4 347 7
+                              , SrcSpan "tests/examples/DerivingVia.hs" 347 7 347 8
+                              ]
+                          }
+                        ".>="
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 347 12 347 26
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 347 14 347 16 ]
+                         }
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 347 12 347 13
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 347 12 347 13
+                               , srcInfoPoints = []
+                               }
+                             "a"))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 347 17 347 26
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 347 19 347 21 ]
+                            }
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 347 17 347 18
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 347 17 347 18
+                                  , srcInfoPoints = []
+                                  }
+                                "a"))
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 347 22 347 26
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 347 22 347 26
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 347 22 347 26
+                                     , srcInfoPoints = []
+                                     }
+                                   "Bool"))))))
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 26
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 348 9 348 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 26
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 348 9 348 11 ]
+                      }
+                    [ Symbol
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 7
+                          , srcInfoPoints =
+                              [ SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 4
+                              , SrcSpan "tests/examples/DerivingVia.hs" 348 4 348 6
+                              , SrcSpan "tests/examples/DerivingVia.hs" 348 6 348 7
+                              ]
+                          }
+                        ".>"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 348 12 348 26
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 348 14 348 16 ]
+                         }
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 348 12 348 13
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 348 12 348 13
+                               , srcInfoPoints = []
+                               }
+                             "a"))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 348 17 348 26
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 348 19 348 21 ]
+                            }
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 348 17 348 18
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 348 17 348 18
+                                  , srcInfoPoints = []
+                                  }
+                                "a"))
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 348 22 348 26
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 348 22 348 26
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 348 22 348 26
+                                     , srcInfoPoints = []
+                                     }
+                                   "Bool"))))))
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 350 1 351 29
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 350 19 350 20 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 350 1 350 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 350 9 350 18
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 350 9 350 16
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 350 9 350 16
+                     , srcInfoPoints = []
+                     }
+                   "WrapOrd"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 350 17 350 18
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 350 17 350 18
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 350 21 350 33
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 350 21 350 33
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 350 21 350 31
+                      , srcInfoPoints = []
+                      }
+                    "WrappedOrd")
+                 [ TyVar
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 350 32 350 33
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 350 32 350 33
+                          , srcInfoPoints = []
+                          }
+                        "a")
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 351 3 351 29
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 351 3 351 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 351 20 351 21
+                    , SrcSpan "tests/examples/DerivingVia.hs" 351 23 351 24
+                    , SrcSpan "tests/examples/DerivingVia.hs" 351 28 351 29
+                    ]
+                }
+              (Just
+                 (DerivNewtype
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 351 12 351 19
+                      , srcInfoPoints = []
+                      }))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23
+                             , srcInfoPoints = []
+                             }
+                           "Eq")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28
+                             , srcInfoPoints = []
+                             }
+                           "Ord")))
+              ]
+          ]
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 353 1 358 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 353 1 353 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 353 39 353 44
+                , SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 358 1 358 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 38
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxSingle
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 18
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 353 16 353 18 ]
+                     }
+                   (TypeA
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 18
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 353 16 353 18 ]
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 18
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 353 16 353 18 ]
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 18
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 353 16 353 18 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 13
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 13
+                                    , srcInfoPoints = []
+                                    }
+                                  "Ord")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 353 14 353 15
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 353 14 353 15
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))))))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 38
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 26
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 26
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 26
+                           , srcInfoPoints = []
+                           }
+                         "Lattice")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 353 27 353 38
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 353 27 353 28
+                         , SrcSpan "tests/examples/DerivingVia.hs" 353 37 353 38
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 37
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 35
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 35
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 35
+                                 , srcInfoPoints = []
+                                 }
+                               "WrapOrd")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 353 36 353 37
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 353 36 353 37
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 14
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 14
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 6
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 6
+                            , srcInfoPoints = []
+                            }
+                          "sup"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 354 9 354 14
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 354 9 354 10 ]
+                         }
+                       (Var
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 354 11 354 14
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 354 11 354 14
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 354 11 354 14
+                                  , srcInfoPoints = []
+                                  }
+                                "max"))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 15
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 15
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 8
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 4
+                             , SrcSpan "tests/examples/DerivingVia.hs" 355 4 355 7
+                             , SrcSpan "tests/examples/DerivingVia.hs" 355 7 355 8
+                             ]
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 355 4 355 7
+                            , srcInfoPoints = []
+                            }
+                          ".>="))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 355 9 355 15
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 355 9 355 10 ]
+                         }
+                       (Var
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 15
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 12
+                                , SrcSpan "tests/examples/DerivingVia.hs" 355 12 355 14
+                                , SrcSpan "tests/examples/DerivingVia.hs" 355 14 355 15
+                                ]
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 15
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 12
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 355 12 355 14
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 355 14 355 15
+                                   ]
+                               }
+                             (Symbol
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 355 12 355 14
+                                  , srcInfoPoints = []
+                                  }
+                                ">="))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 14
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 14
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 7
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 4
+                             , SrcSpan "tests/examples/DerivingVia.hs" 356 4 356 6
+                             , SrcSpan "tests/examples/DerivingVia.hs" 356 6 356 7
+                             ]
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 356 4 356 6
+                            , srcInfoPoints = []
+                            }
+                          ".>"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 356 9 356 14
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 356 9 356 10 ]
+                         }
+                       (Var
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 14
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 12
+                                , SrcSpan "tests/examples/DerivingVia.hs" 356 12 356 13
+                                , SrcSpan "tests/examples/DerivingVia.hs" 356 13 356 14
+                                ]
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 14
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 12
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 356 12 356 13
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 356 13 356 14
+                                   ]
+                               }
+                             (Symbol
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 356 12 356 13
+                                  , srcInfoPoints = []
+                                  }
+                                ">"))))
+                    Nothing)
+             ])
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 358 1 358 59
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 358 1 358 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 358 21 358 29
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 358 10 358 13
+                  , srcInfoPoints = []
+                  }
+                (TyList
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 358 14 358 17
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 358 14 358 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 358 16 358 17
+                         ]
+                     }
+                   (TyVar
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 358 15 358 16
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 358 15 358 16
+                           , srcInfoPoints = []
+                           }
+                         "a")))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 59
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxSingle
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 47
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 358 45 358 47 ]
+                     }
+                   (TypeA
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 47
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 358 45 358 47 ]
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 47
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 358 45 358 47 ]
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 47
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 358 45 358 47 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 33
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 33
+                                    , srcInfoPoints = []
+                                    }
+                                  "Ord")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 358 34 358 35
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 358 34 358 35
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))))))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 59
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 55
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 55
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 55
+                           , srcInfoPoints = []
+                           }
+                         "Lattice")))
+                (TyList
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 358 56 358 59
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 358 56 358 57
+                         , SrcSpan "tests/examples/DerivingVia.hs" 358 58 358 59
+                         ]
+                     }
+                   (TyVar
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 358 57 358 58
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 358 57 358 58
+                           , srcInfoPoints = []
+                           }
+                         "a")))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 359 1 359 62
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 359 1 359 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 359 21 359 29
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 359 10 359 13
+                  , srcInfoPoints = []
+                  }
+                (TyTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 359 14 359 20
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 359 14 359 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 359 16 359 17
+                         , SrcSpan "tests/examples/DerivingVia.hs" 359 19 359 20
+                         ]
+                     }
+                   Boxed
+                   [ TyVar
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 359 15 359 16
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 359 15 359 16
+                            , srcInfoPoints = []
+                            }
+                          "a")
+                   , TyVar
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 359 18 359 19
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 359 18 359 19
+                            , srcInfoPoints = []
+                            }
+                          "b")
+                   ])))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 359 30 359 62
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 359 30 359 47
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 359 30 359 31
+                         , SrcSpan "tests/examples/DerivingVia.hs" 359 36 359 37
+                         , SrcSpan "tests/examples/DerivingVia.hs" 359 43 359 44
+                         , SrcSpan "tests/examples/DerivingVia.hs" 359 45 359 47
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 36
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 36
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 36
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 34
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 34
+                                     , srcInfoPoints = []
+                                     }
+                                   "Ord")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 359 35 359 36
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 359 35 359 36
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 43
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 43
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 43
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 41
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 41
+                                     , srcInfoPoints = []
+                                     }
+                                   "Ord")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 359 42 359 43
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 359 42 359 43
+                                  , srcInfoPoints = []
+                                  }
+                                "b")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 62
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 55
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 55
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 55
+                           , srcInfoPoints = []
+                           }
+                         "Lattice")))
+                (TyTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 359 56 359 62
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 359 56 359 57
+                         , SrcSpan "tests/examples/DerivingVia.hs" 359 58 359 59
+                         , SrcSpan "tests/examples/DerivingVia.hs" 359 61 359 62
+                         ]
+                     }
+                   Boxed
+                   [ TyVar
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 359 57 359 58
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 359 57 359 58
+                            , srcInfoPoints = []
+                            }
+                          "a")
+                   , TyVar
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 359 60 359 61
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 359 60 359 61
+                            , srcInfoPoints = []
+                            }
+                          "b")
+                   ])))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 361 1 361 40
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 361 1 361 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 361 19 361 27
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 361 10 361 13
+                  , srcInfoPoints = []
+                  }
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 361 14 361 18
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 361 14 361 18
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 361 14 361 18
+                           , srcInfoPoints = []
+                           }
+                         "Bool")))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 40
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 40
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 35
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 35
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 35
+                           , srcInfoPoints = []
+                           }
+                         "Lattice")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 361 36 361 40
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 361 36 361 40
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 361 36 361 40
+                           , srcInfoPoints = []
+                           }
+                         "Bool")))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 363 1 363 40
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 363 1 363 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 363 19 363 27
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 363 10 363 13
+                  , srcInfoPoints = []
+                  }
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 363 14 363 18
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 363 14 363 18
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 363 14 363 18
+                           , srcInfoPoints = []
+                           }
+                         "Char")))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 40
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 40
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 35
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 35
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 35
+                           , srcInfoPoints = []
+                           }
+                         "Lattice")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 363 36 363 40
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 363 36 363 40
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 363 36 363 40
+                           , srcInfoPoints = []
+                           }
+                         "Char")))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 365 1 365 38
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 365 1 365 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 365 18 365 26
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 365 10 365 13
+                  , srcInfoPoints = []
+                  }
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 365 14 365 17
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 365 14 365 17
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 365 14 365 17
+                           , srcInfoPoints = []
+                           }
+                         "Int")))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 38
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 38
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 34
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 34
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 34
+                           , srcInfoPoints = []
+                           }
+                         "Lattice")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 365 35 365 38
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 365 35 365 38
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 365 35 365 38
+                           , srcInfoPoints = []
+                           }
+                         "Int")))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 367 1 367 46
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 367 1 367 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 367 22 367 30
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 367 10 367 13
+                  , srcInfoPoints = []
+                  }
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 367 14 367 21
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 367 14 367 21
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 367 14 367 21
+                           , srcInfoPoints = []
+                           }
+                         "Integer")))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 46
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 46
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 38
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 38
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 38
+                           , srcInfoPoints = []
+                           }
+                         "Lattice")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 367 39 367 46
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 367 39 367 46
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 367 39 367 46
+                           , srcInfoPoints = []
+                           }
+                         "Integer")))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 369 1 369 42
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 369 1 369 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 369 20 369 28
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 369 10 369 13
+                  , srcInfoPoints = []
+                  }
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 369 14 369 19
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 369 14 369 19
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 369 14 369 19
+                           , srcInfoPoints = []
+                           }
+                         "Float")))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 42
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 42
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 36
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 36
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 36
+                           , srcInfoPoints = []
+                           }
+                         "Lattice")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 369 37 369 42
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 369 37 369 42
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 369 37 369 42
+                           , srcInfoPoints = []
+                           }
+                         "Float")))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 371 1 371 44
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 371 1 371 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 371 21 371 29
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 371 10 371 13
+                  , srcInfoPoints = []
+                  }
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 371 14 371 20
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 371 14 371 20
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 371 14 371 20
+                           , srcInfoPoints = []
+                           }
+                         "Double")))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 44
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 44
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 37
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 37
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 37
+                           , srcInfoPoints = []
+                           }
+                         "Lattice")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 371 38 371 44
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 371 38 371 44
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 371 38 371 44
+                           , srcInfoPoints = []
+                           }
+                         "Double")))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 373 1 373 48
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 373 1 373 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 373 23 373 31
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 373 10 373 13
+                  , srcInfoPoints = []
+                  }
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 373 14 373 22
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 373 14 373 22
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 373 14 373 22
+                           , srcInfoPoints = []
+                           }
+                         "Rational")))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 48
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 48
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 39
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 39
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 39
+                           , srcInfoPoints = []
+                           }
+                         "Lattice")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 373 40 373 48
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 373 40 373 48
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 373 40 373 48
+                           , srcInfoPoints = []
+                           }
+                         "Rational")))))
+      , ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 380 1 386 47
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 380 1 380 6
+                , SrcSpan "tests/examples/DerivingVia.hs" 380 31 380 36
+                , SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 388 1 388 0
+                ]
+            }
+          (Just
+             (CxSingle
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 19
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingVia.hs" 380 17 380 19 ]
+                  }
+                (TypeA
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 19
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 380 17 380 19 ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 19
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 380 17 380 19 ]
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 19
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 380 17 380 19 ]
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 14
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 14
+                                 , srcInfoPoints = []
+                                 }
+                               "Functor")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 380 15 380 16
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 380 15 380 16
+                              , srcInfoPoints = []
+                              }
+                            "f"))))))
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 380 20 380 30
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 380 20 380 28
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 380 20 380 28
+                     , srcInfoPoints = []
+                     }
+                   "Additive"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 380 29 380 30
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 380 29 380 30
+                     , srcInfoPoints = []
+                     }
+                   "f")))
+          []
+          (Just
+             [ ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 23
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 381 8 381 10 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 23
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 381 8 381 10 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 7
+                          , srcInfoPoints = []
+                          }
+                        "zero"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 23
+                         , srcInfoPoints = []
+                         }
+                       Nothing
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 19
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 381 17 381 19 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 19
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 381 17 381 19 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 19
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 381 17 381 19 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 19
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 381 17 381 19
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 14
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 381 11 381 14
+                                              , srcInfoPoints = []
+                                              }
+                                            "Num")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 381 15 381 16
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 381 15 381 16
+                                           , srcInfoPoints = []
+                                           }
+                                         "a"))))))
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 381 20 381 23
+                            , srcInfoPoints = []
+                            }
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 381 20 381 21
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 381 20 381 21
+                                  , srcInfoPoints = []
+                                  }
+                                "f"))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 381 22 381 23
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 381 22 381 23
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))))
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 38
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 382 9 382 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 38
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 382 9 382 11 ]
+                      }
+                    [ Symbol
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 8
+                          , srcInfoPoints =
+                              [ SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 4
+                              , SrcSpan "tests/examples/DerivingVia.hs" 382 4 382 7
+                              , SrcSpan "tests/examples/DerivingVia.hs" 382 7 382 8
+                              ]
+                          }
+                        "^+^"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 38
+                         , srcInfoPoints = []
+                         }
+                       Nothing
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 20
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 382 18 382 20 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 20
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 382 18 382 20 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 20
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 382 18 382 20 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 20
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 382 18 382 20
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 15
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 382 12 382 15
+                                              , srcInfoPoints = []
+                                              }
+                                            "Num")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 382 16 382 17
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 382 16 382 17
+                                           , srcInfoPoints = []
+                                           }
+                                         "a"))))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 38
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 382 25 382 27 ]
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 24
+                               , srcInfoPoints = []
+                               }
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "f"))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 382 23 382 24
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 382 23 382 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")))
+                          (TyFun
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 38
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 382 32 382 34 ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 31
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 29
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 29
+                                        , srcInfoPoints = []
+                                        }
+                                      "f"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 382 30 382 31
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 382 30 382 31
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 382 35 382 38
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 382 35 382 36
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 382 35 382 36
+                                        , srcInfoPoints = []
+                                        }
+                                      "f"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 382 37 382 38
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 382 37 382 38
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))))))
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 21
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 21
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 8
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 4
+                             , SrcSpan "tests/examples/DerivingVia.hs" 383 4 383 7
+                             , SrcSpan "tests/examples/DerivingVia.hs" 383 7 383 8
+                             ]
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 383 4 383 7
+                            , srcInfoPoints = []
+                            }
+                          "^+^"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 383 9 383 21
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 383 9 383 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 21
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 17
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 17
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 17
+                                     , srcInfoPoints = []
+                                     }
+                                   "liftU2")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 21
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 19
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 383 19 383 20
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 383 20 383 21
+                                   ]
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 21
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 19
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 383 19 383 20
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 383 20 383 21
+                                      ]
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 383 19 383 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "+")))))
+                    Nothing)
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 38
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 384 9 384 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 38
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 384 9 384 11 ]
+                      }
+                    [ Symbol
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 8
+                          , srcInfoPoints =
+                              [ SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 4
+                              , SrcSpan "tests/examples/DerivingVia.hs" 384 4 384 7
+                              , SrcSpan "tests/examples/DerivingVia.hs" 384 7 384 8
+                              ]
+                          }
+                        "^-^"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 38
+                         , srcInfoPoints = []
+                         }
+                       Nothing
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 20
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 384 18 384 20 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 20
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 384 18 384 20 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 20
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 384 18 384 20 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 20
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 384 18 384 20
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 15
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 384 12 384 15
+                                              , srcInfoPoints = []
+                                              }
+                                            "Num")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 384 16 384 17
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 384 16 384 17
+                                           , srcInfoPoints = []
+                                           }
+                                         "a"))))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 38
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 384 25 384 27 ]
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 24
+                               , srcInfoPoints = []
+                               }
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "f"))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 384 23 384 24
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 384 23 384 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")))
+                          (TyFun
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 38
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 384 32 384 34 ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 31
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 29
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 29
+                                        , srcInfoPoints = []
+                                        }
+                                      "f"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 384 30 384 31
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 384 30 384 31
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 384 35 384 38
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 384 35 384 36
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 384 35 384 36
+                                        , srcInfoPoints = []
+                                        }
+                                      "f"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 384 37 384 38
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 384 37 384 38
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))))))
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 32
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 32
+                      , srcInfoPoints = []
+                      }
+                    [ InfixMatch
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 32
+                          , srcInfoPoints = []
+                          }
+                        (PVar
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 4
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 4
+                                , srcInfoPoints = []
+                                }
+                              "x"))
+                        (Symbol
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 385 5 385 8
+                             , srcInfoPoints = []
+                             }
+                           "^-^")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 385 9 385 10
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 385 9 385 10
+                                 , srcInfoPoints = []
+                                 }
+                               "y")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 385 11 385 32
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 385 11 385 12 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 32
+                                , srcInfoPoints = []
+                                }
+                              (Var
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 14
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 14
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 14
+                                         , srcInfoPoints = []
+                                         }
+                                       "x")))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 385 15 385 18
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 385 15 385 18
+                                      , srcInfoPoints = []
+                                      }
+                                    (Symbol
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 385 15 385 18
+                                         , srcInfoPoints = []
+                                         }
+                                       "^+^")))
+                              (App
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 385 19 385 32
+                                   , srcInfoPoints = []
+                                   }
+                                 (App
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 385 19 385 30
+                                      , srcInfoPoints = []
+                                      }
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 385 19 385 23
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 385 19 385 23
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 385 19 385 23
+                                               , srcInfoPoints = []
+                                               }
+                                             "fmap")))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 385 24 385 30
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 385 24 385 30
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 385 24 385 30
+                                               , srcInfoPoints = []
+                                               }
+                                             "negate"))))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 385 31 385 32
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 385 31 385 32
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 385 31 385 32
+                                            , srcInfoPoints = []
+                                            }
+                                          "y"))))))
+                        Nothing
+                    ])
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 47
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 386 10 386 12 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 47
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 386 10 386 12 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 9
+                          , srcInfoPoints = []
+                          }
+                        "liftU2"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 386 13 386 47
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 386 27 386 29 ]
+                         }
+                       (TyParen
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 386 13 386 26
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 386 13 386 14
+                                , SrcSpan "tests/examples/DerivingVia.hs" 386 25 386 26
+                                ]
+                            }
+                          (TyFun
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 386 14 386 25
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 386 16 386 18 ]
+                               }
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 386 14 386 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 14 386 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "a"))
+                             (TyFun
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 386 19 386 25
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 386 21 386 23 ]
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 19 386 20
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 386 19 386 20
+                                        , srcInfoPoints = []
+                                        }
+                                      "a"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 24 386 25
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 386 24 386 25
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 47
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 386 34 386 36 ]
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 33
+                               , srcInfoPoints = []
+                               }
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 31
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 31
+                                     , srcInfoPoints = []
+                                     }
+                                   "f"))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 386 32 386 33
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 32 386 33
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")))
+                          (TyFun
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 47
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 386 41 386 43 ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 40
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 38
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 38
+                                        , srcInfoPoints = []
+                                        }
+                                      "f"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 39 386 40
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 386 39 386 40
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 386 44 386 47
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 44 386 45
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 386 44 386 45
+                                        , srcInfoPoints = []
+                                        }
+                                      "f"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 46 386 47
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 386 46 386 47
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))))))
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 388 1 395 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 388 1 388 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 388 22 388 27
+                , SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 390 3 390 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 395 1 395 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 21
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 21
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 18
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 18
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 18
+                           , srcInfoPoints = []
+                           }
+                         "Additive")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 21
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 20
+                         , SrcSpan "tests/examples/DerivingVia.hs" 388 20 388 21
+                         ]
+                     }
+                   (Special
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 21
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 20
+                            , SrcSpan "tests/examples/DerivingVia.hs" 388 20 388 21
+                            ]
+                        }
+                      (ListCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 21
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 20
+                               , SrcSpan "tests/examples/DerivingVia.hs" 388 20 388 21
+                               ]
+                           })))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 12
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 12
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 7
+                            , srcInfoPoints = []
+                            }
+                          "zero"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 389 8 389 12
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 389 8 389 9 ]
+                         }
+                       (List
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 389 10 389 12
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 389 10 389 11
+                                , SrcSpan "tests/examples/DerivingVia.hs" 389 11 389 12
+                                ]
+                            }
+                          []))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 390 3 393 18
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 390 17 390 22 ]
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 390 3 393 18
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 390 17 390 22 ]
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 390 3 393 18
+                          , srcInfoPoints =
+                              [ SrcSpan "tests/examples/DerivingVia.hs" 390 17 390 22 ]
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 390 3 390 9
+                             , srcInfoPoints = []
+                             }
+                           "liftU2")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 390 10 390 11
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 390 10 390 11
+                                 , srcInfoPoints = []
+                                 }
+                               "f")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 390 12 390 16
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 390 12 390 13 ]
+                             }
+                           (Var
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 390 14 390 16
+                                , srcInfoPoints = []
+                                }
+                              (UnQual
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 390 14 390 16
+                                   , srcInfoPoints = []
+                                   }
+                                 (Ident
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 390 14 390 16
+                                      , srcInfoPoints = []
+                                      }
+                                    "go"))))
+                        (Just
+                           (BDecls
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 391 5 393 18
+                                , srcInfoPoints =
+                                    [ SrcSpan "tests/examples/DerivingVia.hs" 391 5 391 5
+                                    , SrcSpan "tests/examples/DerivingVia.hs" 392 5 392 5
+                                    , SrcSpan "tests/examples/DerivingVia.hs" 393 5 393 5
+                                    , SrcSpan "tests/examples/DerivingVia.hs" 395 1 395 0
+                                    ]
+                                }
+                              [ FunBind
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 391 5 393 18
+                                    , srcInfoPoints = []
+                                    }
+                                  [ Match
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 391 5 391 40
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 391 5 391 7
+                                           , srcInfoPoints = []
+                                           }
+                                         "go")
+                                      [ PParen
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 391 8 391 14
+                                            , srcInfoPoints =
+                                                [ SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 391 8 391 9
+                                                , SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 391 13 391 14
+                                                ]
+                                            }
+                                          (PInfixApp
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 391 9 391 13
+                                               , srcInfoPoints = []
+                                               }
+                                             (PVar
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs" 391 9 391 10
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Ident
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/DerivingVia.hs"
+                                                           391
+                                                           9
+                                                           391
+                                                           10
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   "x"))
+                                             (Special
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        391
+                                                        10
+                                                        391
+                                                        11
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Cons
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/DerivingVia.hs"
+                                                           391
+                                                           10
+                                                           391
+                                                           11
+                                                     , srcInfoPoints = []
+                                                     }))
+                                             (PVar
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        391
+                                                        11
+                                                        391
+                                                        13
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Ident
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/DerivingVia.hs"
+                                                           391
+                                                           11
+                                                           391
+                                                           13
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   "xs")))
+                                      , PParen
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 391 15 391 21
+                                            , srcInfoPoints =
+                                                [ SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 391 15 391 16
+                                                , SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 391 20 391 21
+                                                ]
+                                            }
+                                          (PInfixApp
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 391 16 391 20
+                                               , srcInfoPoints = []
+                                               }
+                                             (PVar
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        391
+                                                        16
+                                                        391
+                                                        17
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Ident
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/DerivingVia.hs"
+                                                           391
+                                                           16
+                                                           391
+                                                           17
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   "y"))
+                                             (Special
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        391
+                                                        17
+                                                        391
+                                                        18
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Cons
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/DerivingVia.hs"
+                                                           391
+                                                           17
+                                                           391
+                                                           18
+                                                     , srcInfoPoints = []
+                                                     }))
+                                             (PVar
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        391
+                                                        18
+                                                        391
+                                                        20
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Ident
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/DerivingVia.hs"
+                                                           391
+                                                           18
+                                                           391
+                                                           20
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   "ys")))
+                                      ]
+                                      (UnGuardedRhs
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 391 22 391 40
+                                           , srcInfoPoints =
+                                               [ SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 391 22 391 23
+                                               ]
+                                           }
+                                         (InfixApp
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 391 24 391 40
+                                              , srcInfoPoints = []
+                                              }
+                                            (App
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 391 24 391 29
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (App
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          391
+                                                          24
+                                                          391
+                                                          27
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  (Var
+                                                     SrcSpanInfo
+                                                       { srcInfoSpan =
+                                                           SrcSpan
+                                                             "tests/examples/DerivingVia.hs"
+                                                             391
+                                                             24
+                                                             391
+                                                             25
+                                                       , srcInfoPoints = []
+                                                       }
+                                                     (UnQual
+                                                        SrcSpanInfo
+                                                          { srcInfoSpan =
+                                                              SrcSpan
+                                                                "tests/examples/DerivingVia.hs"
+                                                                391
+                                                                24
+                                                                391
+                                                                25
+                                                          , srcInfoPoints = []
+                                                          }
+                                                        (Ident
+                                                           SrcSpanInfo
+                                                             { srcInfoSpan =
+                                                                 SrcSpan
+                                                                   "tests/examples/DerivingVia.hs"
+                                                                   391
+                                                                   24
+                                                                   391
+                                                                   25
+                                                             , srcInfoPoints = []
+                                                             }
+                                                           "f")))
+                                                  (Var
+                                                     SrcSpanInfo
+                                                       { srcInfoSpan =
+                                                           SrcSpan
+                                                             "tests/examples/DerivingVia.hs"
+                                                             391
+                                                             26
+                                                             391
+                                                             27
+                                                       , srcInfoPoints = []
+                                                       }
+                                                     (UnQual
+                                                        SrcSpanInfo
+                                                          { srcInfoSpan =
+                                                              SrcSpan
+                                                                "tests/examples/DerivingVia.hs"
+                                                                391
+                                                                26
+                                                                391
+                                                                27
+                                                          , srcInfoPoints = []
+                                                          }
+                                                        (Ident
+                                                           SrcSpanInfo
+                                                             { srcInfoSpan =
+                                                                 SrcSpan
+                                                                   "tests/examples/DerivingVia.hs"
+                                                                   391
+                                                                   26
+                                                                   391
+                                                                   27
+                                                             , srcInfoPoints = []
+                                                             }
+                                                           "x"))))
+                                               (Var
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          391
+                                                          28
+                                                          391
+                                                          29
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  (UnQual
+                                                     SrcSpanInfo
+                                                       { srcInfoSpan =
+                                                           SrcSpan
+                                                             "tests/examples/DerivingVia.hs"
+                                                             391
+                                                             28
+                                                             391
+                                                             29
+                                                       , srcInfoPoints = []
+                                                       }
+                                                     (Ident
+                                                        SrcSpanInfo
+                                                          { srcInfoSpan =
+                                                              SrcSpan
+                                                                "tests/examples/DerivingVia.hs"
+                                                                391
+                                                                28
+                                                                391
+                                                                29
+                                                          , srcInfoPoints = []
+                                                          }
+                                                        "y"))))
+                                            (QConOp
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 391 30 391 31
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (Special
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          391
+                                                          30
+                                                          391
+                                                          31
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  (Cons
+                                                     SrcSpanInfo
+                                                       { srcInfoSpan =
+                                                           SrcSpan
+                                                             "tests/examples/DerivingVia.hs"
+                                                             391
+                                                             30
+                                                             391
+                                                             31
+                                                       , srcInfoPoints = []
+                                                       })))
+                                            (App
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 391 32 391 40
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (App
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          391
+                                                          32
+                                                          391
+                                                          37
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  (Var
+                                                     SrcSpanInfo
+                                                       { srcInfoSpan =
+                                                           SrcSpan
+                                                             "tests/examples/DerivingVia.hs"
+                                                             391
+                                                             32
+                                                             391
+                                                             34
+                                                       , srcInfoPoints = []
+                                                       }
+                                                     (UnQual
+                                                        SrcSpanInfo
+                                                          { srcInfoSpan =
+                                                              SrcSpan
+                                                                "tests/examples/DerivingVia.hs"
+                                                                391
+                                                                32
+                                                                391
+                                                                34
+                                                          , srcInfoPoints = []
+                                                          }
+                                                        (Ident
+                                                           SrcSpanInfo
+                                                             { srcInfoSpan =
+                                                                 SrcSpan
+                                                                   "tests/examples/DerivingVia.hs"
+                                                                   391
+                                                                   32
+                                                                   391
+                                                                   34
+                                                             , srcInfoPoints = []
+                                                             }
+                                                           "go")))
+                                                  (Var
+                                                     SrcSpanInfo
+                                                       { srcInfoSpan =
+                                                           SrcSpan
+                                                             "tests/examples/DerivingVia.hs"
+                                                             391
+                                                             35
+                                                             391
+                                                             37
+                                                       , srcInfoPoints = []
+                                                       }
+                                                     (UnQual
+                                                        SrcSpanInfo
+                                                          { srcInfoSpan =
+                                                              SrcSpan
+                                                                "tests/examples/DerivingVia.hs"
+                                                                391
+                                                                35
+                                                                391
+                                                                37
+                                                          , srcInfoPoints = []
+                                                          }
+                                                        (Ident
+                                                           SrcSpanInfo
+                                                             { srcInfoSpan =
+                                                                 SrcSpan
+                                                                   "tests/examples/DerivingVia.hs"
+                                                                   391
+                                                                   35
+                                                                   391
+                                                                   37
+                                                             , srcInfoPoints = []
+                                                             }
+                                                           "xs"))))
+                                               (Var
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          391
+                                                          38
+                                                          391
+                                                          40
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  (UnQual
+                                                     SrcSpanInfo
+                                                       { srcInfoSpan =
+                                                           SrcSpan
+                                                             "tests/examples/DerivingVia.hs"
+                                                             391
+                                                             38
+                                                             391
+                                                             40
+                                                       , srcInfoPoints = []
+                                                       }
+                                                     (Ident
+                                                        SrcSpanInfo
+                                                          { srcInfoSpan =
+                                                              SrcSpan
+                                                                "tests/examples/DerivingVia.hs"
+                                                                391
+                                                                38
+                                                                391
+                                                                40
+                                                          , srcInfoPoints = []
+                                                          }
+                                                        "ys"))))))
+                                      Nothing
+                                  , Match
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 392 5 392 18
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 392 5 392 7
+                                           , srcInfoPoints = []
+                                           }
+                                         "go")
+                                      [ PList
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 392 8 392 10
+                                            , srcInfoPoints =
+                                                [ SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 392 8 392 9
+                                                , SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 392 9 392 10
+                                                ]
+                                            }
+                                          []
+                                      , PVar
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 392 11 392 13
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 392 11 392 13
+                                               , srcInfoPoints = []
+                                               }
+                                             "ys")
+                                      ]
+                                      (UnGuardedRhs
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 392 14 392 18
+                                           , srcInfoPoints =
+                                               [ SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 392 14 392 15
+                                               ]
+                                           }
+                                         (Var
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 392 16 392 18
+                                              , srcInfoPoints = []
+                                              }
+                                            (UnQual
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 392 16 392 18
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (Ident
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          392
+                                                          16
+                                                          392
+                                                          18
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  "ys"))))
+                                      Nothing
+                                  , Match
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 393 5 393 18
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 393 5 393 7
+                                           , srcInfoPoints = []
+                                           }
+                                         "go")
+                                      [ PVar
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 393 8 393 10
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 393 8 393 10
+                                               , srcInfoPoints = []
+                                               }
+                                             "xs")
+                                      , PList
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 393 11 393 13
+                                            , srcInfoPoints =
+                                                [ SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 393 11 393 12
+                                                , SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 393 12 393 13
+                                                ]
+                                            }
+                                          []
+                                      ]
+                                      (UnGuardedRhs
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 393 14 393 18
+                                           , srcInfoPoints =
+                                               [ SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 393 14 393 15
+                                               ]
+                                           }
+                                         (Var
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 393 16 393 18
+                                              , srcInfoPoints = []
+                                              }
+                                            (UnQual
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 393 16 393 18
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (Ident
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          393
+                                                          16
+                                                          393
+                                                          18
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  "xs"))))
+                                      Nothing
+                                  ]
+                              ]))
+                    ])
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 395 1 401 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 395 1 395 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 395 25 395 30
+                , SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 397 3 397 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 398 3 398 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 399 3 399 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 401 1 401 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 24
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 24
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 18
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 18
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 18
+                           , srcInfoPoints = []
+                           }
+                         "Additive")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 395 19 395 24
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 395 19 395 24
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 395 19 395 24
+                           , srcInfoPoints = []
+                           }
+                         "Maybe")))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 17
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 17
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 7
+                            , srcInfoPoints = []
+                            }
+                          "zero"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 396 8 396 17
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 396 8 396 9 ]
+                         }
+                       (Con
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 396 10 396 17
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 396 10 396 17
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 396 10 396 17
+                                  , srcInfoPoints = []
+                                  }
+                                "Nothing"))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 397 3 399 27
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 397 3 399 27
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 397 3 397 44
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 397 3 397 9
+                             , srcInfoPoints = []
+                             }
+                           "liftU2")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 397 10 397 11
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 397 10 397 11
+                                 , srcInfoPoints = []
+                                 }
+                               "f")
+                        , PParen
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 397 12 397 20
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 397 12 397 13
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 397 19 397 20
+                                  ]
+                              }
+                            (PApp
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 397 13 397 19
+                                 , srcInfoPoints = []
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 397 13 397 17
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 397 13 397 17
+                                       , srcInfoPoints = []
+                                       }
+                                     "Just"))
+                               [ PVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 397 18 397 19
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 397 18 397 19
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")
+                               ])
+                        , PParen
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 397 21 397 29
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 397 21 397 22
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 397 28 397 29
+                                  ]
+                              }
+                            (PApp
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 397 22 397 28
+                                 , srcInfoPoints = []
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 397 22 397 26
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 397 22 397 26
+                                       , srcInfoPoints = []
+                                       }
+                                     "Just"))
+                               [ PVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 397 27 397 28
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 397 27 397 28
+                                        , srcInfoPoints = []
+                                        }
+                                      "b")
+                               ])
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 397 30 397 44
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 397 30 397 31 ]
+                             }
+                           (App
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 44
+                                , srcInfoPoints = []
+                                }
+                              (Con
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 36
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 36
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 36
+                                         , srcInfoPoints = []
+                                         }
+                                       "Just")))
+                              (Paren
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 397 37 397 44
+                                   , srcInfoPoints =
+                                       [ SrcSpan "tests/examples/DerivingVia.hs" 397 37 397 38
+                                       , SrcSpan "tests/examples/DerivingVia.hs" 397 43 397 44
+                                       ]
+                                   }
+                                 (App
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 397 38 397 43
+                                      , srcInfoPoints = []
+                                      }
+                                    (App
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 397 38 397 41
+                                         , srcInfoPoints = []
+                                         }
+                                       (Var
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 397 38 397 39
+                                            , srcInfoPoints = []
+                                            }
+                                          (UnQual
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 397 38 397 39
+                                               , srcInfoPoints = []
+                                               }
+                                             (Ident
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        397
+                                                        38
+                                                        397
+                                                        39
+                                                  , srcInfoPoints = []
+                                                  }
+                                                "f")))
+                                       (Var
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 397 40 397 41
+                                            , srcInfoPoints = []
+                                            }
+                                          (UnQual
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 397 40 397 41
+                                               , srcInfoPoints = []
+                                               }
+                                             (Ident
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        397
+                                                        40
+                                                        397
+                                                        41
+                                                  , srcInfoPoints = []
+                                                  }
+                                                "a"))))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 397 42 397 43
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 397 42 397 43
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 397 42 397 43
+                                               , srcInfoPoints = []
+                                               }
+                                             "b")))))))
+                        Nothing
+                    , Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 398 3 398 27
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 398 3 398 9
+                             , srcInfoPoints = []
+                             }
+                           "liftU2")
+                        [ PWildCard
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 398 10 398 11
+                              , srcInfoPoints = []
+                              }
+                        , PApp
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 398 12 398 19
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 398 12 398 19
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 398 12 398 19
+                                    , srcInfoPoints = []
+                                    }
+                                  "Nothing"))
+                            []
+                        , PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 398 20 398 22
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 398 20 398 22
+                                 , srcInfoPoints = []
+                                 }
+                               "ys")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 398 23 398 27
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 398 23 398 24 ]
+                             }
+                           (Var
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 398 25 398 27
+                                , srcInfoPoints = []
+                                }
+                              (UnQual
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 398 25 398 27
+                                   , srcInfoPoints = []
+                                   }
+                                 (Ident
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 398 25 398 27
+                                      , srcInfoPoints = []
+                                      }
+                                    "ys"))))
+                        Nothing
+                    , Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 399 3 399 27
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 399 3 399 9
+                             , srcInfoPoints = []
+                             }
+                           "liftU2")
+                        [ PWildCard
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 399 10 399 11
+                              , srcInfoPoints = []
+                              }
+                        , PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 399 12 399 14
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 399 12 399 14
+                                 , srcInfoPoints = []
+                                 }
+                               "xs")
+                        , PApp
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 399 15 399 22
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 399 15 399 22
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 399 15 399 22
+                                    , srcInfoPoints = []
+                                    }
+                                  "Nothing"))
+                            []
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 399 23 399 27
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 399 23 399 24 ]
+                             }
+                           (Var
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 399 25 399 27
+                                , srcInfoPoints = []
+                                }
+                              (UnQual
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 399 25 399 27
+                                   , srcInfoPoints = []
+                                   }
+                                 (Ident
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 399 25 399 27
+                                      , srcInfoPoints = []
+                                      }
+                                    "xs"))))
+                        Nothing
+                    ])
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 401 1 405 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 401 1 401 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 401 56 401 61
+                , SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 405 1 405 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 55
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxSingle
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 26
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 401 24 401 26 ]
+                     }
+                   (TypeA
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 26
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 401 24 401 26 ]
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 26
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 401 24 401 26 ]
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 26
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 401 24 401 26 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 21
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 21
+                                    , srcInfoPoints = []
+                                    }
+                                  "Applicative")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 401 22 401 23
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 401 22 401 23
+                                 , srcInfoPoints = []
+                                 }
+                               "f"))))))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 55
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 35
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 35
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 35
+                           , srcInfoPoints = []
+                           }
+                         "Additive")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 401 36 401 55
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 401 36 401 37
+                         , SrcSpan "tests/examples/DerivingVia.hs" 401 54 401 55
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 54
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 52
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 52
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 52
+                                 , srcInfoPoints = []
+                                 }
+                               "WrapApplicative")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 401 53 401 54
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 401 53 401 54
+                              , srcInfoPoints = []
+                              }
+                            "f"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 18
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 18
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 7
+                            , srcInfoPoints = []
+                            }
+                          "zero"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 402 10 402 18
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 402 10 402 11 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 18
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 16
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 16
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 16
+                                     , srcInfoPoints = []
+                                     }
+                                   "pure")))
+                          (Lit
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 402 17 402 18
+                               , srcInfoPoints = []
+                               }
+                             (Int
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 402 17 402 18
+                                  , srcInfoPoints = []
+                                  }
+                                0
+                                "0"))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 18
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 18
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 9
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 9
+                            , srcInfoPoints = []
+                            }
+                          "liftU2"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 403 10 403 18
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 403 10 403 11 ]
+                         }
+                       (Var
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 403 12 403 18
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 403 12 403 18
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 403 12 403 18
+                                  , srcInfoPoints = []
+                                  }
+                                "liftA2"))))
+                    Nothing)
+             ])
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 405 1 405 67
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 405 1 405 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 405 41 405 49
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 405 10 405 13
+                  , srcInfoPoints = []
+                  }
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 405 14 405 40
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 405 14 405 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 405 39 405 40
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 39
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 30
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 30
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 30
+                                 , srcInfoPoints = []
+                                 }
+                               "WrapApplicative")))
+                      (TyParen
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 405 31 405 39
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 405 31 405 32
+                               , SrcSpan "tests/examples/DerivingVia.hs" 405 38 405 39
+                               ]
+                           }
+                         (TyApp
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 38
+                              , srcInfoPoints = []
+                              }
+                            (TyCon
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 36
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 33
+                                     , SrcSpan "tests/examples/DerivingVia.hs" 405 33 405 35
+                                     , SrcSpan "tests/examples/DerivingVia.hs" 405 35 405 36
+                                     ]
+                                 }
+                               (Special
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 36
+                                    , srcInfoPoints =
+                                        [ SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 33
+                                        , SrcSpan "tests/examples/DerivingVia.hs" 405 33 405 35
+                                        , SrcSpan "tests/examples/DerivingVia.hs" 405 35 405 36
+                                        ]
+                                    }
+                                  (FunCon
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 36
+                                       , srcInfoPoints =
+                                           [ SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 33
+                                           , SrcSpan "tests/examples/DerivingVia.hs" 405 33 405 35
+                                           , SrcSpan "tests/examples/DerivingVia.hs" 405 35 405 36
+                                           ]
+                                       })))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 405 37 405 38
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 405 37 405 38
+                                    , srcInfoPoints = []
+                                    }
+                                  "a"))))))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 67
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 67
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 58
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 58
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 58
+                           , srcInfoPoints = []
+                           }
+                         "Additive")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 405 59 405 67
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 405 59 405 60
+                         , SrcSpan "tests/examples/DerivingVia.hs" 405 66 405 67
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 66
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 64
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 61
+                               , SrcSpan "tests/examples/DerivingVia.hs" 405 61 405 63
+                               , SrcSpan "tests/examples/DerivingVia.hs" 405 63 405 64
+                               ]
+                           }
+                         (Special
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 64
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 61
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 405 61 405 63
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 405 63 405 64
+                                  ]
+                              }
+                            (FunCon
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 64
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 61
+                                     , SrcSpan "tests/examples/DerivingVia.hs" 405 61 405 63
+                                     , SrcSpan "tests/examples/DerivingVia.hs" 405 63 405 64
+                                     ]
+                                 })))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 405 65 405 66
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 405 65 405 66
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 406 1 406 66
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 406 1 406 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 406 41 406 49
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 406 10 406 13
+                  , srcInfoPoints = []
+                  }
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 406 14 406 39
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 406 14 406 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 406 38 406 39
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 38
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 30
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 30
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 30
+                                 , srcInfoPoints = []
+                                 }
+                               "WrapApplicative")))
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 406 31 406 38
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 406 31 406 38
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 406 31 406 38
+                                 , srcInfoPoints = []
+                                 }
+                               "Complex")))))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 66
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 66
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 58
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 58
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 58
+                           , srcInfoPoints = []
+                           }
+                         "Additive")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 406 59 406 66
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 406 59 406 66
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 406 59 406 66
+                           , srcInfoPoints = []
+                           }
+                         "Complex")))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 407 1 407 67
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 407 1 407 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 407 41 407 49
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 407 10 407 13
+                  , srcInfoPoints = []
+                  }
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 407 14 407 40
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 407 14 407 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 407 39 407 40
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 39
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 30
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 30
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 30
+                                 , srcInfoPoints = []
+                                 }
+                               "WrapApplicative")))
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 407 31 407 39
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 407 31 407 39
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 407 31 407 39
+                                 , srcInfoPoints = []
+                                 }
+                               "Identity")))))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 67
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 67
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 58
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 58
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 58
+                           , srcInfoPoints = []
+                           }
+                         "Additive")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 407 59 407 67
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 407 59 407 67
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 407 59 407 67
+                           , srcInfoPoints = []
+                           }
+                         "Identity")))))
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 409 1 413 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 409 1 409 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 409 27 409 32
+                , SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 413 1 413 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 26
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 26
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 18
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 18
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 18
+                           , srcInfoPoints = []
+                           }
+                         "Additive")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 409 19 409 26
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 409 19 409 26
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 409 19 409 26
+                           , srcInfoPoints = []
+                           }
+                         "ZipList")))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 20
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 20
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 7
+                            , srcInfoPoints = []
+                            }
+                          "zero"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 410 8 410 20
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 410 8 410 9 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 20
+                            , srcInfoPoints = []
+                            }
+                          (Con
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 17
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 17
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 17
+                                     , srcInfoPoints = []
+                                     }
+                                   "ZipList")))
+                          (List
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 410 18 410 20
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 410 18 410 19
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 410 19 410 20
+                                   ]
+                               }
+                             [])))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 64
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 64
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 64
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 9
+                             , srcInfoPoints = []
+                             }
+                           "liftU2")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 411 10 411 11
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 411 10 411 11
+                                 , srcInfoPoints = []
+                                 }
+                               "f")
+                        , PParen
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 411 12 411 24
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 411 12 411 13
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 411 23 411 24
+                                  ]
+                              }
+                            (PApp
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 411 13 411 23
+                                 , srcInfoPoints = []
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 411 13 411 20
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 411 13 411 20
+                                       , srcInfoPoints = []
+                                       }
+                                     "ZipList"))
+                               [ PVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 411 21 411 23
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 411 21 411 23
+                                        , srcInfoPoints = []
+                                        }
+                                      "xs")
+                               ])
+                        , PParen
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 411 25 411 37
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 411 25 411 26
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 411 36 411 37
+                                  ]
+                              }
+                            (PApp
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 411 26 411 36
+                                 , srcInfoPoints = []
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 411 26 411 33
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 411 26 411 33
+                                       , srcInfoPoints = []
+                                       }
+                                     "ZipList"))
+                               [ PVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 411 34 411 36
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 411 34 411 36
+                                        , srcInfoPoints = []
+                                        }
+                                      "ys")
+                               ])
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 411 38 411 64
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 411 38 411 39 ]
+                             }
+                           (App
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 64
+                                , srcInfoPoints = []
+                                }
+                              (Con
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 47
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 47
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 47
+                                         , srcInfoPoints = []
+                                         }
+                                       "ZipList")))
+                              (Paren
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 411 48 411 64
+                                   , srcInfoPoints =
+                                       [ SrcSpan "tests/examples/DerivingVia.hs" 411 48 411 49
+                                       , SrcSpan "tests/examples/DerivingVia.hs" 411 63 411 64
+                                       ]
+                                   }
+                                 (App
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 411 49 411 63
+                                      , srcInfoPoints = []
+                                      }
+                                    (App
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 411 49 411 60
+                                         , srcInfoPoints = []
+                                         }
+                                       (App
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 411 49 411 57
+                                            , srcInfoPoints = []
+                                            }
+                                          (Var
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 411 49 411 55
+                                               , srcInfoPoints = []
+                                               }
+                                             (UnQual
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        411
+                                                        49
+                                                        411
+                                                        55
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Ident
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/DerivingVia.hs"
+                                                           411
+                                                           49
+                                                           411
+                                                           55
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   "liftU2")))
+                                          (Var
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 411 56 411 57
+                                               , srcInfoPoints = []
+                                               }
+                                             (UnQual
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        411
+                                                        56
+                                                        411
+                                                        57
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Ident
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/DerivingVia.hs"
+                                                           411
+                                                           56
+                                                           411
+                                                           57
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   "f"))))
+                                       (Var
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 411 58 411 60
+                                            , srcInfoPoints = []
+                                            }
+                                          (UnQual
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 411 58 411 60
+                                               , srcInfoPoints = []
+                                               }
+                                             (Ident
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        411
+                                                        58
+                                                        411
+                                                        60
+                                                  , srcInfoPoints = []
+                                                  }
+                                                "xs"))))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 411 61 411 63
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 411 61 411 63
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 411 61 411 63
+                                               , srcInfoPoints = []
+                                               }
+                                             "ys")))))))
+                        Nothing
+                    ])
+             ])
+      , ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 413 1 419 32
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 413 1 413 6
+                , SrcSpan "tests/examples/DerivingVia.hs" 413 37 413 42
+                , SrcSpan "tests/examples/DerivingVia.hs" 414 3 414 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 425 1 425 0
+                ]
+            }
+          (Just
+             (CxSingle
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 27
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingVia.hs" 413 25 413 27 ]
+                  }
+                (TypeA
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 27
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 413 25 413 27 ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 27
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 413 25 413 27 ]
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 27
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 413 25 413 27 ]
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 15
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 15
+                                 , srcInfoPoints = []
+                                 }
+                               "Additive")))
+                      (TyParen
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 413 16 413 24
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 413 16 413 17
+                               , SrcSpan "tests/examples/DerivingVia.hs" 413 23 413 24
+                               ]
+                           }
+                         (TyApp
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 23
+                              , srcInfoPoints = []
+                              }
+                            (TyCon
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 21
+                                 , srcInfoPoints = []
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 21
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 21
+                                       , srcInfoPoints = []
+                                       }
+                                     "Diff")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 413 22 413 23
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 413 22 413 23
+                                    , srcInfoPoints = []
+                                    }
+                                  "p"))))))))
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 413 28 413 36
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 413 28 413 34
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 413 28 413 34
+                     , srcInfoPoints = []
+                     }
+                   "Affine"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 413 35 413 36
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 413 35 413 36
+                     , srcInfoPoints = []
+                     }
+                   "p")))
+          []
+          (Just
+             [ ClsTyFam
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 414 3 414 30
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 414 3 414 7 ]
+                   }
+                 (DHApp
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 414 8 414 14
+                      , srcInfoPoints = []
+                      }
+                    (DHead
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 414 8 414 12
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 414 8 414 12
+                            , srcInfoPoints = []
+                            }
+                          "Diff"))
+                    (UnkindedVar
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 414 13 414 14
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 414 13 414 14
+                            , srcInfoPoints = []
+                            }
+                          "p")))
+                 (Just
+                    (KindSig
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 414 15 414 30
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 414 15 414 17 ]
+                         }
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 30
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 414 23 414 25 ]
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 22
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "Type")))
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 414 26 414 30
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 414 26 414 30
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 414 26 414 30
+                                     , srcInfoPoints = []
+                                     }
+                                   "Type"))))))
+                 Nothing
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 43
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 416 9 416 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 43
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 416 9 416 11 ]
+                      }
+                    [ Symbol
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 8
+                          , srcInfoPoints =
+                              [ SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 4
+                              , SrcSpan "tests/examples/DerivingVia.hs" 416 4 416 7
+                              , SrcSpan "tests/examples/DerivingVia.hs" 416 7 416 8
+                              ]
+                          }
+                        ".-."
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 43
+                         , srcInfoPoints = []
+                         }
+                       Nothing
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 20
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 416 18 416 20 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 20
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 416 18 416 20 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 20
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 416 18 416 20 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 20
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 416 18 416 20
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 15
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 416 12 416 15
+                                              , srcInfoPoints = []
+                                              }
+                                            "Num")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 416 16 416 17
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 416 16 416 17
+                                           , srcInfoPoints = []
+                                           }
+                                         "a"))))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 43
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 416 25 416 27 ]
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 24
+                               , srcInfoPoints = []
+                               }
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "p"))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 416 23 416 24
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 416 23 416 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")))
+                          (TyFun
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 43
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 416 32 416 34 ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 31
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 29
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 29
+                                        , srcInfoPoints = []
+                                        }
+                                      "p"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 416 30 416 31
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 416 30 416 31
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 43
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 41
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 39
+                                        , srcInfoPoints = []
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 39
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 416 35 416 39
+                                              , srcInfoPoints = []
+                                              }
+                                            "Diff")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 416 40 416 41
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 416 40 416 41
+                                           , srcInfoPoints = []
+                                           }
+                                         "p")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 416 42 416 43
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 416 42 416 43
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))))))
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 43
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 417 9 417 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 43
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 417 9 417 11 ]
+                      }
+                    [ Symbol
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 8
+                          , srcInfoPoints =
+                              [ SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 4
+                              , SrcSpan "tests/examples/DerivingVia.hs" 417 4 417 7
+                              , SrcSpan "tests/examples/DerivingVia.hs" 417 7 417 8
+                              ]
+                          }
+                        ".+^"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 43
+                         , srcInfoPoints = []
+                         }
+                       Nothing
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 20
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 417 18 417 20 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 20
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 417 18 417 20 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 20
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 417 18 417 20 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 20
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 417 18 417 20
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 15
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 417 12 417 15
+                                              , srcInfoPoints = []
+                                              }
+                                            "Num")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 417 16 417 17
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 417 16 417 17
+                                           , srcInfoPoints = []
+                                           }
+                                         "a"))))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 43
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 417 25 417 27 ]
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 24
+                               , srcInfoPoints = []
+                               }
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "p"))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 417 23 417 24
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 417 23 417 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")))
+                          (TyFun
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 43
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 417 37 417 39 ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 36
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 34
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 32
+                                        , srcInfoPoints = []
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 32
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 417 28 417 32
+                                              , srcInfoPoints = []
+                                              }
+                                            "Diff")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 417 33 417 34
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 417 33 417 34
+                                           , srcInfoPoints = []
+                                           }
+                                         "p")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 417 35 417 36
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 417 35 417 36
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 417 40 417 43
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 417 40 417 41
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 417 40 417 41
+                                        , srcInfoPoints = []
+                                        }
+                                      "p"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 417 42 417 43
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 417 42 417 43
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))))))
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 43
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 418 9 418 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 43
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 418 9 418 11 ]
+                      }
+                    [ Symbol
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 8
+                          , srcInfoPoints =
+                              [ SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 4
+                              , SrcSpan "tests/examples/DerivingVia.hs" 418 4 418 7
+                              , SrcSpan "tests/examples/DerivingVia.hs" 418 7 418 8
+                              ]
+                          }
+                        ".-^"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 43
+                         , srcInfoPoints = []
+                         }
+                       Nothing
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 20
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 418 18 418 20 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 20
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 418 18 418 20 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 20
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 418 18 418 20 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 20
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 418 18 418 20
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 15
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 418 12 418 15
+                                              , srcInfoPoints = []
+                                              }
+                                            "Num")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 418 16 418 17
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 418 16 418 17
+                                           , srcInfoPoints = []
+                                           }
+                                         "a"))))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 43
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 418 25 418 27 ]
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 24
+                               , srcInfoPoints = []
+                               }
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "p"))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 418 23 418 24
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 418 23 418 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")))
+                          (TyFun
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 43
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 418 37 418 39 ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 36
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 34
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 32
+                                        , srcInfoPoints = []
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 32
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 418 28 418 32
+                                              , srcInfoPoints = []
+                                              }
+                                            "Diff")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 418 33 418 34
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 418 33 418 34
+                                           , srcInfoPoints = []
+                                           }
+                                         "p")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 418 35 418 36
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 418 35 418 36
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 418 40 418 43
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 418 40 418 41
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 418 40 418 41
+                                        , srcInfoPoints = []
+                                        }
+                                      "p"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 418 42 418 43
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 418 42 418 43
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))))))
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 32
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 32
+                      , srcInfoPoints = []
+                      }
+                    [ InfixMatch
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 32
+                          , srcInfoPoints = []
+                          }
+                        (PVar
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 4
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 4
+                                , srcInfoPoints = []
+                                }
+                              "p"))
+                        (Symbol
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 419 5 419 8
+                             , srcInfoPoints = []
+                             }
+                           ".-^")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 419 9 419 10
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 419 9 419 10
+                                 , srcInfoPoints = []
+                                 }
+                               "v")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 419 11 419 32
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 419 11 419 12 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 32
+                                , srcInfoPoints = []
+                                }
+                              (Var
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 14
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 14
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 14
+                                         , srcInfoPoints = []
+                                         }
+                                       "p")))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 419 15 419 18
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 419 15 419 18
+                                      , srcInfoPoints = []
+                                      }
+                                    (Symbol
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 419 15 419 18
+                                         , srcInfoPoints = []
+                                         }
+                                       ".+^")))
+                              (App
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 419 19 419 32
+                                   , srcInfoPoints = []
+                                   }
+                                 (App
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 419 19 419 30
+                                      , srcInfoPoints = []
+                                      }
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 419 19 419 23
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 419 19 419 23
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 419 19 419 23
+                                               , srcInfoPoints = []
+                                               }
+                                             "fmap")))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 419 24 419 30
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 419 24 419 30
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 419 24 419 30
+                                               , srcInfoPoints = []
+                                               }
+                                             "negate"))))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 419 31 419 32
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 419 31 419 32
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 419 31 419 32
+                                            , srcInfoPoints = []
+                                            }
+                                          "v"))))))
+                        Nothing
+                    ])
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 425 1 425 49
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 425 26 425 27 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 425 1 425 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 25
+               , srcInfoPoints = []
+               }
+             (DHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 23
+                  , srcInfoPoints = []
+                  }
+                (DHead
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 21
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 21
+                        , srcInfoPoints = []
+                        }
+                      "WrapAdditive"))
+                (UnkindedVar
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 425 22 425 23
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 425 22 425 23
+                        , srcInfoPoints = []
+                        }
+                      "f")))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 425 24 425 25
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 425 24 425 25
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 425 28 425 49
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 425 28 425 49
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 425 28 425 43
+                      , srcInfoPoints = []
+                      }
+                    "WrappedAdditive")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 425 44 425 49
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 425 44 425 45
+                           , SrcSpan "tests/examples/DerivingVia.hs" 425 48 425 49
+                           ]
+                       }
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 425 45 425 48
+                          , srcInfoPoints = []
+                          }
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 425 45 425 46
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 425 45 425 46
+                                , srcInfoPoints = []
+                                }
+                              "f"))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 425 47 425 48
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 425 47 425 48
+                                , srcInfoPoints = []
+                                }
+                              "a")))
+                 ])
+          ]
+          []
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 427 1 435 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 427 1 427 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 427 48 427 53
+                , SrcSpan "tests/examples/DerivingVia.hs" 428 3 428 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 435 1 435 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 47
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxSingle
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 23
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 427 21 427 23 ]
+                     }
+                   (TypeA
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 23
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 427 21 427 23 ]
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 23
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 427 21 427 23 ]
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 23
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 427 21 427 23 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 18
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 18
+                                    , srcInfoPoints = []
+                                    }
+                                  "Additive")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 427 19 427 20
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 427 19 427 20
+                                 , srcInfoPoints = []
+                                 }
+                               "f"))))))
              (IHApp
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/DerivingVia2.hs.parser.golden b/tests/examples/DerivingVia2.hs.parser.golden
--- a/tests/examples/DerivingVia2.hs.parser.golden
+++ b/tests/examples/DerivingVia2.hs.parser.golden
@@ -504,72 +504,94 @@
                          , SrcSpan "tests/examples/DerivingVia2.hs" 20 39 20 41
                          ]
                      }
-                   [ ClassA
+                   [ TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 24
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 22
+                                SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 24
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 22
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 24
                                , srcInfoPoints = []
                                }
-                             "Applicative"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia2.hs" 20 23 20 24
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia2.hs" 20 23 20 24
-                                , srcInfoPoints = []
-                                }
-                              "f")
-                       ]
-                   , ClassA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "Applicative")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 20 23 20 24
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 20 23 20 24
+                                  , srcInfoPoints = []
+                                  }
+                                "f")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 37
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 35
+                                SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 37
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 35
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 37
                                , srcInfoPoints = []
                                }
-                             "Semigroup"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia2.hs" 20 36 20 37
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia2.hs" 20 36 20 37
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 35
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 35
+                                     , srcInfoPoints = []
+                                     }
+                                   "Semigroup")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 20 36 20 37
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 20 36 20 37
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
                    ]))
              (IHApp
                 SrcSpanInfo
@@ -937,105 +959,138 @@
                          , SrcSpan "tests/examples/DerivingVia2.hs" 25 16 25 18
                          ]
                      }
-                   [ ClassA
+                   [ TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 33
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 31
+                                SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 33
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 31
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 33
                                , srcInfoPoints = []
                                }
-                             "Applicative"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia2.hs" 24 32 24 33
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia2.hs" 24 32 24 33
-                                , srcInfoPoints = []
-                                }
-                              "f")
-                       ]
-                   , ClassA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 31
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 31
+                                     , srcInfoPoints = []
+                                     }
+                                   "Applicative")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 32 24 33
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 24 32 24 33
+                                  , srcInfoPoints = []
+                                  }
+                                "f")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 48
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 46
+                                SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 48
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 46
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 48
                                , srcInfoPoints = []
                                }
-                             "Applicative"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia2.hs" 24 47 24 48
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia2.hs" 24 47 24 48
-                                , srcInfoPoints = []
-                                }
-                              "g")
-                       ]
-                   , ClassA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 46
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 46
+                                     , srcInfoPoints = []
+                                     }
+                                   "Applicative")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 47 24 48
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 24 47 24 48
+                                  , srcInfoPoints = []
+                                  }
+                                "g")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 61
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 59
+                                SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 61
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 59
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 61
                                , srcInfoPoints = []
                                }
-                             "Semigroup"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/DerivingVia2.hs" 24 60 24 61
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/DerivingVia2.hs" 24 60 24 61
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 59
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 59
+                                     , srcInfoPoints = []
+                                     }
+                                   "Semigroup")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 60 24 61
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 24 60 24 61
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
                    ]))
              (IHApp
                 SrcSpanInfo
diff --git a/tests/examples/Directory.hs.parser.golden b/tests/examples/Directory.hs.parser.golden
--- a/tests/examples/Directory.hs.parser.golden
+++ b/tests/examples/Directory.hs.parser.golden
@@ -25159,7 +25159,7 @@
                                                         "tests/examples/Directory.hs" 766 54 766 56
                                                     ]
                                                 }
-                                              (ClassA
+                                              (TypeA
                                                  SrcSpanInfo
                                                    { srcInfoSpan =
                                                        SrcSpan
@@ -25173,7 +25173,7 @@
                                                            56
                                                        ]
                                                    }
-                                                 (UnQual
+                                                 (TyApp
                                                     SrcSpanInfo
                                                       { srcInfoSpan =
                                                           SrcSpan
@@ -25181,10 +25181,17 @@
                                                             766
                                                             47
                                                             766
-                                                            51
-                                                      , srcInfoPoints = []
+                                                            56
+                                                      , srcInfoPoints =
+                                                          [ SrcSpan
+                                                              "tests/examples/Directory.hs"
+                                                              766
+                                                              54
+                                                              766
+                                                              56
+                                                          ]
                                                       }
-                                                    (Ident
+                                                    (TyCon
                                                        SrcSpanInfo
                                                          { srcInfoSpan =
                                                              SrcSpan
@@ -25192,34 +25199,62 @@
                                                                766
                                                                47
                                                                766
-                                                               51
+                                                               56
+                                                         , srcInfoPoints =
+                                                             [ SrcSpan
+                                                                 "tests/examples/Directory.hs"
+                                                                 766
+                                                                 54
+                                                                 766
+                                                                 56
+                                                             ]
+                                                         }
+                                                       (UnQual
+                                                          SrcSpanInfo
+                                                            { srcInfoSpan =
+                                                                SrcSpan
+                                                                  "tests/examples/Directory.hs"
+                                                                  766
+                                                                  47
+                                                                  766
+                                                                  51
+                                                            , srcInfoPoints = []
+                                                            }
+                                                          (Ident
+                                                             SrcSpanInfo
+                                                               { srcInfoSpan =
+                                                                   SrcSpan
+                                                                     "tests/examples/Directory.hs"
+                                                                     766
+                                                                     47
+                                                                     766
+                                                                     51
+                                                               , srcInfoPoints = []
+                                                               }
+                                                             "Real")))
+                                                    (TyVar
+                                                       SrcSpanInfo
+                                                         { srcInfoSpan =
+                                                             SrcSpan
+                                                               "tests/examples/Directory.hs"
+                                                               766
+                                                               52
+                                                               766
+                                                               53
                                                          , srcInfoPoints = []
                                                          }
-                                                       "Real"))
-                                                 [ TyVar
-                                                     SrcSpanInfo
-                                                       { srcInfoSpan =
-                                                           SrcSpan
-                                                             "tests/examples/Directory.hs"
-                                                             766
-                                                             52
-                                                             766
-                                                             53
-                                                       , srcInfoPoints = []
-                                                       }
-                                                     (Ident
-                                                        SrcSpanInfo
-                                                          { srcInfoSpan =
-                                                              SrcSpan
-                                                                "tests/examples/Directory.hs"
-                                                                766
-                                                                52
-                                                                766
-                                                                53
-                                                          , srcInfoPoints = []
-                                                          }
-                                                        "a")
-                                                 ])))
+                                                       (Ident
+                                                          SrcSpanInfo
+                                                            { srcInfoSpan =
+                                                                SrcSpan
+                                                                  "tests/examples/Directory.hs"
+                                                                  766
+                                                                  52
+                                                                  766
+                                                                  53
+                                                            , srcInfoPoints = []
+                                                            }
+                                                          "a"))))))
                                         (TyFun
                                            SrcSpanInfo
                                              { srcInfoSpan =
diff --git a/tests/examples/EqualityConstraints1.hs.parser.golden b/tests/examples/EqualityConstraints1.hs.parser.golden
--- a/tests/examples/EqualityConstraints1.hs.parser.golden
+++ b/tests/examples/EqualityConstraints1.hs.parser.golden
@@ -61,47 +61,60 @@
                      { srcInfoSpan =
                          SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 18
                      , srcInfoPoints =
-                         [ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 16 4 18 ]
+                         [ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 10 4 11
+                         , SrcSpan "tests/examples/EqualityConstraints1.hs" 4 16 4 18
+                         ]
                      }
-                   (EqualP
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
-                            SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 15
+                            SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 18
                         , srcInfoPoints =
-                            [ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 10 4 11 ]
+                            [ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 10 4 11
+                            , SrcSpan "tests/examples/EqualityConstraints1.hs" 4 16 4 18
+                            ]
                         }
-                      (TyVar
+                      (TyEquals
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 9
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 18
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 10 4 11
+                               , SrcSpan "tests/examples/EqualityConstraints1.hs" 4 16 4 18
+                               ]
                            }
-                         (Ident
+                         (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 9
                               , srcInfoPoints = []
                               }
-                            "a"))
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/EqualityConstraints1.hs" 4 12 4 15
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 9
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/EqualityConstraints1.hs" 4 12 4 15
                               , srcInfoPoints = []
                               }
-                            (Ident
+                            (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/EqualityConstraints1.hs" 4 12 4 15
                                  , srcInfoPoints = []
                                  }
-                               "Int"))))))
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/EqualityConstraints1.hs" 4 12 4 15
+                                    , srcInfoPoints = []
+                                    }
+                                  "Int")))))))
              (TyVar
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/Fixity3.hs.parser.golden b/tests/examples/Fixity3.hs.parser.golden
--- a/tests/examples/Fixity3.hs.parser.golden
+++ b/tests/examples/Fixity3.hs.parser.golden
@@ -88,37 +88,51 @@
                                { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 12 2 28
                                , srcInfoPoints = [ SrcSpan "tests/examples/Fixity3.hs" 2 26 2 28 ]
                                }
-                             (ClassA
+                             (TypeA
                                 SrcSpanInfo
                                   { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 12 2 28
                                   , srcInfoPoints =
                                       [ SrcSpan "tests/examples/Fixity3.hs" 2 26 2 28 ]
                                   }
-                                (UnQual
+                                (TyApp
                                    SrcSpanInfo
-                                     { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 12 2 23
-                                     , srcInfoPoints = []
+                                     { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 12 2 28
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/Fixity3.hs" 2 26 2 28 ]
                                      }
-                                   (Ident
+                                   (TyCon
                                       SrcSpanInfo
                                         { srcInfoSpan =
-                                            SrcSpan "tests/examples/Fixity3.hs" 2 12 2 23
+                                            SrcSpan "tests/examples/Fixity3.hs" 2 12 2 28
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/Fixity3.hs" 2 26 2 28 ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/Fixity3.hs" 2 12 2 23
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan "tests/examples/Fixity3.hs" 2 12 2 23
+                                              , srcInfoPoints = []
+                                              }
+                                            "Applicative")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/Fixity3.hs" 2 24 2 25
                                         , srcInfoPoints = []
                                         }
-                                      "Applicative"))
-                                [ TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 24 2 25
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/Fixity3.hs" 2 24 2 25
-                                         , srcInfoPoints = []
-                                         }
-                                       "f")
-                                ])))
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/Fixity3.hs" 2 24 2 25
+                                           , srcInfoPoints = []
+                                           }
+                                         "f"))))))
                        (TyFun
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 29 2 53
diff --git a/tests/examples/FlexibleContextsWithoutVars.hs.parser.golden b/tests/examples/FlexibleContextsWithoutVars.hs.parser.golden
--- a/tests/examples/FlexibleContextsWithoutVars.hs.parser.golden
+++ b/tests/examples/FlexibleContextsWithoutVars.hs.parser.golden
@@ -64,7 +64,7 @@
                          [ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 16 2 18
                          ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 18
@@ -72,27 +72,36 @@
                             [ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 16 2 18
                             ]
                         }
-                      (Qual
+                      (TyCon
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 15
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 18
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 16 2 18
+                               ]
                            }
-                         (ModuleName
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 15
-                              , srcInfoPoints = []
-                              }
-                            "Log")
-                         (Ident
+                         (Qual
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 15
                               , srcInfoPoints = []
                               }
-                            "Stack"))
-                      [])))
+                            (ModuleName
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan
+                                       "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 15
+                                 , srcInfoPoints = []
+                                 }
+                               "Log")
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan
+                                       "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 15
+                                 , srcInfoPoints = []
+                                 }
+                               "Stack"))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/ForallInInstance.hs.parser.golden b/tests/examples/ForallInInstance.hs.parser.golden
--- a/tests/examples/ForallInInstance.hs.parser.golden
+++ b/tests/examples/ForallInInstance.hs.parser.golden
@@ -95,40 +95,53 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/ForallInInstance.hs" 4 30 4 32 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 32
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/ForallInInstance.hs" 4 30 4 32 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 27
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 32
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/ForallInInstance.hs" 4 30 4 32 ]
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 27
+                                  SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 32
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/ForallInInstance.hs" 4 30 4 32 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 27
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 27
+                                    , srcInfoPoints = []
+                                    }
+                                  "MyClass")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/ForallInInstance.hs" 4 28 4 29
                               , srcInfoPoints = []
                               }
-                            "MyClass"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/ForallInInstance.hs" 4 28 4 29
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/ForallInInstance.hs" 4 28 4 29
-                               , srcInfoPoints = []
-                               }
-                             "a")
-                      ])))
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/ForallInInstance.hs" 4 28 4 29
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))))))
              (IHApp
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/GenericTree.hs.parser.golden b/tests/examples/GenericTree.hs.parser.golden
--- a/tests/examples/GenericTree.hs.parser.golden
+++ b/tests/examples/GenericTree.hs.parser.golden
@@ -106,34 +106,46 @@
                             , SrcSpan "tests/examples/GenericTree.hs" 6 24 6 26
                             ]
                         }
-                      (ClassA
+                      (TypeA
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 12 6 22
                            , srcInfoPoints = []
                            }
-                         (UnQual
+                         (TyApp
                             SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 12 6 20
+                              { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 12 6 22
                               , srcInfoPoints = []
                               }
-                            (Ident
+                            (TyCon
                                SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 12 6 20
+                                 { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 12 6 22
                                  , srcInfoPoints = []
                                  }
-                               "Typeable"))
-                         [ TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 21 6 22
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 21 6 22
-                                  , srcInfoPoints = []
-                                  }
-                                "a")
-                         ]))))
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/GenericTree.hs" 6 12 6 20
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/GenericTree.hs" 6 12 6 20
+                                       , srcInfoPoints = []
+                                       }
+                                     "Typeable")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 21 6 22
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/GenericTree.hs" 6 21 6 22
+                                    , srcInfoPoints = []
+                                    }
+                                  "a")))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 27 6 83
@@ -217,39 +229,51 @@
                                       , SrcSpan "tests/examples/GenericTree.hs" 6 65 6 67
                                       ]
                                   }
-                                (ClassA
+                                (TypeA
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/GenericTree.hs" 6 53 6 63
                                      , srcInfoPoints = []
                                      }
-                                   (UnQual
+                                   (TyApp
                                       SrcSpanInfo
                                         { srcInfoSpan =
-                                            SrcSpan "tests/examples/GenericTree.hs" 6 53 6 61
+                                            SrcSpan "tests/examples/GenericTree.hs" 6 53 6 63
                                         , srcInfoPoints = []
                                         }
-                                      (Ident
+                                      (TyCon
                                          SrcSpanInfo
                                            { srcInfoSpan =
-                                               SrcSpan "tests/examples/GenericTree.hs" 6 53 6 61
+                                               SrcSpan "tests/examples/GenericTree.hs" 6 53 6 63
                                            , srcInfoPoints = []
                                            }
-                                         "Typeable"))
-                                   [ TyVar
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/GenericTree.hs" 6 62 6 63
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan "tests/examples/GenericTree.hs" 6 62 6 63
-                                            , srcInfoPoints = []
-                                            }
-                                          "b")
-                                   ]))))
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan "tests/examples/GenericTree.hs" 6 53 6 61
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/GenericTree.hs" 6 53 6 61
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "Typeable")))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/GenericTree.hs" 6 62 6 63
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan "tests/examples/GenericTree.hs" 6 62 6 63
+                                              , srcInfoPoints = []
+                                              }
+                                            "b")))))))
                        (TyFun
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 68 6 82
diff --git a/tests/examples/InfixTypeMinus.hs.parser.golden b/tests/examples/InfixTypeMinus.hs.parser.golden
--- a/tests/examples/InfixTypeMinus.hs.parser.golden
+++ b/tests/examples/InfixTypeMinus.hs.parser.golden
@@ -186,88 +186,98 @@
                                 , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 50 5 52
                                 ]
                             }
-                          (EqualP
+                          (TypeA
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/InfixTypeMinus.hs" 5 39 5 48
                                , srcInfoPoints =
                                    [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 41 5 42 ]
                                }
-                             (TyVar
+                             (TyEquals
                                 SrcSpanInfo
                                   { srcInfoSpan =
-                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 5 39 5 40
-                                  , srcInfoPoints = []
+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 5 39 5 48
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 41 5 42 ]
                                   }
-                                (Ident
+                                (TyVar
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/InfixTypeMinus.hs" 5 39 5 40
                                      , srcInfoPoints = []
                                      }
-                                   "m"))
-                             (TyParen
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 5 43 5 48
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 43 5 44
-                                      , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 47 5 48
-                                      ]
-                                  }
-                                (TyInfix
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 5 39 5 40
+                                        , srcInfoPoints = []
+                                        }
+                                      "m"))
+                                (TyParen
                                    SrcSpanInfo
                                      { srcInfoSpan =
-                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 5 44 5 47
-                                     , srcInfoPoints = []
+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 5 43 5 48
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 43 5 44
+                                         , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 47 5 48
+                                         ]
                                      }
-                                   (TyVar
+                                   (TyInfix
                                       SrcSpanInfo
                                         { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 5 44 5 45
+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 5 44 5 47
                                         , srcInfoPoints = []
                                         }
-                                      (Ident
+                                      (TyVar
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 5 44 5 45
                                            , srcInfoPoints = []
                                            }
-                                         "n"))
-                                   (UnpromotedName
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 5 45 5 46
-                                        , srcInfoPoints = []
-                                        }
-                                      (UnQual
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/InfixTypeMinus.hs" 5 44 5 45
+                                              , srcInfoPoints = []
+                                              }
+                                            "n"))
+                                      (UnpromotedName
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 5 45 5 46
                                            , srcInfoPoints = []
                                            }
-                                         (Symbol
+                                         (UnQual
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/InfixTypeMinus.hs" 5 45 5 46
                                               , srcInfoPoints = []
                                               }
-                                            "-")))
-                                   (TyPromoted
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 5 46 5 47
-                                        , srcInfoPoints = []
-                                        }
-                                      (PromotedInteger
+                                            (Symbol
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/InfixTypeMinus.hs" 5 45 5 46
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "-")))
+                                      (TyPromoted
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 5 46 5 47
                                            , srcInfoPoints = []
                                            }
-                                         1
-                                         "1"))))))))
+                                         (PromotedInteger
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/InfixTypeMinus.hs" 5 46 5 47
+                                              , srcInfoPoints = []
+                                              }
+                                            1
+                                            "1")))))))))
                  (TyFun
                     SrcSpanInfo
                       { srcInfoSpan =
@@ -492,88 +502,98 @@
                                 , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 50 6 52
                                 ]
                             }
-                          (EqualP
+                          (TypeA
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/InfixTypeMinus.hs" 6 39 6 48
                                , srcInfoPoints =
                                    [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 45 6 46 ]
                                }
-                             (TyParen
+                             (TyEquals
                                 SrcSpanInfo
                                   { srcInfoSpan =
-                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 6 39 6 44
+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 6 39 6 48
                                   , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 39 6 40
-                                      , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 43 6 44
-                                      ]
+                                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 45 6 46 ]
                                   }
-                                (TyInfix
+                                (TyParen
                                    SrcSpanInfo
                                      { srcInfoSpan =
-                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 6 40 6 43
-                                     , srcInfoPoints = []
+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 6 39 6 44
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 39 6 40
+                                         , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 43 6 44
+                                         ]
                                      }
-                                   (TyVar
+                                   (TyInfix
                                       SrcSpanInfo
                                         { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 6 40 6 41
+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 6 40 6 43
                                         , srcInfoPoints = []
                                         }
-                                      (Ident
+                                      (TyVar
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 6 40 6 41
                                            , srcInfoPoints = []
                                            }
-                                         "n"))
-                                   (UnpromotedName
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 6 41 6 42
-                                        , srcInfoPoints = []
-                                        }
-                                      (UnQual
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/InfixTypeMinus.hs" 6 40 6 41
+                                              , srcInfoPoints = []
+                                              }
+                                            "n"))
+                                      (UnpromotedName
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 6 41 6 42
                                            , srcInfoPoints = []
                                            }
-                                         (Symbol
+                                         (UnQual
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/InfixTypeMinus.hs" 6 41 6 42
                                               , srcInfoPoints = []
                                               }
-                                            "-")))
-                                   (TyPromoted
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 6 42 6 43
-                                        , srcInfoPoints = []
-                                        }
-                                      (PromotedInteger
+                                            (Symbol
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/InfixTypeMinus.hs" 6 41 6 42
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "-")))
+                                      (TyPromoted
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 6 42 6 43
                                            , srcInfoPoints = []
                                            }
-                                         1
-                                         "1"))))
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 6 47 6 48
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
+                                         (PromotedInteger
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/InfixTypeMinus.hs" 6 42 6 43
+                                              , srcInfoPoints = []
+                                              }
+                                            1
+                                            "1"))))
+                                (TyVar
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/InfixTypeMinus.hs" 6 47 6 48
                                      , srcInfoPoints = []
                                      }
-                                   "m"))))))
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 6 47 6 48
+                                        , srcInfoPoints = []
+                                        }
+                                      "m")))))))
                  (TyFun
                     SrcSpanInfo
                       { srcInfoSpan =
@@ -798,88 +818,98 @@
                                 , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 50 7 52
                                 ]
                             }
-                          (EqualP
+                          (TypeA
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/InfixTypeMinus.hs" 7 39 7 48
                                , srcInfoPoints =
                                    [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 45 7 46 ]
                                }
-                             (TyParen
+                             (TyEquals
                                 SrcSpanInfo
                                   { srcInfoSpan =
-                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 7 39 7 44
+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 7 39 7 48
                                   , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 39 7 40
-                                      , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 43 7 44
-                                      ]
+                                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 45 7 46 ]
                                   }
-                                (TyInfix
+                                (TyParen
                                    SrcSpanInfo
                                      { srcInfoSpan =
-                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 7 40 7 43
-                                     , srcInfoPoints = []
+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 7 39 7 44
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 39 7 40
+                                         , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 43 7 44
+                                         ]
                                      }
-                                   (TyVar
+                                   (TyInfix
                                       SrcSpanInfo
                                         { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 7 40 7 41
+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 7 40 7 43
                                         , srcInfoPoints = []
                                         }
-                                      (Ident
+                                      (TyVar
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 7 40 7 41
                                            , srcInfoPoints = []
                                            }
-                                         "m"))
-                                   (UnpromotedName
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 7 41 7 42
-                                        , srcInfoPoints = []
-                                        }
-                                      (UnQual
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/InfixTypeMinus.hs" 7 40 7 41
+                                              , srcInfoPoints = []
+                                              }
+                                            "m"))
+                                      (UnpromotedName
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 7 41 7 42
                                            , srcInfoPoints = []
                                            }
-                                         (Symbol
+                                         (UnQual
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/InfixTypeMinus.hs" 7 41 7 42
                                               , srcInfoPoints = []
                                               }
-                                            "+")))
-                                   (TyPromoted
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 7 42 7 43
-                                        , srcInfoPoints = []
-                                        }
-                                      (PromotedInteger
+                                            (Symbol
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/InfixTypeMinus.hs" 7 41 7 42
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "+")))
+                                      (TyPromoted
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 7 42 7 43
                                            , srcInfoPoints = []
                                            }
-                                         1
-                                         "1"))))
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 7 47 7 48
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
+                                         (PromotedInteger
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/InfixTypeMinus.hs" 7 42 7 43
+                                              , srcInfoPoints = []
+                                              }
+                                            1
+                                            "1"))))
+                                (TyVar
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/InfixTypeMinus.hs" 7 47 7 48
                                      , srcInfoPoints = []
                                      }
-                                   "n"))))))
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 7 47 7 48
+                                        , srcInfoPoints = []
+                                        }
+                                      "n")))))))
                  (TyFun
                     SrcSpanInfo
                       { srcInfoSpan =
@@ -1104,88 +1134,98 @@
                                 , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 50 8 52
                                 ]
                             }
-                          (EqualP
+                          (TypeA
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/InfixTypeMinus.hs" 8 39 8 48
                                , srcInfoPoints =
                                    [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 41 8 42 ]
                                }
-                             (TyVar
+                             (TyEquals
                                 SrcSpanInfo
                                   { srcInfoSpan =
-                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 8 39 8 40
-                                  , srcInfoPoints = []
+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 8 39 8 48
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 41 8 42 ]
                                   }
-                                (Ident
+                                (TyVar
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/InfixTypeMinus.hs" 8 39 8 40
                                      , srcInfoPoints = []
                                      }
-                                   "n"))
-                             (TyParen
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 8 43 8 48
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 43 8 44
-                                      , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 47 8 48
-                                      ]
-                                  }
-                                (TyInfix
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 8 39 8 40
+                                        , srcInfoPoints = []
+                                        }
+                                      "n"))
+                                (TyParen
                                    SrcSpanInfo
                                      { srcInfoSpan =
-                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 8 44 8 47
-                                     , srcInfoPoints = []
+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 8 43 8 48
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 43 8 44
+                                         , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 47 8 48
+                                         ]
                                      }
-                                   (TyVar
+                                   (TyInfix
                                       SrcSpanInfo
                                         { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 8 44 8 45
+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 8 44 8 47
                                         , srcInfoPoints = []
                                         }
-                                      (Ident
+                                      (TyVar
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 8 44 8 45
                                            , srcInfoPoints = []
                                            }
-                                         "m"))
-                                   (UnpromotedName
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 8 45 8 46
-                                        , srcInfoPoints = []
-                                        }
-                                      (UnQual
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/InfixTypeMinus.hs" 8 44 8 45
+                                              , srcInfoPoints = []
+                                              }
+                                            "m"))
+                                      (UnpromotedName
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 8 45 8 46
                                            , srcInfoPoints = []
                                            }
-                                         (Symbol
+                                         (UnQual
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/InfixTypeMinus.hs" 8 45 8 46
                                               , srcInfoPoints = []
                                               }
-                                            "+")))
-                                   (TyPromoted
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 8 46 8 47
-                                        , srcInfoPoints = []
-                                        }
-                                      (PromotedInteger
+                                            (Symbol
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/InfixTypeMinus.hs" 8 45 8 46
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "+")))
+                                      (TyPromoted
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 8 46 8 47
                                            , srcInfoPoints = []
                                            }
-                                         1
-                                         "1"))))))))
+                                         (PromotedInteger
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/InfixTypeMinus.hs" 8 46 8 47
+                                              , srcInfoPoints = []
+                                              }
+                                            1
+                                            "1")))))))))
                  (TyFun
                     SrcSpanInfo
                       { srcInfoSpan =
diff --git a/tests/examples/InjectiveTypeFamilies.hs.parser.golden b/tests/examples/InjectiveTypeFamilies.hs.parser.golden
--- a/tests/examples/InjectiveTypeFamilies.hs.parser.golden
+++ b/tests/examples/InjectiveTypeFamilies.hs.parser.golden
@@ -15467,40 +15467,53 @@
                             , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 34 254 36
                             ]
                         }
-                      (ClassA
+                      (TypeA
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 31
                            , srcInfoPoints = []
                            }
-                         (UnQual
+                         (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 29
+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 31
                               , srcInfoPoints = []
                               }
-                            (Ident
+                            (TyCon
                                SrcSpanInfo
                                  { srcInfoSpan =
-                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 29
+                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 31
                                  , srcInfoPoints = []
                                  }
-                               "Manifold'"))
-                         [ TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 30 254 31
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan
-                                        "tests/examples/InjectiveTypeFamilies.hs" 254 30 254 31
-                                  , srcInfoPoints = []
-                                  }
-                                "a")
-                         ]))))
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan
+                                          "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 29
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan
+                                             "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 29
+                                       , srcInfoPoints = []
+                                       }
+                                     "Manifold'")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 30 254 31
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan
+                                          "tests/examples/InjectiveTypeFamilies.hs" 254 30 254 31
+                                    , srcInfoPoints = []
+                                    }
+                                  "a")))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/MultiCtxt.hs.parser.golden b/tests/examples/MultiCtxt.hs.parser.golden
--- a/tests/examples/MultiCtxt.hs.parser.golden
+++ b/tests/examples/MultiCtxt.hs.parser.golden
@@ -72,35 +72,46 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/MultiCtxt.hs" 5 21 5 23 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 23
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/MultiCtxt.hs" 5 21 5 23 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 18
-                           , srcInfoPoints = []
+                           { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 23
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/MultiCtxt.hs" 5 21 5 23 ]
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 18
+                              { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 23
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/MultiCtxt.hs" 5 21 5 23 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 18
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 18
+                                    , srcInfoPoints = []
+                                    }
+                                  "Eq")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 19 5 20
                               , srcInfoPoints = []
                               }
-                            "Eq"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 19 5 20
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 19 5 20
-                               , srcInfoPoints = []
-                               }
-                             "a")
-                      ])))
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 19 5 20
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))))))
              (TyParen
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 24 5 37
@@ -122,35 +133,49 @@
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/MultiCtxt.hs" 5 32 5 34 ]
                            }
-                         (ClassA
+                         (TypeA
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 34
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/MultiCtxt.hs" 5 32 5 34 ]
                               }
-                            (UnQual
+                            (TyApp
                                SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 29
-                                 , srcInfoPoints = []
+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 34
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/MultiCtxt.hs" 5 32 5 34 ]
                                  }
-                               (Ident
+                               (TyCon
                                   SrcSpanInfo
-                                    { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 29
+                                    { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 34
+                                    , srcInfoPoints =
+                                        [ SrcSpan "tests/examples/MultiCtxt.hs" 5 32 5 34 ]
+                                    }
+                                  (UnQual
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 29
+                                       , srcInfoPoints = []
+                                       }
+                                     (Ident
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 29
+                                          , srcInfoPoints = []
+                                          }
+                                        "Show")))
+                               (TyVar
+                                  SrcSpanInfo
+                                    { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 30 5 31
                                     , srcInfoPoints = []
                                     }
-                                  "Show"))
-                            [ TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 30 5 31
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 30 5 31
-                                     , srcInfoPoints = []
-                                     }
-                                   "a")
-                            ])))
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/MultiCtxt.hs" 5 30 5 31
+                                       , srcInfoPoints = []
+                                       }
+                                     "a"))))))
                    (TyVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 35 5 36
diff --git a/tests/examples/MultiParam.hs.parser.golden b/tests/examples/MultiParam.hs.parser.golden
--- a/tests/examples/MultiParam.hs.parser.golden
+++ b/tests/examples/MultiParam.hs.parser.golden
@@ -56,46 +56,64 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/MultiParam.hs" 3 23 3 25 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 25
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/MultiParam.hs" 3 23 3 25 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 18
-                           , srcInfoPoints = []
+                           { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 25
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/MultiParam.hs" 3 23 3 25 ]
                            }
-                         (Ident
+                         (TyApp
                             SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 18
+                              { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 25
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/MultiParam.hs" 3 23 3 25 ]
+                              }
+                            (TyCon
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 25
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/MultiParam.hs" 3 23 3 25 ]
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 18
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/MultiParam.hs" 3 8 3 18
+                                       , srcInfoPoints = []
+                                       }
+                                     "MonadError")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 19 3 20
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 19 3 20
+                                    , srcInfoPoints = []
+                                    }
+                                  "e")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 21 3 22
                               , srcInfoPoints = []
                               }
-                            "MonadError"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 19 3 20
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 19 3 20
-                               , srcInfoPoints = []
-                               }
-                             "e")
-                      , TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 21 3 22
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 21 3 22
-                               , srcInfoPoints = []
-                               }
-                             "m")
-                      ])))
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 21 3 22
+                                 , srcInfoPoints = []
+                                 }
+                               "m"))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 26 3 35
diff --git a/tests/examples/NoStartNumIdents.hs b/tests/examples/NoStartNumIdents.hs
new file mode 100644
--- /dev/null
+++ b/tests/examples/NoStartNumIdents.hs
@@ -0,0 +1,1 @@
+1a = ()
diff --git a/tests/examples/NoStartNumIdents.hs.exactprinter.golden b/tests/examples/NoStartNumIdents.hs.exactprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/NoStartNumIdents.hs.exactprinter.golden
@@ -0,0 +1,1 @@
+ParseFailed (SrcLoc "tests/examples/NoStartNumIdents.hs" 2 1) "Parse error in pattern: 1"
diff --git a/tests/examples/NoStartNumIdents.hs.parser.golden b/tests/examples/NoStartNumIdents.hs.parser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/NoStartNumIdents.hs.parser.golden
@@ -0,0 +1,3 @@
+ParseFailed
+  (SrcLoc "tests/examples/NoStartNumIdents.hs" 2 1)
+  "Parse error in pattern: 1"
diff --git a/tests/examples/NoStartNumIdents.hs.prettyparser.golden b/tests/examples/NoStartNumIdents.hs.prettyparser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/NoStartNumIdents.hs.prettyparser.golden
@@ -0,0 +1,1 @@
+ParseFailed (SrcLoc "tests/examples/NoStartNumIdents.hs" 2 1) "Parse error in pattern: 1"
diff --git a/tests/examples/NoStartNumIdents.hs.prettyprinter.golden b/tests/examples/NoStartNumIdents.hs.prettyprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/NoStartNumIdents.hs.prettyprinter.golden
@@ -0,0 +1,1 @@
+ParseFailed (SrcLoc "tests/examples/NoStartNumIdents.hs" 2 1) "Parse error in pattern: 1"
diff --git a/tests/examples/OverloadedLabels.hs.parser.golden b/tests/examples/OverloadedLabels.hs.parser.golden
--- a/tests/examples/OverloadedLabels.hs.parser.golden
+++ b/tests/examples/OverloadedLabels.hs.parser.golden
@@ -425,54 +425,74 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/OverloadedLabels.hs" 19 23 19 25 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 25
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/OverloadedLabels.hs" 19 23 19 25 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 13
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 25
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/OverloadedLabels.hs" 19 23 19 25 ]
                            }
-                         (Ident
+                         (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 13
+                                  SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 25
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/OverloadedLabels.hs" 19 23 19 25 ]
+                              }
+                            (TyCon
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 25
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/OverloadedLabels.hs" 19 23 19 25 ]
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 13
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 13
+                                       , srcInfoPoints = []
+                                       }
+                                     "IsLabel")))
+                            (TyPromoted
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/OverloadedLabels.hs" 19 14 19 20
+                                 , srcInfoPoints = []
+                                 }
+                               (PromotedString
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/OverloadedLabels.hs" 19 14 19 20
+                                    , srcInfoPoints = []
+                                    }
+                                  "true"
+                                  "true")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/OverloadedLabels.hs" 19 21 19 22
                               , srcInfoPoints = []
                               }
-                            "IsLabel"))
-                      [ TyPromoted
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/OverloadedLabels.hs" 19 14 19 20
-                            , srcInfoPoints = []
-                            }
-                          (PromotedString
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/OverloadedLabels.hs" 19 14 19 20
-                               , srcInfoPoints = []
-                               }
-                             "true"
-                             "true")
-                      , TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/OverloadedLabels.hs" 19 21 19 22
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/OverloadedLabels.hs" 19 21 19 22
-                               , srcInfoPoints = []
-                               }
-                             "t")
-                      ])))
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/OverloadedLabels.hs" 19 21 19 22
+                                 , srcInfoPoints = []
+                                 }
+                               "t"))))))
              (TyVar
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/PartialSignatures.hs.parser.golden b/tests/examples/PartialSignatures.hs.parser.golden
--- a/tests/examples/PartialSignatures.hs.parser.golden
+++ b/tests/examples/PartialSignatures.hs.parser.golden
@@ -4024,14 +4024,21 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/PartialSignatures.hs" 51 12 51 14 ]
                      }
-                   (WildCardA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/PartialSignatures.hs" 51 10 51 14
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/PartialSignatures.hs" 51 12 51 14 ]
                         }
-                      Nothing)))
+                      (TyWildCard
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PartialSignatures.hs" 51 10 51 14
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 51 12 51 14 ]
+                           }
+                         Nothing))))
              (TyWildCard
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -4110,14 +4117,21 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/PartialSignatures.hs" 55 12 55 14 ]
                      }
-                   (WildCardA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/PartialSignatures.hs" 55 10 55 14
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/PartialSignatures.hs" 55 12 55 14 ]
                         }
-                      Nothing)))
+                      (TyWildCard
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PartialSignatures.hs" 55 10 55 14
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 55 12 55 14 ]
+                           }
+                         Nothing))))
              (TyWildCard
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -4440,47 +4454,60 @@
                      { srcInfoSpan =
                          SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 19
                      , srcInfoPoints =
-                         [ SrcSpan "tests/examples/PartialSignatures.hs" 61 17 61 19 ]
+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 61 10 61 11
+                         , SrcSpan "tests/examples/PartialSignatures.hs" 61 17 61 19
+                         ]
                      }
-                   (EqualP
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
-                            SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 16
+                            SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 19
                         , srcInfoPoints =
-                            [ SrcSpan "tests/examples/PartialSignatures.hs" 61 10 61 11 ]
+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 61 10 61 11
+                            , SrcSpan "tests/examples/PartialSignatures.hs" 61 17 61 19
+                            ]
                         }
-                      (TyVar
+                      (TyEquals
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 9
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 19
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 61 10 61 11
+                               , SrcSpan "tests/examples/PartialSignatures.hs" 61 17 61 19
+                               ]
                            }
-                         (Ident
+                         (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 9
                               , srcInfoPoints = []
                               }
-                            "a"))
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/PartialSignatures.hs" 61 12 61 16
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 9
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/PartialSignatures.hs" 61 12 61 16
                               , srcInfoPoints = []
                               }
-                            (Ident
+                            (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/PartialSignatures.hs" 61 12 61 16
                                  , srcInfoPoints = []
                                  }
-                               "Bool"))))))
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/PartialSignatures.hs" 61 12 61 16
+                                    , srcInfoPoints = []
+                                    }
+                                  "Bool")))))))
              (TyTuple
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -5765,14 +5792,21 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/PartialSignatures.hs" 82 15 82 17 ]
                      }
-                   (WildCardA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/PartialSignatures.hs" 82 13 82 17
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/PartialSignatures.hs" 82 15 82 17 ]
                         }
-                      Nothing)))
+                      (TyWildCard
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PartialSignatures.hs" 82 13 82 17
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 82 15 82 17 ]
+                           }
+                         Nothing))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -6093,46 +6127,63 @@
                          , SrcSpan "tests/examples/PartialSignatures.hs" 85 25 85 27
                          ]
                      }
-                   [ ClassA
+                   [ TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 20
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 18
+                                SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 20
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 18
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 20
                                , srcInfoPoints = []
                                }
-                             "Show"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/PartialSignatures.hs" 85 19 85 20
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/PartialSignatures.hs" 85 19 85 20
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , WildCardA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 18
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 18
+                                     , srcInfoPoints = []
+                                     }
+                                   "Show")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 85 19 85 20
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 85 19 85 20
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 85 22 85 23
                          , srcInfoPoints = []
                          }
-                       Nothing
+                       (TyWildCard
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/PartialSignatures.hs" 85 22 85 23
+                            , srcInfoPoints = []
+                            }
+                          Nothing)
                    ]))
              (TyFun
                 SrcSpanInfo
@@ -6294,79 +6345,107 @@
                          , SrcSpan "tests/examples/PartialSignatures.hs" 88 33 88 35
                          ]
                      }
-                   [ ClassA
+                   [ TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 20
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 18
+                                SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 20
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 18
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 20
                                , srcInfoPoints = []
                                }
-                             "Show"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/PartialSignatures.hs" 88 19 88 20
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/PartialSignatures.hs" 88 19 88 20
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , ClassA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 18
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 18
+                                     , srcInfoPoints = []
+                                     }
+                                   "Show")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 88 19 88 20
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 88 19 88 20
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 28
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 26
+                                SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 28
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 26
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 28
                                , srcInfoPoints = []
                                }
-                             "Enum"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/PartialSignatures.hs" 88 27 88 28
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/PartialSignatures.hs" 88 27 88 28
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , WildCardA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 26
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 26
+                                     , srcInfoPoints = []
+                                     }
+                                   "Enum")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 88 27 88 28
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 88 27 88 28
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 88 30 88 31
                          , srcInfoPoints = []
                          }
-                       Nothing
+                       (TyWildCard
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/PartialSignatures.hs" 88 30 88 31
+                            , srcInfoPoints = []
+                            }
+                          Nothing)
                    ]))
              (TyFun
                 SrcSpanInfo
@@ -6527,46 +6606,63 @@
                          , SrcSpan "tests/examples/PartialSignatures.hs" 91 23 91 25
                          ]
                      }
-                   [ ClassA
+                   [ TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 18
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 16
+                                SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 18
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 16
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 18
                                , srcInfoPoints = []
                                }
-                             "Eq"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/PartialSignatures.hs" 91 17 91 18
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/PartialSignatures.hs" 91 17 91 18
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , WildCardA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 16
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 16
+                                     , srcInfoPoints = []
+                                     }
+                                   "Eq")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 91 17 91 18
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 91 17 91 18
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 91 20 91 21
                          , srcInfoPoints = []
                          }
-                       Nothing
+                       (TyWildCard
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/PartialSignatures.hs" 91 20 91 21
+                            , srcInfoPoints = []
+                            }
+                          Nothing)
                    ]))
              (TyFun
                 SrcSpanInfo
@@ -6729,112 +6825,151 @@
                          , SrcSpan "tests/examples/PartialSignatures.hs" 94 39 94 41
                          ]
                      }
-                   [ ClassA
+                   [ TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 18
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 16
+                                SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 18
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 16
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 18
                                , srcInfoPoints = []
                                }
-                             "Eq"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/PartialSignatures.hs" 94 17 94 18
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/PartialSignatures.hs" 94 17 94 18
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , ClassA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 16
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 16
+                                     , srcInfoPoints = []
+                                     }
+                                   "Eq")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 17 94 18
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 94 17 94 18
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 26
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 24
+                                SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 26
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 24
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 26
                                , srcInfoPoints = []
                                }
-                             "Enum"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/PartialSignatures.hs" 94 25 94 26
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/PartialSignatures.hs" 94 25 94 26
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , ClassA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 24
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "Enum")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 25 94 26
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 94 25 94 26
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 34
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 32
+                                SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 34
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 32
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 34
                                , srcInfoPoints = []
                                }
-                             "Show"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/PartialSignatures.hs" 94 33 94 34
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/PartialSignatures.hs" 94 33 94 34
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , WildCardA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 32
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 32
+                                     , srcInfoPoints = []
+                                     }
+                                   "Show")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 33 94 34
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 94 33 94 34
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 94 36 94 37
                          , srcInfoPoints = []
                          }
-                       Nothing
+                       (TyWildCard
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/PartialSignatures.hs" 94 36 94 37
+                            , srcInfoPoints = []
+                            }
+                          Nothing)
                    ]))
              (TyFun
                 SrcSpanInfo
@@ -6991,14 +7126,21 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/PartialSignatures.hs" 98 10 98 12 ]
                      }
-                   (WildCardA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/PartialSignatures.hs" 98 8 98 12
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/PartialSignatures.hs" 98 10 98 12 ]
                         }
-                      Nothing)))
+                      (TyWildCard
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PartialSignatures.hs" 98 8 98 12
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 98 10 98 12 ]
+                           }
+                         Nothing))))
              (TyCon
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -7089,14 +7231,21 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/PartialSignatures.hs" 105 10 105 12 ]
                      }
-                   (WildCardA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/PartialSignatures.hs" 105 8 105 12
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/PartialSignatures.hs" 105 10 105 12 ]
                         }
-                      Nothing)))
+                      (TyWildCard
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PartialSignatures.hs" 105 8 105 12
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 105 10 105 12 ]
+                           }
+                         Nothing))))
              (TyVar
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -7181,14 +7330,21 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/PartialSignatures.hs" 109 10 109 12 ]
                      }
-                   (WildCardA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/PartialSignatures.hs" 109 8 109 12
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/PartialSignatures.hs" 109 10 109 12 ]
                         }
-                      Nothing)))
+                      (TyWildCard
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PartialSignatures.hs" 109 8 109 12
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 109 10 109 12 ]
+                           }
+                         Nothing))))
              (TyVar
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -10535,13 +10691,19 @@
                             , SrcSpan "tests/examples/PartialSignatures.hs" 187 10 187 12
                             ]
                         }
-                      (WildCardA
+                      (TypeA
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/PartialSignatures.hs" 187 7 187 8
                            , srcInfoPoints = []
                            }
-                         Nothing))))
+                         (TyWildCard
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PartialSignatures.hs" 187 7 187 8
+                              , srcInfoPoints = []
+                              }
+                            Nothing)))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -12349,41 +12511,54 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/PartialSignatures.hs" 230 20 230 22 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 22
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/PartialSignatures.hs" 230 20 230 22 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 16
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 22
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 230 20 230 22 ]
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 16
+                                  SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 22
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/PartialSignatures.hs" 230 20 230 22 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 16
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 16
+                                    , srcInfoPoints = []
+                                    }
+                                  "Show")))
+                         (TyWildCard
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PartialSignatures.hs" 230 17 230 19
                               , srcInfoPoints = []
                               }
-                            "Show"))
-                      [ TyWildCard
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/PartialSignatures.hs" 230 17 230 19
-                            , srcInfoPoints = []
-                            }
-                          (Just
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/PartialSignatures.hs" 230 18 230 19
-                                  , srcInfoPoints = []
-                                  }
-                                "a"))
-                      ])))
+                            (Just
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/PartialSignatures.hs" 230 18 230 19
+                                    , srcInfoPoints = []
+                                    }
+                                  "a")))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -13138,41 +13313,54 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/PartialSignatures.hs" 246 30 246 32 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 32
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/PartialSignatures.hs" 246 30 246 32 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 26
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 32
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 246 30 246 32 ]
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 26
+                                  SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 32
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/PartialSignatures.hs" 246 30 246 32 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 26
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 26
+                                    , srcInfoPoints = []
+                                    }
+                                  "Show")))
+                         (TyWildCard
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PartialSignatures.hs" 246 27 246 29
                               , srcInfoPoints = []
                               }
-                            "Show"))
-                      [ TyWildCard
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/PartialSignatures.hs" 246 27 246 29
-                            , srcInfoPoints = []
-                            }
-                          (Just
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/PartialSignatures.hs" 246 28 246 29
-                                  , srcInfoPoints = []
-                                  }
-                                "x"))
-                      ])))
+                            (Just
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/PartialSignatures.hs" 246 28 246 29
+                                    , srcInfoPoints = []
+                                    }
+                                  "x")))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -14211,14 +14399,21 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/PartialSignatures.hs" 261 9 261 11 ]
                      }
-                   (WildCardA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/PartialSignatures.hs" 261 7 261 11
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/PartialSignatures.hs" 261 9 261 11 ]
                         }
-                      Nothing)))
+                      (TyWildCard
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PartialSignatures.hs" 261 7 261 11
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 261 9 261 11 ]
+                           }
+                         Nothing))))
              (TyWildCard
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -16075,47 +16270,64 @@
                          , SrcSpan "tests/examples/PartialSignatures.hs" 289 21 289 23
                          ]
                      }
-                   [ ClassA
+                   [ TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 16
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 13
+                                SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 16
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 13
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 16
                                , srcInfoPoints = []
                                }
-                             "Show"))
-                       [ TyWildCard
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/PartialSignatures.hs" 289 14 289 16
-                             , srcInfoPoints = []
-                             }
-                           (Just
-                              (Ident
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/PartialSignatures.hs" 289 15 289 16
-                                   , srcInfoPoints = []
-                                   }
-                                 "a"))
-                       ]
-                   , WildCardA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 13
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 13
+                                     , srcInfoPoints = []
+                                     }
+                                   "Show")))
+                          (TyWildCard
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 289 14 289 16
+                               , srcInfoPoints = []
+                               }
+                             (Just
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/PartialSignatures.hs" 289 15 289 16
+                                     , srcInfoPoints = []
+                                     }
+                                   "a"))))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 289 18 289 19
                          , srcInfoPoints = []
                          }
-                       Nothing
+                       (TyWildCard
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/PartialSignatures.hs" 289 18 289 19
+                            , srcInfoPoints = []
+                            }
+                          Nothing)
                    ]))
              (TyFun
                 SrcSpanInfo
diff --git a/tests/examples/PatternSynonymSignatures.hs.parser.golden b/tests/examples/PatternSynonymSignatures.hs.parser.golden
--- a/tests/examples/PatternSynonymSignatures.hs.parser.golden
+++ b/tests/examples/PatternSynonymSignatures.hs.parser.golden
@@ -163,40 +163,53 @@
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 23 8 25 ]
                   }
-                (ClassA
+                (TypeA
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 25
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 23 8 25 ]
                      }
-                   (UnQual
+                   (TyApp
                       SrcSpanInfo
                         { srcInfoSpan =
-                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 20
-                        , srcInfoPoints = []
+                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 25
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 23 8 25 ]
                         }
-                      (Ident
+                      (TyCon
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 20
+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 25
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 23 8 25 ]
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 20
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 20
+                                 , srcInfoPoints = []
+                                 }
+                               "Show")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 21 8 22
                            , srcInfoPoints = []
                            }
-                         "Show"))
-                   [ TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 21 8 22
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 21 8 22
-                            , srcInfoPoints = []
-                            }
-                          "a")
-                   ])))
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 21 8 22
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
           Nothing
           (Just
              (CxSingle
@@ -206,40 +219,53 @@
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 33 8 35 ]
                   }
-                (ClassA
+                (TypeA
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 35
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 33 8 35 ]
                      }
-                   (UnQual
+                   (TyApp
                       SrcSpanInfo
                         { srcInfoSpan =
-                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 30
-                        , srcInfoPoints = []
+                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 35
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 33 8 35 ]
                         }
-                      (Ident
+                      (TyCon
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 30
+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 35
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 33 8 35 ]
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 30
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 30
+                                 , srcInfoPoints = []
+                                 }
+                               "Show")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 31 8 32
                            , srcInfoPoints = []
                            }
-                         "Show"))
-                   [ TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 31 8 32
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 31 8 32
-                            , srcInfoPoints = []
-                            }
-                          "b")
-                   ])))
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 31 8 32
+                              , srcInfoPoints = []
+                              }
+                            "b"))))))
           (TyCon
              SrcSpanInfo
                { srcInfoSpan =
@@ -286,7 +312,7 @@
                       [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 23 10 25
                       ]
                   }
-                (ClassA
+                (TypeA
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 16 10 25
@@ -294,33 +320,49 @@
                          [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 23 10 25
                          ]
                      }
-                   (UnQual
+                   (TyApp
                       SrcSpanInfo
                         { srcInfoSpan =
-                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 16 10 20
-                        , srcInfoPoints = []
+                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 16 10 25
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 23 10 25
+                            ]
                         }
-                      (Ident
+                      (TyCon
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 16 10 20
+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 16 10 25
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 23 10 25
+                               ]
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 16 10 20
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan
+                                       "tests/examples/PatternSynonymSignatures.hs" 10 16 10 20
+                                 , srcInfoPoints = []
+                                 }
+                               "Show")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 21 10 22
                            , srcInfoPoints = []
                            }
-                         "Show"))
-                   [ TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 21 10 22
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 21 10 22
-                            , srcInfoPoints = []
-                            }
-                          "b")
-                   ])))
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 21 10 22
+                              , srcInfoPoints = []
+                              }
+                            "b"))))))
           Nothing
           Nothing
           (TyCon
@@ -369,7 +411,7 @@
                       [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 23 12 25
                       ]
                   }
-                (ClassA
+                (TypeA
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 16 12 25
@@ -377,33 +419,49 @@
                          [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 23 12 25
                          ]
                      }
-                   (UnQual
+                   (TyApp
                       SrcSpanInfo
                         { srcInfoSpan =
-                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 16 12 20
-                        , srcInfoPoints = []
+                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 16 12 25
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 23 12 25
+                            ]
                         }
-                      (Ident
+                      (TyCon
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 16 12 20
+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 16 12 25
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 23 12 25
+                               ]
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 16 12 20
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan
+                                       "tests/examples/PatternSynonymSignatures.hs" 12 16 12 20
+                                 , srcInfoPoints = []
+                                 }
+                               "Show")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 21 12 22
                            , srcInfoPoints = []
                            }
-                         "Show"))
-                   [ TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 21 12 22
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 21 12 22
-                            , srcInfoPoints = []
-                            }
-                          "b")
-                   ])))
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 21 12 22
+                              , srcInfoPoints = []
+                              }
+                            "b"))))))
           Nothing
           (Just
              (CxEmpty
@@ -474,7 +532,7 @@
                       [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 29 14 31
                       ]
                   }
-                (ClassA
+                (TypeA
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 22 14 31
@@ -482,33 +540,49 @@
                          [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 29 14 31
                          ]
                      }
-                   (UnQual
+                   (TyApp
                       SrcSpanInfo
                         { srcInfoSpan =
-                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 22 14 26
-                        , srcInfoPoints = []
+                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 22 14 31
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 29 14 31
+                            ]
                         }
-                      (Ident
+                      (TyCon
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 22 14 26
+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 22 14 31
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 29 14 31
+                               ]
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 22 14 26
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan
+                                       "tests/examples/PatternSynonymSignatures.hs" 14 22 14 26
+                                 , srcInfoPoints = []
+                                 }
+                               "Show")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 27 14 28
                            , srcInfoPoints = []
                            }
-                         "Show"))
-                   [ TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 27 14 28
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 27 14 28
-                            , srcInfoPoints = []
-                            }
-                          "b")
-                   ])))
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 27 14 28
+                              , srcInfoPoints = []
+                              }
+                            "b"))))))
           (TyCon
              SrcSpanInfo
                { srcInfoSpan =
diff --git a/tests/examples/PatternSynonyms3.hs.parser.golden b/tests/examples/PatternSynonyms3.hs.parser.golden
--- a/tests/examples/PatternSynonyms3.hs.parser.golden
+++ b/tests/examples/PatternSynonyms3.hs.parser.golden
@@ -624,39 +624,50 @@
                          , SrcSpan "tests/examples/PatternSynonyms3.hs" 16 34 16 36
                          ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 32
                         , srcInfoPoints = []
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 30
+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 32
                            , srcInfoPoints = []
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 30
+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 32
                               , srcInfoPoints = []
                               }
-                            "Show"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/PatternSynonyms3.hs" 16 31 16 32
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/PatternSynonyms3.hs" 16 31 16 32
-                               , srcInfoPoints = []
-                               }
-                             "a")
-                      ]))))
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 30
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 30
+                                    , srcInfoPoints = []
+                                    }
+                                  "Show")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 16 31 16 32
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 16 31 16 32
+                                 , srcInfoPoints = []
+                                 }
+                               "a")))))))
           (TyFun
              SrcSpanInfo
                { srcInfoSpan =
@@ -808,39 +819,50 @@
                             , SrcSpan "tests/examples/PatternSynonyms3.hs" 19 15 19 17
                             ]
                         }
-                      (ClassA
+                      (TypeA
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 13
                            , srcInfoPoints = []
                            }
-                         (UnQual
+                         (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 11
+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 13
                               , srcInfoPoints = []
                               }
-                            (Ident
+                            (TyCon
                                SrcSpanInfo
                                  { srcInfoSpan =
-                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 11
+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 13
                                  , srcInfoPoints = []
                                  }
-                               "Show"))
-                         [ TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/PatternSynonyms3.hs" 19 12 19 13
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/PatternSynonyms3.hs" 19 12 19 13
-                                  , srcInfoPoints = []
-                                  }
-                                "a")
-                         ]))))
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 11
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 11
+                                       , srcInfoPoints = []
+                                       }
+                                     "Show")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 19 12 19 13
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/PatternSynonyms3.hs" 19 12 19 13
+                                    , srcInfoPoints = []
+                                    }
+                                  "a")))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -1195,39 +1217,50 @@
                             , SrcSpan "tests/examples/PatternSynonyms3.hs" 25 15 25 17
                             ]
                         }
-                      (ClassA
+                      (TypeA
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 13
                            , srcInfoPoints = []
                            }
-                         (UnQual
+                         (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 11
+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 13
                               , srcInfoPoints = []
                               }
-                            (Ident
+                            (TyCon
                                SrcSpanInfo
                                  { srcInfoSpan =
-                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 11
+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 13
                                  , srcInfoPoints = []
                                  }
-                               "Show"))
-                         [ TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/PatternSynonyms3.hs" 25 12 25 13
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/PatternSynonyms3.hs" 25 12 25 13
-                                  , srcInfoPoints = []
-                                  }
-                                "a")
-                         ]))))
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 11
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 11
+                                       , srcInfoPoints = []
+                                       }
+                                     "Show")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 25 12 25 13
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/PatternSynonyms3.hs" 25 12 25 13
+                                    , srcInfoPoints = []
+                                    }
+                                  "a")))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -1850,70 +1883,81 @@
                          , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 31 36 33
                          ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 29
                         , srcInfoPoints = []
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 19
+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 29
                            , srcInfoPoints = []
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 19
+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 29
                               , srcInfoPoints = []
                               }
-                            "Show"))
-                      [ TyTuple
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/PatternSynonyms3.hs" 36 20 36 29
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 20 36 21
-                                , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 22 36 23
-                                , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 28 36 29
-                                ]
-                            }
-                          Boxed
-                          [ TyVar
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/PatternSynonyms3.hs" 36 21 36 22
-                                , srcInfoPoints = []
-                                }
-                              (Ident
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/PatternSynonyms3.hs" 36 21 36 22
-                                   , srcInfoPoints = []
-                                   }
-                                 "a")
-                          , TyCon
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/PatternSynonyms3.hs" 36 24 36 28
-                                , srcInfoPoints = []
-                                }
-                              (UnQual
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/PatternSynonyms3.hs" 36 24 36 28
-                                   , srcInfoPoints = []
-                                   }
-                                 (Ident
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/PatternSynonyms3.hs" 36 24 36 28
-                                      , srcInfoPoints = []
-                                      }
-                                    "Bool"))
-                          ]
-                      ]))))
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 19
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 19
+                                    , srcInfoPoints = []
+                                    }
+                                  "Show")))
+                         (TyTuple
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 36 20 36 29
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 20 36 21
+                                  , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 22 36 23
+                                  , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 28 36 29
+                                  ]
+                              }
+                            Boxed
+                            [ TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PatternSynonyms3.hs" 36 21 36 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/PatternSynonyms3.hs" 36 21 36 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")
+                            , TyCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PatternSynonyms3.hs" 36 24 36 28
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/PatternSynonyms3.hs" 36 24 36 28
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/PatternSynonyms3.hs" 36 24 36 28
+                                        , srcInfoPoints = []
+                                        }
+                                      "Bool"))
+                            ]))))))
           Nothing
           Nothing
           (TyFun
diff --git a/tests/examples/QuantifiedConstraints.hs b/tests/examples/QuantifiedConstraints.hs
new file mode 100644
--- /dev/null
+++ b/tests/examples/QuantifiedConstraints.hs
@@ -0,0 +1,4 @@
+{-# LANGUAGE ExplicitForAll #-}
+{-# LANGUAGE QuantifiedConstraints #-}
+
+class (forall a. Eq (f a)) => C f
diff --git a/tests/examples/QuantifiedConstraints.hs.exactprinter.golden b/tests/examples/QuantifiedConstraints.hs.exactprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/QuantifiedConstraints.hs.exactprinter.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/QuantifiedConstraints.hs.parser.golden b/tests/examples/QuantifiedConstraints.hs.parser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/QuantifiedConstraints.hs.parser.golden
@@ -0,0 +1,222 @@
+ParseOk
+  ( Module
+      SrcSpanInfo
+        { srcInfoSpan =
+            SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 1 5 1
+        , srcInfoPoints =
+            [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 1 1 1
+            , SrcSpan "tests/examples/QuantifiedConstraints.hs" 2 1 2 1
+            , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 1 4 1
+            , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 1 4 1
+            , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 1 4 1
+            , SrcSpan "tests/examples/QuantifiedConstraints.hs" 5 1 5 1
+            , SrcSpan "tests/examples/QuantifiedConstraints.hs" 5 1 5 1
+            ]
+        }
+      Nothing
+      [ LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 1 1 32
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 1 1 13
+                , SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 29 1 32
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 14 1 28
+                , srcInfoPoints = []
+                }
+              "ExplicitForAll"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/QuantifiedConstraints.hs" 2 1 2 39
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 2 1 2 13
+                , SrcSpan "tests/examples/QuantifiedConstraints.hs" 2 36 2 39
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/QuantifiedConstraints.hs" 2 14 2 35
+                , srcInfoPoints = []
+                }
+              "QuantifiedConstraints"
+          ]
+      ]
+      []
+      [ ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 1 4 34
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 1 4 6 ]
+            }
+          (Just
+             (CxSingle
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 7 4 30
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 7 4 8
+                      , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 26 4 27
+                      , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 28 4 30
+                      ]
+                  }
+                (ParenA
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 7 4 30
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 7 4 8
+                         , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 26 4 27
+                         , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 28 4 30
+                         ]
+                     }
+                   (TypeA
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 8 4 26
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 8 4 14
+                            , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 16 4 17
+                            ]
+                        }
+                      (TyForall
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 8 4 26
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 8 4 14
+                               , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 16 4 17
+                               ]
+                           }
+                         (Just
+                            [ UnkindedVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 15 4 16
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 15 4 16
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")
+                            ])
+                         Nothing
+                         (TyApp
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 18 4 26
+                              , srcInfoPoints = []
+                              }
+                            (TyCon
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 18 4 20
+                                 , srcInfoPoints = []
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 18 4 20
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan
+                                             "tests/examples/QuantifiedConstraints.hs" 4 18 4 20
+                                       , srcInfoPoints = []
+                                       }
+                                     "Eq")))
+                            (TyParen
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 21 4 26
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 21 4 22
+                                     , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 25 4 26
+                                     ]
+                                 }
+                               (TyApp
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 22 4 25
+                                    , srcInfoPoints = []
+                                    }
+                                  (TyVar
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan
+                                             "tests/examples/QuantifiedConstraints.hs" 4 22 4 23
+                                       , srcInfoPoints = []
+                                       }
+                                     (Ident
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan
+                                                "tests/examples/QuantifiedConstraints.hs" 4 22 4 23
+                                          , srcInfoPoints = []
+                                          }
+                                        "f"))
+                                  (TyVar
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan
+                                             "tests/examples/QuantifiedConstraints.hs" 4 24 4 25
+                                       , srcInfoPoints = []
+                                       }
+                                     (Ident
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan
+                                                "tests/examples/QuantifiedConstraints.hs" 4 24 4 25
+                                          , srcInfoPoints = []
+                                          }
+                                        "a"))))))))))
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 31 4 34
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 31 4 32
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 31 4 32
+                     , srcInfoPoints = []
+                     }
+                   "C"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 33 4 34
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 33 4 34
+                     , srcInfoPoints = []
+                     }
+                   "f")))
+          []
+          Nothing
+      ]
+  , []
+  )
diff --git a/tests/examples/QuantifiedConstraints.hs.prettyparser.golden b/tests/examples/QuantifiedConstraints.hs.prettyparser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/QuantifiedConstraints.hs.prettyparser.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/QuantifiedConstraints.hs.prettyprinter.golden b/tests/examples/QuantifiedConstraints.hs.prettyprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/QuantifiedConstraints.hs.prettyprinter.golden
@@ -0,0 +1,4 @@
+{-# LANGUAGE ExplicitForAll #-}
+{-# LANGUAGE QuantifiedConstraints #-}
+
+class (forall a . Eq (f a)) => C f
diff --git a/tests/examples/RCategory.hs.parser.golden b/tests/examples/RCategory.hs.parser.golden
--- a/tests/examples/RCategory.hs.parser.golden
+++ b/tests/examples/RCategory.hs.parser.golden
@@ -335,1601 +335,1879 @@
                                , srcInfoPoints =
                                    [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8 ]
                                }
-                             (ClassA
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 9 19 8
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8 ]
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 18 9 18 22
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/RCategory.hs" 18 9 18 22
-                                        , srcInfoPoints = []
-                                        }
-                                      "RCategoryCtxt"))
-                                [ TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/RCategory.hs" 18 23 18 26
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/RCategory.hs" 18 23 18 26
-                                         , srcInfoPoints = []
-                                         }
-                                       "cat")
-                                , TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/RCategory.hs" 18 27 18 28
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/RCategory.hs" 18 27 18 28
-                                         , srcInfoPoints = []
-                                         }
-                                       "a")
-                                , TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/RCategory.hs" 18 29 18 30
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/RCategory.hs" 18 29 18 30
-                                         , srcInfoPoints = []
-                                         }
-                                       "a")
-                                ])))
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 9 19 16
-                            , srcInfoPoints = []
-                            }
-                          (TyApp
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 9 19 14
-                               , srcInfoPoints = []
-                               }
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 9 19 12
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 19 9 19 12
-                                     , srcInfoPoints = []
-                                     }
-                                   "cat"))
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 13 19 14
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 19 13 19 14
-                                     , srcInfoPoints = []
-                                     }
-                                   "a")))
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 15 19 16
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 15 19 16
-                                  , srcInfoPoints = []
-                                  }
-                                "a")))))
-             , ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 3 23 39
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/RCategory.hs" 22 7 22 9 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 3 23 39
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/RCategory.hs" 22 7 22 9 ]
-                      }
-                    [ Symbol
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 3 22 6
-                          , srcInfoPoints =
-                              [ SrcSpan "tests/examples/RCategory.hs" 22 3 22 4
-                              , SrcSpan "tests/examples/RCategory.hs" 22 4 22 5
-                              , SrcSpan "tests/examples/RCategory.hs" 22 5 22 6
-                              ]
-                          }
-                        "."
-                    ]
-                    (TyForall
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 10 23 39
-                         , srcInfoPoints = []
-                         }
-                       Nothing
-                       (Just
-                          (CxTuple
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 10 23 9
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/RCategory.hs" 22 10 22 11
-                                   , SrcSpan "tests/examples/RCategory.hs" 22 32 22 33
-                                   , SrcSpan "tests/examples/RCategory.hs" 22 55 22 56
-                                   , SrcSpan "tests/examples/RCategory.hs" 22 78 22 79
-                                   , SrcSpan "tests/examples/RCategory.hs" 23 7 23 9
-                                   ]
-                               }
-                             [ ClassA
-                                 SrcSpanInfo
-                                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 11 22 32
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/RCategory.hs" 22 11 22 24
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/RCategory.hs" 22 11 22 24
-                                         , srcInfoPoints = []
-                                         }
-                                       "RCategoryCtxt"))
-                                 [ TyVar
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/RCategory.hs" 22 25 22 28
-                                       , srcInfoPoints = []
-                                       }
-                                     (Ident
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/RCategory.hs" 22 25 22 28
-                                          , srcInfoPoints = []
-                                          }
-                                        "cat")
-                                 , TyVar
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/RCategory.hs" 22 29 22 30
-                                       , srcInfoPoints = []
-                                       }
-                                     (Ident
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/RCategory.hs" 22 29 22 30
-                                          , srcInfoPoints = []
-                                          }
-                                        "b")
-                                 , TyVar
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/RCategory.hs" 22 31 22 32
-                                       , srcInfoPoints = []
-                                       }
-                                     (Ident
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/RCategory.hs" 22 31 22 32
-                                          , srcInfoPoints = []
-                                          }
-                                        "c")
-                                 ]
-                             , ClassA
-                                 SrcSpanInfo
-                                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 34 22 55
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/RCategory.hs" 22 34 22 47
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/RCategory.hs" 22 34 22 47
-                                         , srcInfoPoints = []
-                                         }
-                                       "RCategoryCtxt"))
-                                 [ TyVar
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/RCategory.hs" 22 48 22 51
-                                       , srcInfoPoints = []
-                                       }
-                                     (Ident
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/RCategory.hs" 22 48 22 51
-                                          , srcInfoPoints = []
-                                          }
-                                        "cat")
-                                 , TyVar
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/RCategory.hs" 22 52 22 53
-                                       , srcInfoPoints = []
-                                       }
-                                     (Ident
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/RCategory.hs" 22 52 22 53
-                                          , srcInfoPoints = []
-                                          }
-                                        "a")
-                                 , TyVar
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/RCategory.hs" 22 54 22 55
-                                       , srcInfoPoints = []
-                                       }
-                                     (Ident
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/RCategory.hs" 22 54 22 55
-                                          , srcInfoPoints = []
-                                          }
-                                        "b")
-                                 ]
-                             , ClassA
-                                 SrcSpanInfo
-                                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 57 22 78
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/RCategory.hs" 22 57 22 70
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/RCategory.hs" 22 57 22 70
-                                         , srcInfoPoints = []
-                                         }
-                                       "RCategoryCtxt"))
-                                 [ TyVar
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/RCategory.hs" 22 71 22 74
-                                       , srcInfoPoints = []
-                                       }
-                                     (Ident
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/RCategory.hs" 22 71 22 74
-                                          , srcInfoPoints = []
-                                          }
-                                        "cat")
-                                 , TyVar
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/RCategory.hs" 22 75 22 76
-                                       , srcInfoPoints = []
-                                       }
-                                     (Ident
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/RCategory.hs" 22 75 22 76
-                                          , srcInfoPoints = []
-                                          }
-                                        "a")
-                                 , TyVar
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/RCategory.hs" 22 77 22 78
-                                       , srcInfoPoints = []
-                                       }
-                                     (Ident
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/RCategory.hs" 22 77 22 78
-                                          , srcInfoPoints = []
-                                          }
-                                        "c")
-                                 ]
-                             ]))
-                       (TyFun
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 10 23 39
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/RCategory.hs" 23 18 23 20 ]
-                            }
-                          (TyApp
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 10 23 17
-                               , srcInfoPoints = []
-                               }
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 10 23 15
-                                  , srcInfoPoints = []
-                                  }
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 23 10 23 13
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/RCategory.hs" 23 10 23 13
-                                        , srcInfoPoints = []
-                                        }
-                                      "cat"))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 23 14 23 15
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/RCategory.hs" 23 14 23 15
-                                        , srcInfoPoints = []
-                                        }
-                                      "b")))
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 16 23 17
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 23 16 23 17
-                                     , srcInfoPoints = []
-                                     }
-                                   "c")))
-                          (TyFun
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 21 23 39
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/RCategory.hs" 23 29 23 31 ]
-                               }
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 21 23 28
-                                  , srcInfoPoints = []
-                                  }
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 23 21 23 26
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/RCategory.hs" 23 21 23 24
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/RCategory.hs" 23 21 23 24
-                                           , srcInfoPoints = []
-                                           }
-                                         "cat"))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/RCategory.hs" 23 25 23 26
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/RCategory.hs" 23 25 23 26
-                                           , srcInfoPoints = []
-                                           }
-                                         "a")))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 23 27 23 28
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/RCategory.hs" 23 27 23 28
-                                        , srcInfoPoints = []
-                                        }
-                                      "b")))
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 32 23 39
-                                  , srcInfoPoints = []
-                                  }
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 23 32 23 37
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/RCategory.hs" 23 32 23 35
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/RCategory.hs" 23 32 23 35
-                                           , srcInfoPoints = []
-                                           }
-                                         "cat"))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/RCategory.hs" 23 36 23 37
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/RCategory.hs" 23 36 23 37
-                                           , srcInfoPoints = []
-                                           }
-                                         "a")))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 23 38 23 39
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/RCategory.hs" 23 38 23 39
-                                        , srcInfoPoints = []
-                                        }
-                                      "c")))))))
-             ])
-      , RulePragmaDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 25 1 30 5
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/RCategory.hs" 25 1 25 10
-                , SrcSpan "tests/examples/RCategory.hs" 30 2 30 5
-                ]
-            }
-          [ Rule
-              SrcSpanInfo
-                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 26 1 27 27
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/RCategory.hs" 26 1 26 16
-                    , SrcSpan "tests/examples/RCategory.hs" 26 17 26 23
-                    , SrcSpan "tests/examples/RCategory.hs" 26 26 26 27
-                    , SrcSpan "tests/examples/RCategory.hs" 27 24 27 25
-                    ]
-                }
-              "identity/left"
-              Nothing
-              (Just
-                 [ RuleVar
-                     SrcSpanInfo
-                       { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 26 24 26 25
-                       , srcInfoPoints = []
-                       }
-                     (Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 26 24 26 25
-                          , srcInfoPoints = []
-                          }
-                        "p")
-                 ])
-              (InfixApp
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 23
-                   , srcInfoPoints = []
-                   }
-                 (Var
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 19
-                      , srcInfoPoints = []
-                      }
-                    (UnQual
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 19
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 19
-                            , srcInfoPoints = []
-                            }
-                          "id")))
-                 (QVarOp
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 20 27 21
-                      , srcInfoPoints = []
-                      }
-                    (UnQual
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 20 27 21
-                         , srcInfoPoints = []
-                         }
-                       (Symbol
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 20 27 21
-                            , srcInfoPoints = []
-                            }
-                          ".")))
-                 (Var
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 22 27 23
-                      , srcInfoPoints = []
-                      }
-                    (UnQual
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 22 27 23
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 22 27 23
-                            , srcInfoPoints = []
-                            }
-                          "p"))))
-              (Var
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 26 27 27
-                   , srcInfoPoints = []
-                   }
-                 (UnQual
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 26 27 27
-                      , srcInfoPoints = []
-                      }
-                    (Ident
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 26 27 27
-                         , srcInfoPoints = []
-                         }
-                       "p")))
-          , Rule
-              SrcSpanInfo
-                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 28 1 29 27
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/RCategory.hs" 28 1 28 17
-                    , SrcSpan "tests/examples/RCategory.hs" 28 25 28 31
-                    , SrcSpan "tests/examples/RCategory.hs" 28 34 28 35
-                    , SrcSpan "tests/examples/RCategory.hs" 29 24 29 25
-                    ]
-                }
-              "identity/right"
-              Nothing
-              (Just
-                 [ RuleVar
-                     SrcSpanInfo
-                       { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 28 32 28 33
-                       , srcInfoPoints = []
-                       }
-                     (Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 28 32 28 33
-                          , srcInfoPoints = []
-                          }
-                        "p")
-                 ])
-              (InfixApp
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 23
-                   , srcInfoPoints = []
-                   }
-                 (Var
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 18
-                      , srcInfoPoints = []
-                      }
-                    (UnQual
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 18
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 18
-                            , srcInfoPoints = []
-                            }
-                          "p")))
-                 (QVarOp
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 19 29 20
-                      , srcInfoPoints = []
-                      }
-                    (UnQual
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 19 29 20
-                         , srcInfoPoints = []
-                         }
-                       (Symbol
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 19 29 20
-                            , srcInfoPoints = []
-                            }
-                          ".")))
-                 (Var
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 21 29 23
-                      , srcInfoPoints = []
-                      }
-                    (UnQual
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 21 29 23
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 21 29 23
-                            , srcInfoPoints = []
-                            }
-                          "id"))))
-              (Var
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 26 29 27
-                   , srcInfoPoints = []
-                   }
-                 (UnQual
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 26 29 27
-                      , srcInfoPoints = []
-                      }
-                    (Ident
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 26 29 27
-                         , srcInfoPoints = []
-                         }
-                       "p")))
-          ]
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 1 38 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/RCategory.hs" 32 1 32 9
-                , SrcSpan "tests/examples/RCategory.hs" 32 25 32 30
-                , SrcSpan "tests/examples/RCategory.hs" 33 3 33 3
-                , SrcSpan "tests/examples/RCategory.hs" 34 3 34 3
-                , SrcSpan "tests/examples/RCategory.hs" 35 3 35 3
-                , SrcSpan "tests/examples/RCategory.hs" 38 1 38 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 24
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 24
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 19
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 19
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 19
-                           , srcInfoPoints = []
-                           }
-                         "RCategory")))
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 20 32 24
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/RCategory.hs" 32 20 32 21
-                         , SrcSpan "tests/examples/RCategory.hs" 32 21 32 23
-                         , SrcSpan "tests/examples/RCategory.hs" 32 23 32 24
-                         ]
-                     }
-                   (Special
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 20 32 24
-                        , srcInfoPoints =
-                            [ SrcSpan "tests/examples/RCategory.hs" 32 20 32 21
-                            , SrcSpan "tests/examples/RCategory.hs" 32 21 32 23
-                            , SrcSpan "tests/examples/RCategory.hs" 32 23 32 24
-                            ]
-                        }
-                      (FunCon
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 20 32 24
-                           , srcInfoPoints =
-                               [ SrcSpan "tests/examples/RCategory.hs" 32 20 32 21
-                               , SrcSpan "tests/examples/RCategory.hs" 32 21 32 23
-                               , SrcSpan "tests/examples/RCategory.hs" 32 23 32 24
-                               ]
-                           })))))
-          (Just
-             [ InsType
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 3 33 35
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/RCategory.hs" 33 3 33 7
-                       , SrcSpan "tests/examples/RCategory.hs" 33 31 33 32
-                       ]
-                   }
-                 (TyApp
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 30
-                      , srcInfoPoints = []
-                      }
-                    (TyApp
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 28
-                         , srcInfoPoints = []
-                         }
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 26
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 21
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 21
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 33 8 33 21
-                                     , srcInfoPoints = []
-                                     }
-                                   "RCategoryCtxt")))
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 22 33 26
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/RCategory.hs" 33 22 33 23
-                                   , SrcSpan "tests/examples/RCategory.hs" 33 23 33 25
-                                   , SrcSpan "tests/examples/RCategory.hs" 33 25 33 26
-                                   ]
-                               }
-                             (Special
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 22 33 26
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/RCategory.hs" 33 22 33 23
-                                      , SrcSpan "tests/examples/RCategory.hs" 33 23 33 25
-                                      , SrcSpan "tests/examples/RCategory.hs" 33 25 33 26
-                                      ]
-                                  }
-                                (FunCon
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 33 22 33 26
-                                     , srcInfoPoints =
-                                         [ SrcSpan "tests/examples/RCategory.hs" 33 22 33 23
-                                         , SrcSpan "tests/examples/RCategory.hs" 33 23 33 25
-                                         , SrcSpan "tests/examples/RCategory.hs" 33 25 33 26
-                                         ]
-                                     }))))
-                       (TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 27 33 28
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 27 33 28
-                               , srcInfoPoints = []
-                               }
-                             "a")))
-                    (TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 29 33 30
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 29 33 30
-                            , srcInfoPoints = []
-                            }
-                          "a")))
-                 (TyCon
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 33 33 35
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/RCategory.hs" 33 33 33 34
-                          , SrcSpan "tests/examples/RCategory.hs" 33 34 33 35
-                          ]
-                      }
-                    (Special
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 33 33 35
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/RCategory.hs" 33 33 33 34
-                             , SrcSpan "tests/examples/RCategory.hs" 33 34 33 35
-                             ]
-                         }
-                       (UnitCon
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 33 33 35
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/RCategory.hs" 33 33 33 34
-                                , SrcSpan "tests/examples/RCategory.hs" 33 34 33 35
-                                ]
-                            })))
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 18
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 18
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 5
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 5
-                            , srcInfoPoints = []
-                            }
-                          "id"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 6 34 18
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/RCategory.hs" 34 6 34 7 ]
-                         }
-                       (Var
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18
-                            , srcInfoPoints = []
-                            }
-                          (Qual
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18
-                               , srcInfoPoints = []
-                               }
-                             (ModuleName
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18
-                                  , srcInfoPoints = []
-                                  }
-                                "Prelude")
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18
-                                  , srcInfoPoints = []
-                                  }
-                                "id"))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 3 35 20
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 3 35 20
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 3 35 6
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/RCategory.hs" 35 3 35 4
-                             , SrcSpan "tests/examples/RCategory.hs" 35 4 35 5
-                             , SrcSpan "tests/examples/RCategory.hs" 35 5 35 6
-                             ]
-                         }
-                       (Symbol
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 4 35 5
-                            , srcInfoPoints = []
-                            }
-                          "."))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 7 35 20
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/RCategory.hs" 35 7 35 8 ]
-                         }
-                       (Var
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 9 35 20
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/RCategory.hs" 35 9 35 10
-                                , SrcSpan "tests/examples/RCategory.hs" 35 10 35 19
-                                , SrcSpan "tests/examples/RCategory.hs" 35 19 35 20
-                                ]
-                            }
-                          (Qual
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 9 35 20
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/RCategory.hs" 35 9 35 10
-                                   , SrcSpan "tests/examples/RCategory.hs" 35 10 35 19
-                                   , SrcSpan "tests/examples/RCategory.hs" 35 19 35 20
-                                   ]
-                               }
-                             (ModuleName
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 10 35 19
-                                  , srcInfoPoints = []
-                                  }
-                                "Prelude")
-                             (Symbol
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 10 35 19
-                                  , srcInfoPoints = []
-                                  }
-                                "."))))
-                    Nothing)
-             ])
-      , TypeSig
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 1 39 39
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/RCategory.hs" 38 7 38 9 ]
-            }
-          [ Symbol
-              SrcSpanInfo
-                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 1 38 6
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/RCategory.hs" 38 1 38 2
-                    , SrcSpan "tests/examples/RCategory.hs" 38 2 38 5
-                    , SrcSpan "tests/examples/RCategory.hs" 38 5 38 6
-                    ]
-                }
-              "<<<"
-          ]
-          (TyForall
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 10 39 39
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxTuple
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 10 39 9
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/RCategory.hs" 38 10 38 11
-                         , SrcSpan "tests/examples/RCategory.hs" 38 32 38 33
-                         , SrcSpan "tests/examples/RCategory.hs" 38 55 38 56
-                         , SrcSpan "tests/examples/RCategory.hs" 38 78 38 79
-                         , SrcSpan "tests/examples/RCategory.hs" 38 93 38 94
-                         , SrcSpan "tests/examples/RCategory.hs" 39 7 39 9
-                         ]
-                     }
-                   [ ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 11 38 32
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 11 38 24
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 11 38 24
-                               , srcInfoPoints = []
-                               }
-                             "RCategoryCtxt"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 25 38 28
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 25 38 28
-                                , srcInfoPoints = []
-                                }
-                              "cat")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 29 38 30
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 29 38 30
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 31 38 32
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 31 38 32
-                                , srcInfoPoints = []
-                                }
-                              "c")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 34 38 55
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 34 38 47
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 34 38 47
-                               , srcInfoPoints = []
-                               }
-                             "RCategoryCtxt"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 48 38 51
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 48 38 51
-                                , srcInfoPoints = []
-                                }
-                              "cat")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 52 38 53
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 52 38 53
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 54 38 55
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 54 38 55
-                                , srcInfoPoints = []
-                                }
-                              "b")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 57 38 78
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 57 38 70
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 57 38 70
-                               , srcInfoPoints = []
-                               }
-                             "RCategoryCtxt"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 71 38 74
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 71 38 74
-                                , srcInfoPoints = []
-                                }
-                              "cat")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 75 38 76
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 75 38 76
-                                , srcInfoPoints = []
-                                }
-                              "b")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 77 38 78
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 77 38 78
-                                , srcInfoPoints = []
-                                }
-                              "c")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 80 38 93
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 80 38 89
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 80 38 89
-                               , srcInfoPoints = []
-                               }
-                             "RCategory"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 90 38 93
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 90 38 93
-                                , srcInfoPoints = []
-                                }
-                              "cat")
-                       ]
-                   ]))
-             (TyFun
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 39
-                  , srcInfoPoints =
-                      [ SrcSpan "tests/examples/RCategory.hs" 39 18 39 20 ]
-                  }
-                (TyApp
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 17
-                     , srcInfoPoints = []
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 15
-                        , srcInfoPoints = []
-                        }
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 13
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 13
-                              , srcInfoPoints = []
-                              }
-                            "cat"))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 14 39 15
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 14 39 15
-                              , srcInfoPoints = []
-                              }
-                            "b")))
-                   (TyVar
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 16 39 17
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 16 39 17
-                           , srcInfoPoints = []
-                           }
-                         "c")))
-                (TyFun
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 39
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/RCategory.hs" 39 29 39 31 ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 28
-                        , srcInfoPoints = []
-                        }
-                      (TyApp
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 26
-                           , srcInfoPoints = []
-                           }
-                         (TyVar
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 24
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 24
-                                 , srcInfoPoints = []
-                                 }
-                               "cat"))
-                         (TyVar
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 25 39 26
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 25 39 26
-                                 , srcInfoPoints = []
-                                 }
-                               "a")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 27 39 28
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 27 39 28
-                              , srcInfoPoints = []
-                              }
-                            "b")))
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 39
-                        , srcInfoPoints = []
-                        }
-                      (TyApp
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 37
-                           , srcInfoPoints = []
-                           }
-                         (TyVar
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 35
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 35
-                                 , srcInfoPoints = []
-                                 }
-                               "cat"))
-                         (TyVar
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 36 39 37
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 36 39 37
-                                 , srcInfoPoints = []
-                                 }
-                               "a")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 38 39 39
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 38 39 39
-                              , srcInfoPoints = []
-                              }
-                            "c"))))))
-      , PatBind
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 1 40 12
-            , srcInfoPoints = []
-            }
-          (PVar
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 1 40 6
-               , srcInfoPoints =
-                   [ SrcSpan "tests/examples/RCategory.hs" 40 1 40 2
-                   , SrcSpan "tests/examples/RCategory.hs" 40 2 40 5
-                   , SrcSpan "tests/examples/RCategory.hs" 40 5 40 6
-                   ]
-               }
-             (Symbol
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 2 40 5
-                  , srcInfoPoints = []
-                  }
-                "<<<"))
-          (UnGuardedRhs
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 7 40 12
-               , srcInfoPoints =
-                   [ SrcSpan "tests/examples/RCategory.hs" 40 7 40 8 ]
-               }
-             (Var
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 9 40 12
-                  , srcInfoPoints =
-                      [ SrcSpan "tests/examples/RCategory.hs" 40 9 40 10
-                      , SrcSpan "tests/examples/RCategory.hs" 40 10 40 11
-                      , SrcSpan "tests/examples/RCategory.hs" 40 11 40 12
-                      ]
-                  }
-                (UnQual
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 9 40 12
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/RCategory.hs" 40 9 40 10
-                         , SrcSpan "tests/examples/RCategory.hs" 40 10 40 11
-                         , SrcSpan "tests/examples/RCategory.hs" 40 11 40 12
-                         ]
-                     }
-                   (Symbol
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 10 40 11
-                        , srcInfoPoints = []
-                        }
-                      "."))))
-          Nothing
-      , TypeSig
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 1 44 39
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/RCategory.hs" 43 7 43 9 ]
-            }
-          [ Symbol
-              SrcSpanInfo
-                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 1 43 6
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/RCategory.hs" 43 1 43 2
-                    , SrcSpan "tests/examples/RCategory.hs" 43 2 43 5
-                    , SrcSpan "tests/examples/RCategory.hs" 43 5 43 6
-                    ]
-                }
-              ">>>"
-          ]
-          (TyForall
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 10 44 39
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxTuple
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 10 44 9
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/RCategory.hs" 43 10 43 11
-                         , SrcSpan "tests/examples/RCategory.hs" 43 32 43 33
-                         , SrcSpan "tests/examples/RCategory.hs" 43 55 43 56
-                         , SrcSpan "tests/examples/RCategory.hs" 43 78 43 79
-                         , SrcSpan "tests/examples/RCategory.hs" 43 93 43 94
-                         , SrcSpan "tests/examples/RCategory.hs" 44 7 44 9
-                         ]
-                     }
-                   [ ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 11 43 32
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 11 43 24
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 11 43 24
-                               , srcInfoPoints = []
-                               }
-                             "RCategoryCtxt"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 25 43 28
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 25 43 28
-                                , srcInfoPoints = []
-                                }
-                              "cat")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 29 43 30
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 29 43 30
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 31 43 32
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 31 43 32
-                                , srcInfoPoints = []
-                                }
-                              "c")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 34 43 55
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 34 43 47
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 34 43 47
-                               , srcInfoPoints = []
-                               }
-                             "RCategoryCtxt"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 48 43 51
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 48 43 51
-                                , srcInfoPoints = []
-                                }
-                              "cat")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 52 43 53
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 52 43 53
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 54 43 55
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 54 43 55
-                                , srcInfoPoints = []
-                                }
-                              "b")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 57 43 78
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 57 43 70
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 57 43 70
-                               , srcInfoPoints = []
-                               }
-                             "RCategoryCtxt"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 71 43 74
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 71 43 74
-                                , srcInfoPoints = []
-                                }
-                              "cat")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 75 43 76
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 75 43 76
-                                , srcInfoPoints = []
-                                }
-                              "b")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 77 43 78
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 77 43 78
-                                , srcInfoPoints = []
-                                }
-                              "c")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 80 43 93
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 80 43 89
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 80 43 89
-                               , srcInfoPoints = []
-                               }
-                             "RCategory"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 90 43 93
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 90 43 93
-                                , srcInfoPoints = []
-                                }
-                              "cat")
-                       ]
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 9 19 8
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 9 19 8
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8 ]
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 18 9 19 8
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8 ]
+                                        }
+                                      (TyApp
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 18 9 19 8
+                                           , srcInfoPoints =
+                                               [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8 ]
+                                           }
+                                         (TyCon
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan "tests/examples/RCategory.hs" 18 9 19 8
+                                              , srcInfoPoints =
+                                                  [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8
+                                                  ]
+                                              }
+                                            (UnQual
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/RCategory.hs" 18 9 18 22
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (Ident
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/RCategory.hs" 18 9 18 22
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  "RCategoryCtxt")))
+                                         (TyVar
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan "tests/examples/RCategory.hs" 18 23 18 26
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/RCategory.hs" 18 23 18 26
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "cat")))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 18 27 18 28
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan "tests/examples/RCategory.hs" 18 27 18 28
+                                              , srcInfoPoints = []
+                                              }
+                                            "a")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 18 29 18 30
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 18 29 18 30
+                                           , srcInfoPoints = []
+                                           }
+                                         "a"))))))
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 9 19 16
+                            , srcInfoPoints = []
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 9 19 14
+                               , srcInfoPoints = []
+                               }
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 9 19 12
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 19 9 19 12
+                                     , srcInfoPoints = []
+                                     }
+                                   "cat"))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 13 19 14
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 19 13 19 14
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 15 19 16
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 15 19 16
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))))
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 3 23 39
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/RCategory.hs" 22 7 22 9 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 3 23 39
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/RCategory.hs" 22 7 22 9 ]
+                      }
+                    [ Symbol
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 3 22 6
+                          , srcInfoPoints =
+                              [ SrcSpan "tests/examples/RCategory.hs" 22 3 22 4
+                              , SrcSpan "tests/examples/RCategory.hs" 22 4 22 5
+                              , SrcSpan "tests/examples/RCategory.hs" 22 5 22 6
+                              ]
+                          }
+                        "."
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 10 23 39
+                         , srcInfoPoints = []
+                         }
+                       Nothing
+                       (Just
+                          (CxTuple
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 10 23 9
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/RCategory.hs" 22 10 22 11
+                                   , SrcSpan "tests/examples/RCategory.hs" 22 32 22 33
+                                   , SrcSpan "tests/examples/RCategory.hs" 22 55 22 56
+                                   , SrcSpan "tests/examples/RCategory.hs" 22 78 22 79
+                                   , SrcSpan "tests/examples/RCategory.hs" 23 7 23 9
+                                   ]
+                               }
+                             [ TypeA
+                                 SrcSpanInfo
+                                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 11 22 32
+                                   , srcInfoPoints = []
+                                   }
+                                 (TyApp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/RCategory.hs" 22 11 22 32
+                                      , srcInfoPoints = []
+                                      }
+                                    (TyApp
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/RCategory.hs" 22 11 22 32
+                                         , srcInfoPoints = []
+                                         }
+                                       (TyApp
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/RCategory.hs" 22 11 22 32
+                                            , srcInfoPoints = []
+                                            }
+                                          (TyCon
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan "tests/examples/RCategory.hs" 22 11 22 32
+                                               , srcInfoPoints = []
+                                               }
+                                             (UnQual
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/RCategory.hs" 22 11 22 24
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Ident
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/RCategory.hs" 22 11 22 24
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   "RCategoryCtxt")))
+                                          (TyVar
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan "tests/examples/RCategory.hs" 22 25 22 28
+                                               , srcInfoPoints = []
+                                               }
+                                             (Ident
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/RCategory.hs" 22 25 22 28
+                                                  , srcInfoPoints = []
+                                                  }
+                                                "cat")))
+                                       (TyVar
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/RCategory.hs" 22 29 22 30
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan "tests/examples/RCategory.hs" 22 29 22 30
+                                               , srcInfoPoints = []
+                                               }
+                                             "b")))
+                                    (TyVar
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/RCategory.hs" 22 31 22 32
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/RCategory.hs" 22 31 22 32
+                                            , srcInfoPoints = []
+                                            }
+                                          "c")))
+                             , TypeA
+                                 SrcSpanInfo
+                                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 34 22 55
+                                   , srcInfoPoints = []
+                                   }
+                                 (TyApp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/RCategory.hs" 22 34 22 55
+                                      , srcInfoPoints = []
+                                      }
+                                    (TyApp
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/RCategory.hs" 22 34 22 55
+                                         , srcInfoPoints = []
+                                         }
+                                       (TyApp
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/RCategory.hs" 22 34 22 55
+                                            , srcInfoPoints = []
+                                            }
+                                          (TyCon
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan "tests/examples/RCategory.hs" 22 34 22 55
+                                               , srcInfoPoints = []
+                                               }
+                                             (UnQual
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/RCategory.hs" 22 34 22 47
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Ident
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/RCategory.hs" 22 34 22 47
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   "RCategoryCtxt")))
+                                          (TyVar
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan "tests/examples/RCategory.hs" 22 48 22 51
+                                               , srcInfoPoints = []
+                                               }
+                                             (Ident
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/RCategory.hs" 22 48 22 51
+                                                  , srcInfoPoints = []
+                                                  }
+                                                "cat")))
+                                       (TyVar
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/RCategory.hs" 22 52 22 53
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan "tests/examples/RCategory.hs" 22 52 22 53
+                                               , srcInfoPoints = []
+                                               }
+                                             "a")))
+                                    (TyVar
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/RCategory.hs" 22 54 22 55
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/RCategory.hs" 22 54 22 55
+                                            , srcInfoPoints = []
+                                            }
+                                          "b")))
+                             , TypeA
+                                 SrcSpanInfo
+                                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 57 22 78
+                                   , srcInfoPoints = []
+                                   }
+                                 (TyApp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/RCategory.hs" 22 57 22 78
+                                      , srcInfoPoints = []
+                                      }
+                                    (TyApp
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/RCategory.hs" 22 57 22 78
+                                         , srcInfoPoints = []
+                                         }
+                                       (TyApp
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/RCategory.hs" 22 57 22 78
+                                            , srcInfoPoints = []
+                                            }
+                                          (TyCon
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan "tests/examples/RCategory.hs" 22 57 22 78
+                                               , srcInfoPoints = []
+                                               }
+                                             (UnQual
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/RCategory.hs" 22 57 22 70
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Ident
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/RCategory.hs" 22 57 22 70
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   "RCategoryCtxt")))
+                                          (TyVar
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan "tests/examples/RCategory.hs" 22 71 22 74
+                                               , srcInfoPoints = []
+                                               }
+                                             (Ident
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/RCategory.hs" 22 71 22 74
+                                                  , srcInfoPoints = []
+                                                  }
+                                                "cat")))
+                                       (TyVar
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/RCategory.hs" 22 75 22 76
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan "tests/examples/RCategory.hs" 22 75 22 76
+                                               , srcInfoPoints = []
+                                               }
+                                             "a")))
+                                    (TyVar
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/RCategory.hs" 22 77 22 78
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/RCategory.hs" 22 77 22 78
+                                            , srcInfoPoints = []
+                                            }
+                                          "c")))
+                             ]))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 10 23 39
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/RCategory.hs" 23 18 23 20 ]
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 10 23 17
+                               , srcInfoPoints = []
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 10 23 15
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 23 10 23 13
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 23 10 23 13
+                                        , srcInfoPoints = []
+                                        }
+                                      "cat"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 23 14 23 15
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 23 14 23 15
+                                        , srcInfoPoints = []
+                                        }
+                                      "b")))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 16 23 17
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 23 16 23 17
+                                     , srcInfoPoints = []
+                                     }
+                                   "c")))
+                          (TyFun
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 21 23 39
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/RCategory.hs" 23 29 23 31 ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 21 23 28
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 23 21 23 26
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 23 21 23 24
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 23 21 23 24
+                                           , srcInfoPoints = []
+                                           }
+                                         "cat"))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 23 25 23 26
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 23 25 23 26
+                                           , srcInfoPoints = []
+                                           }
+                                         "a")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 23 27 23 28
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 23 27 23 28
+                                        , srcInfoPoints = []
+                                        }
+                                      "b")))
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 32 23 39
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 23 32 23 37
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 23 32 23 35
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 23 32 23 35
+                                           , srcInfoPoints = []
+                                           }
+                                         "cat"))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 23 36 23 37
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 23 36 23 37
+                                           , srcInfoPoints = []
+                                           }
+                                         "a")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 23 38 23 39
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 23 38 23 39
+                                        , srcInfoPoints = []
+                                        }
+                                      "c")))))))
+             ])
+      , RulePragmaDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 25 1 30 5
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/RCategory.hs" 25 1 25 10
+                , SrcSpan "tests/examples/RCategory.hs" 30 2 30 5
+                ]
+            }
+          [ Rule
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 26 1 27 27
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/RCategory.hs" 26 1 26 16
+                    , SrcSpan "tests/examples/RCategory.hs" 26 17 26 23
+                    , SrcSpan "tests/examples/RCategory.hs" 26 26 26 27
+                    , SrcSpan "tests/examples/RCategory.hs" 27 24 27 25
+                    ]
+                }
+              "identity/left"
+              Nothing
+              (Just
+                 [ RuleVar
+                     SrcSpanInfo
+                       { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 26 24 26 25
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 26 24 26 25
+                          , srcInfoPoints = []
+                          }
+                        "p")
+                 ])
+              (InfixApp
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 23
+                   , srcInfoPoints = []
+                   }
+                 (Var
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 19
+                      , srcInfoPoints = []
+                      }
+                    (UnQual
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 19
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 19
+                            , srcInfoPoints = []
+                            }
+                          "id")))
+                 (QVarOp
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 20 27 21
+                      , srcInfoPoints = []
+                      }
+                    (UnQual
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 20 27 21
+                         , srcInfoPoints = []
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 20 27 21
+                            , srcInfoPoints = []
+                            }
+                          ".")))
+                 (Var
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 22 27 23
+                      , srcInfoPoints = []
+                      }
+                    (UnQual
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 22 27 23
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 22 27 23
+                            , srcInfoPoints = []
+                            }
+                          "p"))))
+              (Var
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 26 27 27
+                   , srcInfoPoints = []
+                   }
+                 (UnQual
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 26 27 27
+                      , srcInfoPoints = []
+                      }
+                    (Ident
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 26 27 27
+                         , srcInfoPoints = []
+                         }
+                       "p")))
+          , Rule
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 28 1 29 27
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/RCategory.hs" 28 1 28 17
+                    , SrcSpan "tests/examples/RCategory.hs" 28 25 28 31
+                    , SrcSpan "tests/examples/RCategory.hs" 28 34 28 35
+                    , SrcSpan "tests/examples/RCategory.hs" 29 24 29 25
+                    ]
+                }
+              "identity/right"
+              Nothing
+              (Just
+                 [ RuleVar
+                     SrcSpanInfo
+                       { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 28 32 28 33
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 28 32 28 33
+                          , srcInfoPoints = []
+                          }
+                        "p")
+                 ])
+              (InfixApp
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 23
+                   , srcInfoPoints = []
+                   }
+                 (Var
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 18
+                      , srcInfoPoints = []
+                      }
+                    (UnQual
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 18
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 18
+                            , srcInfoPoints = []
+                            }
+                          "p")))
+                 (QVarOp
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 19 29 20
+                      , srcInfoPoints = []
+                      }
+                    (UnQual
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 19 29 20
+                         , srcInfoPoints = []
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 19 29 20
+                            , srcInfoPoints = []
+                            }
+                          ".")))
+                 (Var
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 21 29 23
+                      , srcInfoPoints = []
+                      }
+                    (UnQual
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 21 29 23
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 21 29 23
+                            , srcInfoPoints = []
+                            }
+                          "id"))))
+              (Var
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 26 29 27
+                   , srcInfoPoints = []
+                   }
+                 (UnQual
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 26 29 27
+                      , srcInfoPoints = []
+                      }
+                    (Ident
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 26 29 27
+                         , srcInfoPoints = []
+                         }
+                       "p")))
+          ]
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 1 38 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/RCategory.hs" 32 1 32 9
+                , SrcSpan "tests/examples/RCategory.hs" 32 25 32 30
+                , SrcSpan "tests/examples/RCategory.hs" 33 3 33 3
+                , SrcSpan "tests/examples/RCategory.hs" 34 3 34 3
+                , SrcSpan "tests/examples/RCategory.hs" 35 3 35 3
+                , SrcSpan "tests/examples/RCategory.hs" 38 1 38 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 24
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 24
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 19
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 19
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 19
+                           , srcInfoPoints = []
+                           }
+                         "RCategory")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 20 32 24
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/RCategory.hs" 32 20 32 21
+                         , SrcSpan "tests/examples/RCategory.hs" 32 21 32 23
+                         , SrcSpan "tests/examples/RCategory.hs" 32 23 32 24
+                         ]
+                     }
+                   (Special
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 20 32 24
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/RCategory.hs" 32 20 32 21
+                            , SrcSpan "tests/examples/RCategory.hs" 32 21 32 23
+                            , SrcSpan "tests/examples/RCategory.hs" 32 23 32 24
+                            ]
+                        }
+                      (FunCon
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 20 32 24
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/RCategory.hs" 32 20 32 21
+                               , SrcSpan "tests/examples/RCategory.hs" 32 21 32 23
+                               , SrcSpan "tests/examples/RCategory.hs" 32 23 32 24
+                               ]
+                           })))))
+          (Just
+             [ InsType
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 3 33 35
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/RCategory.hs" 33 3 33 7
+                       , SrcSpan "tests/examples/RCategory.hs" 33 31 33 32
+                       ]
+                   }
+                 (TyApp
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 30
+                      , srcInfoPoints = []
+                      }
+                    (TyApp
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 28
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 26
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 21
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 21
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 33 8 33 21
+                                     , srcInfoPoints = []
+                                     }
+                                   "RCategoryCtxt")))
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 22 33 26
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/RCategory.hs" 33 22 33 23
+                                   , SrcSpan "tests/examples/RCategory.hs" 33 23 33 25
+                                   , SrcSpan "tests/examples/RCategory.hs" 33 25 33 26
+                                   ]
+                               }
+                             (Special
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 22 33 26
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/RCategory.hs" 33 22 33 23
+                                      , SrcSpan "tests/examples/RCategory.hs" 33 23 33 25
+                                      , SrcSpan "tests/examples/RCategory.hs" 33 25 33 26
+                                      ]
+                                  }
+                                (FunCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 33 22 33 26
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/RCategory.hs" 33 22 33 23
+                                         , SrcSpan "tests/examples/RCategory.hs" 33 23 33 25
+                                         , SrcSpan "tests/examples/RCategory.hs" 33 25 33 26
+                                         ]
+                                     }))))
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 27 33 28
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 27 33 28
+                               , srcInfoPoints = []
+                               }
+                             "a")))
+                    (TyVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 29 33 30
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 29 33 30
+                            , srcInfoPoints = []
+                            }
+                          "a")))
+                 (TyCon
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 33 33 35
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/RCategory.hs" 33 33 33 34
+                          , SrcSpan "tests/examples/RCategory.hs" 33 34 33 35
+                          ]
+                      }
+                    (Special
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 33 33 35
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/RCategory.hs" 33 33 33 34
+                             , SrcSpan "tests/examples/RCategory.hs" 33 34 33 35
+                             ]
+                         }
+                       (UnitCon
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 33 33 35
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/RCategory.hs" 33 33 33 34
+                                , SrcSpan "tests/examples/RCategory.hs" 33 34 33 35
+                                ]
+                            })))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 18
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 18
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 5
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 5
+                            , srcInfoPoints = []
+                            }
+                          "id"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 6 34 18
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/RCategory.hs" 34 6 34 7 ]
+                         }
+                       (Var
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18
+                            , srcInfoPoints = []
+                            }
+                          (Qual
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18
+                               , srcInfoPoints = []
+                               }
+                             (ModuleName
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18
+                                  , srcInfoPoints = []
+                                  }
+                                "Prelude")
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18
+                                  , srcInfoPoints = []
+                                  }
+                                "id"))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 3 35 20
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 3 35 20
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 3 35 6
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/RCategory.hs" 35 3 35 4
+                             , SrcSpan "tests/examples/RCategory.hs" 35 4 35 5
+                             , SrcSpan "tests/examples/RCategory.hs" 35 5 35 6
+                             ]
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 4 35 5
+                            , srcInfoPoints = []
+                            }
+                          "."))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 7 35 20
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/RCategory.hs" 35 7 35 8 ]
+                         }
+                       (Var
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 9 35 20
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/RCategory.hs" 35 9 35 10
+                                , SrcSpan "tests/examples/RCategory.hs" 35 10 35 19
+                                , SrcSpan "tests/examples/RCategory.hs" 35 19 35 20
+                                ]
+                            }
+                          (Qual
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 9 35 20
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/RCategory.hs" 35 9 35 10
+                                   , SrcSpan "tests/examples/RCategory.hs" 35 10 35 19
+                                   , SrcSpan "tests/examples/RCategory.hs" 35 19 35 20
+                                   ]
+                               }
+                             (ModuleName
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 10 35 19
+                                  , srcInfoPoints = []
+                                  }
+                                "Prelude")
+                             (Symbol
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 10 35 19
+                                  , srcInfoPoints = []
+                                  }
+                                "."))))
+                    Nothing)
+             ])
+      , TypeSig
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 1 39 39
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/RCategory.hs" 38 7 38 9 ]
+            }
+          [ Symbol
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 1 38 6
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/RCategory.hs" 38 1 38 2
+                    , SrcSpan "tests/examples/RCategory.hs" 38 2 38 5
+                    , SrcSpan "tests/examples/RCategory.hs" 38 5 38 6
+                    ]
+                }
+              "<<<"
+          ]
+          (TyForall
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 10 39 39
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 10 39 9
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/RCategory.hs" 38 10 38 11
+                         , SrcSpan "tests/examples/RCategory.hs" 38 32 38 33
+                         , SrcSpan "tests/examples/RCategory.hs" 38 55 38 56
+                         , SrcSpan "tests/examples/RCategory.hs" 38 78 38 79
+                         , SrcSpan "tests/examples/RCategory.hs" 38 93 38 94
+                         , SrcSpan "tests/examples/RCategory.hs" 39 7 39 9
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 11 38 32
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 11 38 32
+                            , srcInfoPoints = []
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 11 38 32
+                               , srcInfoPoints = []
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 11 38 32
+                                  , srcInfoPoints = []
+                                  }
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 38 11 38 32
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 38 11 38 24
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 38 11 38 24
+                                           , srcInfoPoints = []
+                                           }
+                                         "RCategoryCtxt")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 38 25 38 28
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 38 25 38 28
+                                        , srcInfoPoints = []
+                                        }
+                                      "cat")))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 29 38 30
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 38 29 38 30
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 31 38 32
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 31 38 32
+                                  , srcInfoPoints = []
+                                  }
+                                "c")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 34 38 55
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 34 38 55
+                            , srcInfoPoints = []
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 34 38 55
+                               , srcInfoPoints = []
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 34 38 55
+                                  , srcInfoPoints = []
+                                  }
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 38 34 38 55
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 38 34 38 47
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 38 34 38 47
+                                           , srcInfoPoints = []
+                                           }
+                                         "RCategoryCtxt")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 38 48 38 51
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 38 48 38 51
+                                        , srcInfoPoints = []
+                                        }
+                                      "cat")))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 52 38 53
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 38 52 38 53
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 54 38 55
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 54 38 55
+                                  , srcInfoPoints = []
+                                  }
+                                "b")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 57 38 78
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 57 38 78
+                            , srcInfoPoints = []
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 57 38 78
+                               , srcInfoPoints = []
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 57 38 78
+                                  , srcInfoPoints = []
+                                  }
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 38 57 38 78
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 38 57 38 70
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 38 57 38 70
+                                           , srcInfoPoints = []
+                                           }
+                                         "RCategoryCtxt")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 38 71 38 74
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 38 71 38 74
+                                        , srcInfoPoints = []
+                                        }
+                                      "cat")))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 75 38 76
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 38 75 38 76
+                                     , srcInfoPoints = []
+                                     }
+                                   "b")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 77 38 78
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 77 38 78
+                                  , srcInfoPoints = []
+                                  }
+                                "c")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 80 38 93
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 80 38 93
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 80 38 93
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 80 38 89
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 38 80 38 89
+                                     , srcInfoPoints = []
+                                     }
+                                   "RCategory")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 90 38 93
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 90 38 93
+                                  , srcInfoPoints = []
+                                  }
+                                "cat")))
+                   ]))
+             (TyFun
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 39
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/RCategory.hs" 39 18 39 20 ]
+                  }
+                (TyApp
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 17
+                     , srcInfoPoints = []
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 15
+                        , srcInfoPoints = []
+                        }
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 13
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 13
+                              , srcInfoPoints = []
+                              }
+                            "cat"))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 14 39 15
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 14 39 15
+                              , srcInfoPoints = []
+                              }
+                            "b")))
+                   (TyVar
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 16 39 17
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 16 39 17
+                           , srcInfoPoints = []
+                           }
+                         "c")))
+                (TyFun
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 39
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/RCategory.hs" 39 29 39 31 ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 28
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 26
+                           , srcInfoPoints = []
+                           }
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 24
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 24
+                                 , srcInfoPoints = []
+                                 }
+                               "cat"))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 25 39 26
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 25 39 26
+                                 , srcInfoPoints = []
+                                 }
+                               "a")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 27 39 28
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 27 39 28
+                              , srcInfoPoints = []
+                              }
+                            "b")))
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 39
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 37
+                           , srcInfoPoints = []
+                           }
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 35
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 35
+                                 , srcInfoPoints = []
+                                 }
+                               "cat"))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 36 39 37
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 36 39 37
+                                 , srcInfoPoints = []
+                                 }
+                               "a")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 38 39 39
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 38 39 39
+                              , srcInfoPoints = []
+                              }
+                            "c"))))))
+      , PatBind
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 1 40 12
+            , srcInfoPoints = []
+            }
+          (PVar
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 1 40 6
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/RCategory.hs" 40 1 40 2
+                   , SrcSpan "tests/examples/RCategory.hs" 40 2 40 5
+                   , SrcSpan "tests/examples/RCategory.hs" 40 5 40 6
+                   ]
+               }
+             (Symbol
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 2 40 5
+                  , srcInfoPoints = []
+                  }
+                "<<<"))
+          (UnGuardedRhs
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 7 40 12
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/RCategory.hs" 40 7 40 8 ]
+               }
+             (Var
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 9 40 12
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/RCategory.hs" 40 9 40 10
+                      , SrcSpan "tests/examples/RCategory.hs" 40 10 40 11
+                      , SrcSpan "tests/examples/RCategory.hs" 40 11 40 12
+                      ]
+                  }
+                (UnQual
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 9 40 12
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/RCategory.hs" 40 9 40 10
+                         , SrcSpan "tests/examples/RCategory.hs" 40 10 40 11
+                         , SrcSpan "tests/examples/RCategory.hs" 40 11 40 12
+                         ]
+                     }
+                   (Symbol
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 10 40 11
+                        , srcInfoPoints = []
+                        }
+                      "."))))
+          Nothing
+      , TypeSig
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 1 44 39
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/RCategory.hs" 43 7 43 9 ]
+            }
+          [ Symbol
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 1 43 6
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/RCategory.hs" 43 1 43 2
+                    , SrcSpan "tests/examples/RCategory.hs" 43 2 43 5
+                    , SrcSpan "tests/examples/RCategory.hs" 43 5 43 6
+                    ]
+                }
+              ">>>"
+          ]
+          (TyForall
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 10 44 39
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 10 44 9
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/RCategory.hs" 43 10 43 11
+                         , SrcSpan "tests/examples/RCategory.hs" 43 32 43 33
+                         , SrcSpan "tests/examples/RCategory.hs" 43 55 43 56
+                         , SrcSpan "tests/examples/RCategory.hs" 43 78 43 79
+                         , SrcSpan "tests/examples/RCategory.hs" 43 93 43 94
+                         , SrcSpan "tests/examples/RCategory.hs" 44 7 44 9
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 11 43 32
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 11 43 32
+                            , srcInfoPoints = []
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 11 43 32
+                               , srcInfoPoints = []
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 11 43 32
+                                  , srcInfoPoints = []
+                                  }
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 43 11 43 32
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 43 11 43 24
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 43 11 43 24
+                                           , srcInfoPoints = []
+                                           }
+                                         "RCategoryCtxt")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 43 25 43 28
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 43 25 43 28
+                                        , srcInfoPoints = []
+                                        }
+                                      "cat")))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 29 43 30
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 43 29 43 30
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 31 43 32
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 31 43 32
+                                  , srcInfoPoints = []
+                                  }
+                                "c")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 34 43 55
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 34 43 55
+                            , srcInfoPoints = []
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 34 43 55
+                               , srcInfoPoints = []
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 34 43 55
+                                  , srcInfoPoints = []
+                                  }
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 43 34 43 55
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 43 34 43 47
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 43 34 43 47
+                                           , srcInfoPoints = []
+                                           }
+                                         "RCategoryCtxt")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 43 48 43 51
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 43 48 43 51
+                                        , srcInfoPoints = []
+                                        }
+                                      "cat")))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 52 43 53
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 43 52 43 53
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 54 43 55
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 54 43 55
+                                  , srcInfoPoints = []
+                                  }
+                                "b")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 57 43 78
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 57 43 78
+                            , srcInfoPoints = []
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 57 43 78
+                               , srcInfoPoints = []
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 57 43 78
+                                  , srcInfoPoints = []
+                                  }
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 43 57 43 78
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 43 57 43 70
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 43 57 43 70
+                                           , srcInfoPoints = []
+                                           }
+                                         "RCategoryCtxt")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 43 71 43 74
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 43 71 43 74
+                                        , srcInfoPoints = []
+                                        }
+                                      "cat")))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 75 43 76
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 43 75 43 76
+                                     , srcInfoPoints = []
+                                     }
+                                   "b")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 77 43 78
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 77 43 78
+                                  , srcInfoPoints = []
+                                  }
+                                "c")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 80 43 93
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 80 43 93
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 80 43 93
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 80 43 89
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 43 80 43 89
+                                     , srcInfoPoints = []
+                                     }
+                                   "RCategory")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 90 43 93
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 90 43 93
+                                  , srcInfoPoints = []
+                                  }
+                                "cat")))
                    ]))
              (TyFun
                 SrcSpanInfo
diff --git a/tests/examples/ScopedTypeVariables.hs.parser.golden b/tests/examples/ScopedTypeVariables.hs.parser.golden
--- a/tests/examples/ScopedTypeVariables.hs.parser.golden
+++ b/tests/examples/ScopedTypeVariables.hs.parser.golden
@@ -363,40 +363,53 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 31 11 33 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 33
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 31 11 33 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 28
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 33
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 31 11 33 ]
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 28
+                                  SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 33
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 31 11 33 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 28
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 28
+                                    , srcInfoPoints = []
+                                    }
+                                  "Eq")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 29 11 30
                               , srcInfoPoints = []
                               }
-                            "Eq"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 29 11 30
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 29 11 30
-                               , srcInfoPoints = []
-                               }
-                             "x")
-                      ])))
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 29 11 30
+                                 , srcInfoPoints = []
+                                 }
+                               "x"))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/SingleClassAsst.hs.parser.golden b/tests/examples/SingleClassAsst.hs.parser.golden
--- a/tests/examples/SingleClassAsst.hs.parser.golden
+++ b/tests/examples/SingleClassAsst.hs.parser.golden
@@ -74,39 +74,50 @@
                             , SrcSpan "tests/examples/SingleClassAsst.hs" 3 15 3 17
                             ]
                         }
-                      (ClassA
+                      (TypeA
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 13
                            , srcInfoPoints = []
                            }
-                         (UnQual
+                         (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 11
+                                  SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 13
                               , srcInfoPoints = []
                               }
-                            (Ident
+                            (TyCon
                                SrcSpanInfo
                                  { srcInfoSpan =
-                                     SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 11
+                                     SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 13
                                  , srcInfoPoints = []
                                  }
-                               "Eq"))
-                         [ TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/SingleClassAsst.hs" 3 12 3 13
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/SingleClassAsst.hs" 3 12 3 13
-                                  , srcInfoPoints = []
-                                  }
-                                "a")
-                         ]))))
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 11
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 11
+                                       , srcInfoPoints = []
+                                       }
+                                     "Eq")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/SingleClassAsst.hs" 3 12 3 13
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/SingleClassAsst.hs" 3 12 3 13
+                                    , srcInfoPoints = []
+                                    }
+                                  "a")))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/SpecializeInstance.hs.parser.golden b/tests/examples/SpecializeInstance.hs.parser.golden
--- a/tests/examples/SpecializeInstance.hs.parser.golden
+++ b/tests/examples/SpecializeInstance.hs.parser.golden
@@ -43,40 +43,53 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/SpecializeInstance.hs" 1 18 1 20 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 20
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/SpecializeInstance.hs" 1 18 1 20 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 15
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 20
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/SpecializeInstance.hs" 1 18 1 20 ]
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 15
+                                  SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 20
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/SpecializeInstance.hs" 1 18 1 20 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 15
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 15
+                                    , srcInfoPoints = []
+                                    }
+                                  "Sized")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/SpecializeInstance.hs" 1 16 1 17
                               , srcInfoPoints = []
                               }
-                            "Sized"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/SpecializeInstance.hs" 1 16 1 17
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/SpecializeInstance.hs" 1 16 1 17
-                               , srcInfoPoints = []
-                               }
-                             "a")
-                      ])))
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/SpecializeInstance.hs" 1 16 1 17
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))))))
              (IHApp
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/SpecializePhaseControl.hs.parser.golden b/tests/examples/SpecializePhaseControl.hs.parser.golden
--- a/tests/examples/SpecializePhaseControl.hs.parser.golden
+++ b/tests/examples/SpecializePhaseControl.hs.parser.golden
@@ -331,72 +331,95 @@
                          , SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 26 6 28
                          ]
                      }
-                   [ ClassA
+                   [ TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 12
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 10
+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 12
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 10
+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 12
                                , srcInfoPoints = []
                                }
-                             "Num"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 11 6 12
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 11 6 12
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , ClassA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 10
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 10
+                                     , srcInfoPoints = []
+                                     }
+                                   "Num")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 11 6 12
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 11 6 12
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 14 6 24
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 14 6 22
+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 14 6 24
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 14 6 22
+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 14 6 24
                                , srcInfoPoints = []
                                }
-                             "Integral"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 23 6 24
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 23 6 24
-                                , srcInfoPoints = []
-                                }
-                              "b")
-                       ]
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 14 6 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan
+                                           "tests/examples/SpecializePhaseControl.hs" 6 14 6 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "Integral")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 23 6 24
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 23 6 24
+                                  , srcInfoPoints = []
+                                  }
+                                "b")))
                    ]))
              (TyFun
                 SrcSpanInfo
@@ -810,72 +833,96 @@
                          , SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 26 14 28
                          ]
                      }
-                   [ ClassA
+                   [ TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 7 14 12
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 7 14 10
+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 7 14 12
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 7 14 10
+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 7 14 12
                                , srcInfoPoints = []
                                }
-                             "Num"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 11 14 12
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 11 14 12
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , ClassA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 7 14 10
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan
+                                           "tests/examples/SpecializePhaseControl.hs" 14 7 14 10
+                                     , srcInfoPoints = []
+                                     }
+                                   "Num")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 11 14 12
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 11 14 12
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 14 14 24
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 14 14 22
+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 14 14 24
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 14 14 22
+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 14 14 24
                                , srcInfoPoints = []
                                }
-                             "Integral"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 23 14 24
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 23 14 24
-                                , srcInfoPoints = []
-                                }
-                              "b")
-                       ]
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 14 14 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan
+                                           "tests/examples/SpecializePhaseControl.hs" 14 14 14 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "Integral")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 23 14 24
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 23 14 24
+                                  , srcInfoPoints = []
+                                  }
+                                "b")))
                    ]))
              (TyFun
                 SrcSpanInfo
diff --git a/tests/examples/THTypedSplices.hs b/tests/examples/THTypedSplices.hs
new file mode 100644
--- /dev/null
+++ b/tests/examples/THTypedSplices.hs
@@ -0,0 +1,6 @@
+{-# LANGUAGE TemplateHaskell #-}
+import Language.Haskell.TH
+
+import THTypedSplices.Defs
+
+main = $$justTH ($$([e|| 2 ||]))
diff --git a/tests/examples/THTypedSplices.hs.exactprinter.golden b/tests/examples/THTypedSplices.hs.exactprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/THTypedSplices.hs.exactprinter.golden
@@ -0,0 +1,7 @@
+{-# LANGUAGE TemplateHaskell #-}
+import Language.Haskell.TH
+
+import THTypedSplices.Defs
+
+main = $$justTH ($$([||  2 ||]))
+
diff --git a/tests/examples/THTypedSplices.hs.parser.golden b/tests/examples/THTypedSplices.hs.parser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/THTypedSplices.hs.parser.golden
@@ -0,0 +1,177 @@
+ParseOk
+  ( Module
+      SrcSpanInfo
+        { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 1 1 7 1
+        , srcInfoPoints =
+            [ SrcSpan "tests/examples/THTypedSplices.hs" 1 1 1 1
+            , SrcSpan "tests/examples/THTypedSplices.hs" 2 1 2 1
+            , SrcSpan "tests/examples/THTypedSplices.hs" 2 1 2 1
+            , SrcSpan "tests/examples/THTypedSplices.hs" 2 1 2 1
+            , SrcSpan "tests/examples/THTypedSplices.hs" 4 1 4 1
+            , SrcSpan "tests/examples/THTypedSplices.hs" 6 1 6 1
+            , SrcSpan "tests/examples/THTypedSplices.hs" 7 1 7 1
+            , SrcSpan "tests/examples/THTypedSplices.hs" 7 1 7 1
+            ]
+        }
+      Nothing
+      [ LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 1 1 1 33
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/THTypedSplices.hs" 1 1 1 13
+                , SrcSpan "tests/examples/THTypedSplices.hs" 1 30 1 33
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/THTypedSplices.hs" 1 14 1 29
+                , srcInfoPoints = []
+                }
+              "TemplateHaskell"
+          ]
+      ]
+      [ ImportDecl
+          { importAnn =
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 2 1 2 27
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/THTypedSplices.hs" 2 1 2 7 ]
+                }
+          , importModule =
+              ModuleName
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 2 8 2 27
+                  , srcInfoPoints = []
+                  }
+                "Language.Haskell.TH"
+          , importQualified = False
+          , importSrc = False
+          , importSafe = False
+          , importPkg = Nothing
+          , importAs = Nothing
+          , importSpecs = Nothing
+          }
+      , ImportDecl
+          { importAnn =
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 4 1 4 27
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/THTypedSplices.hs" 4 1 4 7 ]
+                }
+          , importModule =
+              ModuleName
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 4 8 4 27
+                  , srcInfoPoints = []
+                  }
+                "THTypedSplices.Defs"
+          , importQualified = False
+          , importSrc = False
+          , importSafe = False
+          , importPkg = Nothing
+          , importAs = Nothing
+          , importSpecs = Nothing
+          }
+      ]
+      [ PatBind
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 1 6 33
+            , srcInfoPoints = []
+            }
+          (PVar
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 1 6 5
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 1 6 5
+                  , srcInfoPoints = []
+                  }
+                "main"))
+          (UnGuardedRhs
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 6 6 33
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/THTypedSplices.hs" 6 6 6 7 ]
+               }
+             (App
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 8 6 33
+                  , srcInfoPoints = []
+                  }
+                (SpliceExp
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 8 6 16
+                     , srcInfoPoints = []
+                     }
+                   (TIdSplice
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 8 6 16
+                        , srcInfoPoints = []
+                        }
+                      "justTH"))
+                (Paren
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/THTypedSplices.hs" 6 17 6 33
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/THTypedSplices.hs" 6 17 6 18
+                         , SrcSpan "tests/examples/THTypedSplices.hs" 6 32 6 33
+                         ]
+                     }
+                   (SpliceExp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/THTypedSplices.hs" 6 18 6 32
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/THTypedSplices.hs" 6 18 6 21
+                            , SrcSpan "tests/examples/THTypedSplices.hs" 6 31 6 32
+                            ]
+                        }
+                      (TParenSplice
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/THTypedSplices.hs" 6 18 6 32
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/THTypedSplices.hs" 6 18 6 21
+                               , SrcSpan "tests/examples/THTypedSplices.hs" 6 31 6 32
+                               ]
+                           }
+                         (BracketExp
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/THTypedSplices.hs" 6 21 6 31
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/THTypedSplices.hs" 6 21 6 25
+                                  , SrcSpan "tests/examples/THTypedSplices.hs" 6 28 6 31
+                                  ]
+                              }
+                            (TExpBracket
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/THTypedSplices.hs" 6 21 6 31
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/THTypedSplices.hs" 6 21 6 25
+                                     , SrcSpan "tests/examples/THTypedSplices.hs" 6 28 6 31
+                                     ]
+                                 }
+                               (Lit
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/THTypedSplices.hs" 6 26 6 27
+                                    , srcInfoPoints = []
+                                    }
+                                  (Int
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/THTypedSplices.hs" 6 26 6 27
+                                       , srcInfoPoints = []
+                                       }
+                                     2
+                                     "2")))))))))
+          Nothing
+      ]
+  , []
+  )
diff --git a/tests/examples/THTypedSplices.hs.prettyparser.golden b/tests/examples/THTypedSplices.hs.prettyparser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/THTypedSplices.hs.prettyparser.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/THTypedSplices.hs.prettyprinter.golden b/tests/examples/THTypedSplices.hs.prettyprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/THTypedSplices.hs.prettyprinter.golden
@@ -0,0 +1,4 @@
+{-# LANGUAGE TemplateHaskell #-}
+import Language.Haskell.TH
+import THTypedSplices.Defs
+main = $$justTH ($$( [|| 2 ||] ))
diff --git a/tests/examples/TypeEqualityParen.hs.parser.golden b/tests/examples/TypeEqualityParen.hs.parser.golden
--- a/tests/examples/TypeEqualityParen.hs.parser.golden
+++ b/tests/examples/TypeEqualityParen.hs.parser.golden
@@ -67,39 +67,50 @@
                          , SrcSpan "tests/examples/TypeEqualityParen.hs" 2 26 2 28
                          ]
                      }
-                   [ ClassA
+                   [ TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 12
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 10
+                                SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 12
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 10
+                                   SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 12
                                , srcInfoPoints = []
                                }
-                             "Eq"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/TypeEqualityParen.hs" 2 11 2 12
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/TypeEqualityParen.hs" 2 11 2 12
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 10
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 10
+                                     , srcInfoPoints = []
+                                     }
+                                   "Eq")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/TypeEqualityParen.hs" 2 11 2 12
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/TypeEqualityParen.hs" 2 11 2 12
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
                    , ParenA
                        SrcSpanInfo
                          { srcInfoSpan =
@@ -109,45 +120,52 @@
                              , SrcSpan "tests/examples/TypeEqualityParen.hs" 2 22 2 23
                              ]
                          }
-                       (EqualP
+                       (TypeA
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/TypeEqualityParen.hs" 2 15 2 22
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 17 2 18 ]
                             }
-                          (TyVar
+                          (TyEquals
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/TypeEqualityParen.hs" 2 15 2 16
-                               , srcInfoPoints = []
+                                   SrcSpan "tests/examples/TypeEqualityParen.hs" 2 15 2 22
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 17 2 18 ]
                                }
-                             (Ident
+                             (TyVar
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/TypeEqualityParen.hs" 2 15 2 16
                                   , srcInfoPoints = []
                                   }
-                                "a"))
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/TypeEqualityParen.hs" 2 19 2 22
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/TypeEqualityParen.hs" 2 15 2 16
+                                     , srcInfoPoints = []
+                                     }
+                                   "a"))
+                             (TyCon
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/TypeEqualityParen.hs" 2 19 2 22
                                   , srcInfoPoints = []
                                   }
-                                (Ident
+                                (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/TypeEqualityParen.hs" 2 19 2 22
                                      , srcInfoPoints = []
                                      }
-                                   "Int"))))
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/TypeEqualityParen.hs" 2 19 2 22
+                                        , srcInfoPoints = []
+                                        }
+                                      "Int")))))
                    ]))
              (TyFun
                 SrcSpanInfo
diff --git a/tests/examples/TypeOperatorsTest.hs.parser.golden b/tests/examples/TypeOperatorsTest.hs.parser.golden
--- a/tests/examples/TypeOperatorsTest.hs.parser.golden
+++ b/tests/examples/TypeOperatorsTest.hs.parser.golden
@@ -79,54 +79,67 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 20 3 22 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 22
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 20 3 22 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 14
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 22
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 20 3 22 ]
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 14
-                              , srcInfoPoints = []
+                                  SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 22
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 20 3 22 ]
                               }
-                            "ArrowXml"))
-                      [ TyCon
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 19
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 16
-                                , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 16 3 18
-                                , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 18 3 19
-                                ]
-                            }
-                          (UnQual
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 19
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 16
-                                   , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 16 3 18
-                                   , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 18 3 19
-                                   ]
-                               }
-                             (Symbol
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 16 3 18
-                                  , srcInfoPoints = []
-                                  }
-                                "~>"))
-                      ])))
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 14
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 14
+                                    , srcInfoPoints = []
+                                    }
+                                  "ArrowXml")))
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 19
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 16
+                                  , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 16 3 18
+                                  , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 18 3 19
+                                  ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 19
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 16
+                                     , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 16 3 18
+                                     , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 18 3 19
+                                     ]
+                                 }
+                               (Symbol
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 16 3 18
+                                    , srcInfoPoints = []
+                                    }
+                                  "~>")))))))
              (TyInfix
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/Unicode.hs.parser.golden b/tests/examples/Unicode.hs.parser.golden
--- a/tests/examples/Unicode.hs.parser.golden
+++ b/tests/examples/Unicode.hs.parser.golden
@@ -3748,62 +3748,80 @@
                          , SrcSpan "tests/examples/Unicode.hs" 74 28 74 29
                          ]
                      }
-                   [ ClassA
+                   [ TypeA
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 19
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 17
+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 19
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 17
+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 19
                                , srcInfoPoints = []
                                }
-                             "Num"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 18 74 19
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 18 74 19
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , ClassA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 17
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 17
+                                     , srcInfoPoints = []
+                                     }
+                                   "Num")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 18 74 19
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 18 74 19
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 26
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 24
+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 26
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 24
+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 26
                                , srcInfoPoints = []
                                }
-                             "Ord"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 25 74 26
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 25 74 26
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 24
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "Ord")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 25 74 26
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 25 74 26
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
                    ]))
              (TyFun
                 SrcSpanInfo
diff --git a/tests/examples/UnicodeIdents.hs b/tests/examples/UnicodeIdents.hs
new file mode 100644
--- /dev/null
+++ b/tests/examples/UnicodeIdents.hs
@@ -0,0 +1,2 @@
+猫 = ()
+自乗 x = x * x
diff --git a/tests/examples/UnicodeIdents.hs.exactprinter.golden b/tests/examples/UnicodeIdents.hs.exactprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/UnicodeIdents.hs.exactprinter.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/UnicodeIdents.hs.parser.golden b/tests/examples/UnicodeIdents.hs.parser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/UnicodeIdents.hs.parser.golden
@@ -0,0 +1,155 @@
+ParseOk
+  ( Module
+      SrcSpanInfo
+        { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 3 1
+        , srcInfoPoints =
+            [ SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 1
+            , SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 1
+            , SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 1
+            , SrcSpan "tests/examples/UnicodeIdents.hs" 2 1 2 1
+            , SrcSpan "tests/examples/UnicodeIdents.hs" 3 1 3 1
+            , SrcSpan "tests/examples/UnicodeIdents.hs" 3 1 3 1
+            ]
+        }
+      Nothing
+      []
+      []
+      [ PatBind
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 7
+            , srcInfoPoints = []
+            }
+          (PVar
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 2
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 2
+                  , srcInfoPoints = []
+                  }
+                "\29483"))
+          (UnGuardedRhs
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 3 1 7
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/UnicodeIdents.hs" 1 3 1 4 ]
+               }
+             (Con
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 7
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 6
+                      , SrcSpan "tests/examples/UnicodeIdents.hs" 1 6 1 7
+                      ]
+                  }
+                (Special
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 7
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 6
+                         , SrcSpan "tests/examples/UnicodeIdents.hs" 1 6 1 7
+                         ]
+                     }
+                   (UnitCon
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 7
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 6
+                            , SrcSpan "tests/examples/UnicodeIdents.hs" 1 6 1 7
+                            ]
+                        }))))
+          Nothing
+      , FunBind
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 1 2 13
+            , srcInfoPoints = []
+            }
+          [ Match
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 1 2 13
+                , srcInfoPoints = []
+                }
+              (Ident
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 1 2 3
+                   , srcInfoPoints = []
+                   }
+                 "\33258\20055")
+              [ PVar
+                  SrcSpanInfo
+                    { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 4 2 5
+                    , srcInfoPoints = []
+                    }
+                  (Ident
+                     SrcSpanInfo
+                       { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 4 2 5
+                       , srcInfoPoints = []
+                       }
+                     "x")
+              ]
+              (UnGuardedRhs
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 6 2 13
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/UnicodeIdents.hs" 2 6 2 7 ]
+                   }
+                 (InfixApp
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 8 2 13
+                      , srcInfoPoints = []
+                      }
+                    (Var
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 8 2 9
+                         , srcInfoPoints = []
+                         }
+                       (UnQual
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 8 2 9
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 8 2 9
+                               , srcInfoPoints = []
+                               }
+                             "x")))
+                    (QVarOp
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 10 2 11
+                         , srcInfoPoints = []
+                         }
+                       (UnQual
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 10 2 11
+                            , srcInfoPoints = []
+                            }
+                          (Symbol
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 10 2 11
+                               , srcInfoPoints = []
+                               }
+                             "*")))
+                    (Var
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 12 2 13
+                         , srcInfoPoints = []
+                         }
+                       (UnQual
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 12 2 13
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 12 2 13
+                               , srcInfoPoints = []
+                               }
+                             "x")))))
+              Nothing
+          ]
+      ]
+  , []
+  )
diff --git a/tests/examples/UnicodeIdents.hs.prettyparser.golden b/tests/examples/UnicodeIdents.hs.prettyparser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/UnicodeIdents.hs.prettyparser.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/UnicodeIdents.hs.prettyprinter.golden b/tests/examples/UnicodeIdents.hs.prettyprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/UnicodeIdents.hs.prettyprinter.golden
@@ -0,0 +1,2 @@
++ = ()
+êW x = x * x
diff --git a/tests/examples/Vta1.hs.parser.golden b/tests/examples/Vta1.hs.parser.golden
--- a/tests/examples/Vta1.hs.parser.golden
+++ b/tests/examples/Vta1.hs.parser.golden
@@ -3152,34 +3152,43 @@
                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 30
                      , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 55 28 55 30 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 30
                         , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 55 28 55 30 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 25
-                           , srcInfoPoints = []
+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 30
+                           , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 55 28 55 30 ]
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 25
+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 30
+                              , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 55 28 55 30 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 25
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 25
+                                    , srcInfoPoints = []
+                                    }
+                                  "Num")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 26 55 27
                               , srcInfoPoints = []
                               }
-                            "Num"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 26 55 27
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 26 55 27
-                               , srcInfoPoints = []
-                               }
-                             "a")
-                      ])))
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 26 55 27
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))))))
              (TyForall
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 31 55 52
@@ -3418,40 +3427,54 @@
                                        , srcInfoPoints =
                                            [ SrcSpan "tests/examples/Vta1.hs" 58 32 58 34 ]
                                        }
-                                     (ClassA
+                                     (TypeA
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/Vta1.hs" 58 26 58 34
                                           , srcInfoPoints =
                                               [ SrcSpan "tests/examples/Vta1.hs" 58 32 58 34 ]
                                           }
-                                        (UnQual
+                                        (TyApp
                                            SrcSpanInfo
                                              { srcInfoSpan =
-                                                 SrcSpan "tests/examples/Vta1.hs" 58 26 58 29
-                                             , srcInfoPoints = []
+                                                 SrcSpan "tests/examples/Vta1.hs" 58 26 58 34
+                                             , srcInfoPoints =
+                                                 [ SrcSpan "tests/examples/Vta1.hs" 58 32 58 34 ]
                                              }
-                                           (Ident
+                                           (TyCon
                                               SrcSpanInfo
                                                 { srcInfoSpan =
-                                                    SrcSpan "tests/examples/Vta1.hs" 58 26 58 29
+                                                    SrcSpan "tests/examples/Vta1.hs" 58 26 58 34
+                                                , srcInfoPoints =
+                                                    [ SrcSpan "tests/examples/Vta1.hs" 58 32 58 34 ]
+                                                }
+                                              (UnQual
+                                                 SrcSpanInfo
+                                                   { srcInfoSpan =
+                                                       SrcSpan "tests/examples/Vta1.hs" 58 26 58 29
+                                                   , srcInfoPoints = []
+                                                   }
+                                                 (Ident
+                                                    SrcSpanInfo
+                                                      { srcInfoSpan =
+                                                          SrcSpan
+                                                            "tests/examples/Vta1.hs" 58 26 58 29
+                                                      , srcInfoPoints = []
+                                                      }
+                                                    "Num")))
+                                           (TyVar
+                                              SrcSpanInfo
+                                                { srcInfoSpan =
+                                                    SrcSpan "tests/examples/Vta1.hs" 58 30 58 31
                                                 , srcInfoPoints = []
                                                 }
-                                              "Num"))
-                                        [ TyVar
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan "tests/examples/Vta1.hs" 58 30 58 31
-                                              , srcInfoPoints = []
-                                              }
-                                            (Ident
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan "tests/examples/Vta1.hs" 58 30 58 31
-                                                 , srcInfoPoints = []
-                                                 }
-                                               "a")
-                                        ])))
+                                              (Ident
+                                                 SrcSpanInfo
+                                                   { srcInfoSpan =
+                                                       SrcSpan "tests/examples/Vta1.hs" 58 30 58 31
+                                                   , srcInfoPoints = []
+                                                   }
+                                                 "a"))))))
                                (TyForall
                                   SrcSpanInfo
                                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 35 58 56
@@ -4848,37 +4871,51 @@
                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 38 85 47
                                 , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 85 45 85 47 ]
                                 }
-                              (ClassA
+                              (TypeA
                                  SrcSpanInfo
                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 38 85 47
                                    , srcInfoPoints =
                                        [ SrcSpan "tests/examples/Vta1.hs" 85 45 85 47 ]
                                    }
-                                 (UnQual
+                                 (TyApp
                                     SrcSpanInfo
-                                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 38 85 42
-                                      , srcInfoPoints = []
+                                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 38 85 47
+                                      , srcInfoPoints =
+                                          [ SrcSpan "tests/examples/Vta1.hs" 85 45 85 47 ]
                                       }
-                                    (Ident
+                                    (TyCon
                                        SrcSpanInfo
                                          { srcInfoSpan =
-                                             SrcSpan "tests/examples/Vta1.hs" 85 38 85 42
+                                             SrcSpan "tests/examples/Vta1.hs" 85 38 85 47
+                                         , srcInfoPoints =
+                                             [ SrcSpan "tests/examples/Vta1.hs" 85 45 85 47 ]
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/Vta1.hs" 85 38 85 42
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan "tests/examples/Vta1.hs" 85 38 85 42
+                                               , srcInfoPoints = []
+                                               }
+                                             "Show")))
+                                    (TyVar
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/Vta1.hs" 85 43 85 44
                                          , srcInfoPoints = []
                                          }
-                                       "Show"))
-                                 [ TyVar
-                                     SrcSpanInfo
-                                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 43 85 44
-                                       , srcInfoPoints = []
-                                       }
-                                     (Ident
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/Vta1.hs" 85 43 85 44
-                                          , srcInfoPoints = []
-                                          }
-                                        "a")
-                                 ])))
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/Vta1.hs" 85 43 85 44
+                                            , srcInfoPoints = []
+                                            }
+                                          "a"))))))
                         (TyFun
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 48 85 59
diff --git a/tests/examples/t403.hs.parser.golden b/tests/examples/t403.hs.parser.golden
--- a/tests/examples/t403.hs.parser.golden
+++ b/tests/examples/t403.hs.parser.golden
@@ -172,74 +172,79 @@
                          , SrcSpan "tests/examples/t403.hs" 8 50 8 52
                          ]
                      }
-                   (EqualP
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 36 8 48
                         , srcInfoPoints = [ SrcSpan "tests/examples/t403.hs" 8 45 8 46 ]
                         }
-                      (TyParen
+                      (TyEquals
                          SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 36 8 44
-                           , srcInfoPoints =
-                               [ SrcSpan "tests/examples/t403.hs" 8 36 8 37
-                               , SrcSpan "tests/examples/t403.hs" 8 43 8 44
-                               ]
+                           { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 36 8 48
+                           , srcInfoPoints = [ SrcSpan "tests/examples/t403.hs" 8 45 8 46 ]
                            }
-                         (TyInfix
+                         (TyParen
                             SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 37 8 43
-                              , srcInfoPoints = []
+                              { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 36 8 44
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/t403.hs" 8 36 8 37
+                                  , SrcSpan "tests/examples/t403.hs" 8 43 8 44
+                                  ]
                               }
-                            (TyVar
+                            (TyInfix
                                SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 37 8 38
+                                 { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 37 8 43
                                  , srcInfoPoints = []
                                  }
-                               (Ident
+                               (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 37 8 38
                                     , srcInfoPoints = []
                                     }
-                                  "k"))
-                            (UnpromotedName
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 39 8 41
-                                 , srcInfoPoints = []
-                                 }
-                               (UnQual
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 37 8 38
+                                       , srcInfoPoints = []
+                                       }
+                                     "k"))
+                               (UnpromotedName
                                   SrcSpanInfo
                                     { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 39 8 41
                                     , srcInfoPoints = []
                                     }
-                                  (Symbol
+                                  (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 39 8 41
                                        , srcInfoPoints = []
                                        }
-                                     ":+")))
-                            (TyPromoted
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 42 8 43
-                                 , srcInfoPoints = []
-                                 }
-                               (PromotedInteger
+                                     (Symbol
+                                        SrcSpanInfo
+                                          { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 39 8 41
+                                          , srcInfoPoints = []
+                                          }
+                                        ":+")))
+                               (TyPromoted
                                   SrcSpanInfo
                                     { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 42 8 43
                                     , srcInfoPoints = []
                                     }
-                                  1
-                                  "1"))))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 47 8 48
-                           , srcInfoPoints = []
-                           }
-                         (Ident
+                                  (PromotedInteger
+                                     SrcSpanInfo
+                                       { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 42 8 43
+                                       , srcInfoPoints = []
+                                       }
+                                     1
+                                     "1"))))
+                         (TyVar
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 47 8 48
                               , srcInfoPoints = []
                               }
-                            "n"))))))
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 47 8 48
+                                 , srcInfoPoints = []
+                                 }
+                               "n")))))))
           (TyFun
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 53 8 86
