packages feed

haskell-src-exts-1.22.0: tests/examples/DerivingVia2.hs.parser.golden

ParseOk
  ( Module
      SrcSpanInfo
        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 1 1 42 1
        , srcInfoPoints =
            [ SrcSpan "tests/examples/DerivingVia2.hs" 1 1 1 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 2 1 2 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 3 1 3 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 4 1 4 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 5 1 5 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 6 1 6 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 7 1 7 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 8 1 8 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 9 1 9 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 9 1 9 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 11 1 11 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 12 1 12 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 13 1 13 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 14 1 14 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 16 1 16 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 20 1 20 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 23 1 23 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 27 1 27 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 28 1 28 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 30 1 30 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 31 1 31 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 33 1 33 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 34 1 34 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 35 1 35 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 36 1 36 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 37 1 37 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 39 1 39 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 40 1 40 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 41 1 41 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 42 1 42 1
            , SrcSpan "tests/examples/DerivingVia2.hs" 42 1 42 1
            ]
        }
      (Just
         (ModuleHead
            SrcSpanInfo
              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 9 1 9 26
              , srcInfoPoints =
                  [ SrcSpan "tests/examples/DerivingVia2.hs" 9 1 9 7
                  , SrcSpan "tests/examples/DerivingVia2.hs" 9 21 9 26
                  ]
              }
            (ModuleName
               SrcSpanInfo
                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 9 8 9 20
                 , srcInfoPoints = []
                 }
               "DerivingVia2")
            Nothing
            Nothing))
      [ LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 1 1 1 36
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia2.hs" 1 1 1 13
                , SrcSpan "tests/examples/DerivingVia2.hs" 1 33 1 36
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 1 14 1 32
                , srcInfoPoints = []
                }
              "DerivingStrategies"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 2 1 2 29
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia2.hs" 2 1 2 13
                , SrcSpan "tests/examples/DerivingVia2.hs" 2 26 2 29
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 2 14 2 25
                , srcInfoPoints = []
                }
              "DerivingVia"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 3 1 3 35
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia2.hs" 3 1 3 13
                , SrcSpan "tests/examples/DerivingVia2.hs" 3 32 3 35
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 3 14 3 31
                , srcInfoPoints = []
                }
              "FlexibleInstances"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 4 1 4 44
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia2.hs" 4 1 4 13
                , SrcSpan "tests/examples/DerivingVia2.hs" 4 41 4 44
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 4 14 4 40
                , srcInfoPoints = []
                }
              "GeneralizedNewtypeDeriving"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 5 1 5 39
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia2.hs" 5 1 5 13
                , SrcSpan "tests/examples/DerivingVia2.hs" 5 36 5 39
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 5 14 5 35
                , srcInfoPoints = []
                }
              "MultiParamTypeClasses"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 6 1 6 27
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia2.hs" 6 1 6 13
                , SrcSpan "tests/examples/DerivingVia2.hs" 6 24 6 27
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 6 14 6 23
                , srcInfoPoints = []
                }
              "PolyKinds"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 7 1 7 28
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia2.hs" 7 1 7 13
                , SrcSpan "tests/examples/DerivingVia2.hs" 7 25 7 28
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 7 14 7 24
                , srcInfoPoints = []
                }
              "RankNTypes"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 8 1 8 36
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia2.hs" 8 1 8 13
                , SrcSpan "tests/examples/DerivingVia2.hs" 8 33 8 36
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 8 14 8 32
                , srcInfoPoints = []
                }
              "StandaloneDeriving"
          ]
      ]
      [ ImportDecl
          { importAnn =
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 11 1 11 27
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia2.hs" 11 1 11 7 ]
                }
          , importModule =
              ModuleName
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 11 8 11 27
                  , srcInfoPoints = []
                  }
                "Control.Applicative"
          , importQualified = False
          , importSrc = False
          , importSafe = False
          , importPkg = Nothing
          , importAs = Nothing
          , importSpecs = Nothing
          }
      , ImportDecl
          { importAnn =
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 12 1 12 28
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia2.hs" 12 1 12 7 ]
                }
          , importModule =
              ModuleName
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 12 8 12 28
                  , srcInfoPoints = []
                  }
                "Data.Functor.Compose"
          , importQualified = False
          , importSrc = False
          , importSafe = False
          , importPkg = Nothing
          , importAs = Nothing
          , importSpecs = Nothing
          }
      , ImportDecl
          { importAnn =
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 13 1 13 18
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia2.hs" 13 1 13 7 ]
                }
          , importModule =
              ModuleName
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 13 8 13 18
                  , srcInfoPoints = []
                  }
                "Data.Proxy"
          , importQualified = False
          , importSrc = False
          , importSafe = False
          , importPkg = Nothing
          , importAs = Nothing
          , importSpecs = Nothing
          }
      , ImportDecl
          { importAnn =
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 14 1 14 22
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia2.hs" 14 1 14 7 ]
                }
          , importModule =
              ModuleName
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 14 8 14 22
                  , srcInfoPoints = []
                  }
                "Data.Semigroup"
          , importQualified = False
          , importSrc = False
          , importSafe = False
          , importPkg = Nothing
          , importAs = Nothing
          , importSpecs = Nothing
          }
      ]
      [ DataDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 1 18 27
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia2.hs" 16 29 16 30 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 1 16 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 9 16 28
               , srcInfoPoints = []
               }
             (DHApp
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 9 16 26
                  , srcInfoPoints = []
                  }
                (DHead
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 9 16 12
                     , srcInfoPoints = []
                     }
                   (Ident
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 9 16 12
                        , srcInfoPoints = []
                        }
                      "App"))
                (KindedVar
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 16 13 16 26
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia2.hs" 16 13 16 14
                         , SrcSpan "tests/examples/DerivingVia2.hs" 16 16 16 18
                         , SrcSpan "tests/examples/DerivingVia2.hs" 16 25 16 26
                         ]
                     }
                   (Ident
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 16 14 16 15
                        , srcInfoPoints = []
                        }
                      "f")
                   (TyFun
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 16 19 16 25
                        , srcInfoPoints =
                            [ SrcSpan "tests/examples/DerivingVia2.hs" 16 21 16 23 ]
                        }
                      (TyStar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 16 19 16 20
                           , srcInfoPoints = []
                           })
                      (TyStar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 16 24 16 25
                           , srcInfoPoints = []
                           }))))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia2.hs" 16 27 16 28
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 16 27 16 28
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia2.hs" 16 31 16 40
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia2.hs" 16 31 16 40
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia2.hs" 16 31 16 34
                      , srcInfoPoints = []
                      }
                    "App")
                 [ TyParen
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia2.hs" 16 35 16 40
                       , srcInfoPoints =
                           [ SrcSpan "tests/examples/DerivingVia2.hs" 16 35 16 36
                           , SrcSpan "tests/examples/DerivingVia2.hs" 16 39 16 40
                           ]
                       }
                     (TyApp
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia2.hs" 16 36 16 39
                          , srcInfoPoints = []
                          }
                        (TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia2.hs" 16 36 16 37
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia2.hs" 16 36 16 37
                                , srcInfoPoints = []
                                }
                              "f"))
                        (TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia2.hs" 16 38 16 39
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia2.hs" 16 38 16 39
                                , srcInfoPoints = []
                                }
                              "a")))
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 17 3 18 27
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia2.hs" 17 3 17 11
                    , SrcSpan "tests/examples/DerivingVia2.hs" 18 5 18 6
                    , SrcSpan "tests/examples/DerivingVia2.hs" 18 13 18 14
                    , SrcSpan "tests/examples/DerivingVia2.hs" 18 26 18 27
                    ]
                }
              (Just
                 (DerivNewtype
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia2.hs" 17 12 17 19
                      , srcInfoPoints = []
                      }))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 18 6 18 13
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 18 6 18 13
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 18 6 18 13
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 18 6 18 13
                             , srcInfoPoints = []
                             }
                           "Functor")))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia2.hs" 18 15 18 26
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia2.hs" 18 15 18 26
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia2.hs" 18 15 18 26
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia2.hs" 18 15 18 26
                             , srcInfoPoints = []
                             }
                           "Applicative")))
              ]
          ]
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 20 1 23 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia2.hs" 20 1 20 9
                , SrcSpan "tests/examples/DerivingVia2.hs" 20 62 20 67
                , SrcSpan "tests/examples/DerivingVia2.hs" 21 3 21 3
                , SrcSpan "tests/examples/DerivingVia2.hs" 23 1 23 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia2.hs" 20 10 20 61
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxTuple
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 20 10 20 41
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia2.hs" 20 10 20 11
                         , SrcSpan "tests/examples/DerivingVia2.hs" 20 24 20 25
                         , SrcSpan "tests/examples/DerivingVia2.hs" 20 37 20 38
                         , SrcSpan "tests/examples/DerivingVia2.hs" 20 39 20 41
                         ]
                     }
                   [ TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 24
                         , srcInfoPoints = []
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 24
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 24
                               , srcInfoPoints = []
                               }
                             (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 = []
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 37
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 37
                               , srcInfoPoints = []
                               }
                             (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
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia2.hs" 20 42 20 61
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 20 42 20 51
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 20 42 20 51
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 20 42 20 51
                           , srcInfoPoints = []
                           }
                         "Semigroup")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 20 52 20 61
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia2.hs" 20 52 20 53
                         , SrcSpan "tests/examples/DerivingVia2.hs" 20 60 20 61
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 20 53 20 60
                        , srcInfoPoints = []
                        }
                      (TyApp
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 20 53 20 58
                           , srcInfoPoints = []
                           }
                         (TyCon
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 20 53 20 56
                              , srcInfoPoints = []
                              }
                            (UnQual
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia2.hs" 20 53 20 56
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia2.hs" 20 53 20 56
                                    , srcInfoPoints = []
                                    }
                                  "App")))
                         (TyVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 20 57 20 58
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia2.hs" 20 57 20 58
                                 , srcInfoPoints = []
                                 }
                               "f")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 20 59 20 60
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 20 59 20 60
                              , srcInfoPoints = []
                              }
                            "a"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 21 3 21 21
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 21 3 21 21
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 21 3 21 7
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia2.hs" 21 3 21 4
                             , SrcSpan "tests/examples/DerivingVia2.hs" 21 4 21 6
                             , SrcSpan "tests/examples/DerivingVia2.hs" 21 6 21 7
                             ]
                         }
                       (Symbol
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 21 4 21 6
                            , srcInfoPoints = []
                            }
                          "<>"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 21 8 21 21
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia2.hs" 21 8 21 9 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia2.hs" 21 10 21 21
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia2.hs" 21 10 21 16
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia2.hs" 21 10 21 16
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia2.hs" 21 10 21 16
                                     , srcInfoPoints = []
                                     }
                                   "liftA2")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia2.hs" 21 17 21 21
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia2.hs" 21 17 21 18
                                   , SrcSpan "tests/examples/DerivingVia2.hs" 21 18 21 20
                                   , SrcSpan "tests/examples/DerivingVia2.hs" 21 20 21 21
                                   ]
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia2.hs" 21 17 21 21
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia2.hs" 21 17 21 18
                                      , SrcSpan "tests/examples/DerivingVia2.hs" 21 18 21 20
                                      , SrcSpan "tests/examples/DerivingVia2.hs" 21 20 21 21
                                      ]
                                  }
                                (Symbol
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia2.hs" 21 18 21 20
                                     , srcInfoPoints = []
                                     }
                                   "<>")))))
                    Nothing)
             ])
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 23 1 25 44
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia2.hs" 23 1 23 9
                , SrcSpan "tests/examples/DerivingVia2.hs" 24 10 24 18
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia2.hs" 23 10 23 13
                  , srcInfoPoints = []
                  }
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 23 14 23 47
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia2.hs" 23 14 23 15
                         , SrcSpan "tests/examples/DerivingVia2.hs" 23 46 23 47
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 23 15 23 46
                        , srcInfoPoints = []
                        }
                      (TyApp
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 23 15 23 44
                           , srcInfoPoints = []
                           }
                         (TyCon
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 23 15 23 18
                              , srcInfoPoints = []
                              }
                            (UnQual
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia2.hs" 23 15 23 18
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia2.hs" 23 15 23 18
                                    , srcInfoPoints = []
                                    }
                                  "App")))
                         (TyParen
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 23 19 23 44
                              , srcInfoPoints =
                                  [ SrcSpan "tests/examples/DerivingVia2.hs" 23 19 23 20
                                  , SrcSpan "tests/examples/DerivingVia2.hs" 23 43 23 44
                                  ]
                              }
                            (TyApp
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia2.hs" 23 20 23 43
                                 , srcInfoPoints = []
                                 }
                               (TyApp
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia2.hs" 23 20 23 41
                                    , srcInfoPoints = []
                                    }
                                  (TyCon
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia2.hs" 23 20 23 27
                                       , srcInfoPoints = []
                                       }
                                     (UnQual
                                        SrcSpanInfo
                                          { srcInfoSpan =
                                              SrcSpan "tests/examples/DerivingVia2.hs" 23 20 23 27
                                          , srcInfoPoints = []
                                          }
                                        (Ident
                                           SrcSpanInfo
                                             { srcInfoSpan =
                                                 SrcSpan
                                                   "tests/examples/DerivingVia2.hs" 23 20 23 27
                                             , srcInfoPoints = []
                                             }
                                           "Compose")))
                                  (TyKind
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia2.hs" 23 28 23 41
                                       , srcInfoPoints =
                                           [ SrcSpan "tests/examples/DerivingVia2.hs" 23 28 23 29
                                           , SrcSpan "tests/examples/DerivingVia2.hs" 23 31 23 33
                                           , SrcSpan "tests/examples/DerivingVia2.hs" 23 40 23 41
                                           ]
                                       }
                                     (TyVar
                                        SrcSpanInfo
                                          { srcInfoSpan =
                                              SrcSpan "tests/examples/DerivingVia2.hs" 23 29 23 30
                                          , srcInfoPoints = []
                                          }
                                        (Ident
                                           SrcSpanInfo
                                             { srcInfoSpan =
                                                 SrcSpan
                                                   "tests/examples/DerivingVia2.hs" 23 29 23 30
                                             , srcInfoPoints = []
                                             }
                                           "f"))
                                     (TyFun
                                        SrcSpanInfo
                                          { srcInfoSpan =
                                              SrcSpan "tests/examples/DerivingVia2.hs" 23 34 23 40
                                          , srcInfoPoints =
                                              [ SrcSpan "tests/examples/DerivingVia2.hs" 23 36 23 38
                                              ]
                                          }
                                        (TyStar
                                           SrcSpanInfo
                                             { srcInfoSpan =
                                                 SrcSpan
                                                   "tests/examples/DerivingVia2.hs" 23 34 23 35
                                             , srcInfoPoints = []
                                             })
                                        (TyStar
                                           SrcSpanInfo
                                             { srcInfoSpan =
                                                 SrcSpan
                                                   "tests/examples/DerivingVia2.hs" 23 39 23 40
                                             , srcInfoPoints = []
                                             }))))
                               (TyVar
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia2.hs" 23 42 23 43
                                    , srcInfoPoints = []
                                    }
                                  (Ident
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia2.hs" 23 42 23 43
                                       , srcInfoPoints = []
                                       }
                                     "g")))))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 23 45 23 46
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 23 45 23 46
                              , srcInfoPoints = []
                              }
                            "a"))))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia2.hs" 24 19 25 44
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxTuple
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 24 19 25 18
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia2.hs" 24 19 24 20
                         , SrcSpan "tests/examples/DerivingVia2.hs" 24 33 24 34
                         , SrcSpan "tests/examples/DerivingVia2.hs" 24 48 24 49
                         , SrcSpan "tests/examples/DerivingVia2.hs" 24 61 24 62
                         , SrcSpan "tests/examples/DerivingVia2.hs" 25 16 25 18
                         ]
                     }
                   [ TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 33
                         , srcInfoPoints = []
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 33
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 33
                               , srcInfoPoints = []
                               }
                             (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 = []
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 48
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 48
                               , srcInfoPoints = []
                               }
                             (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 = []
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 61
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 61
                               , srcInfoPoints = []
                               }
                             (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
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia2.hs" 25 19 25 44
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 25 19 25 28
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 25 19 25 28
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 25 19 25 28
                           , srcInfoPoints = []
                           }
                         "Semigroup")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 25 29 25 44
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia2.hs" 25 29 25 30
                         , SrcSpan "tests/examples/DerivingVia2.hs" 25 43 25 44
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 43
                        , srcInfoPoints = []
                        }
                      (TyApp
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 41
                           , srcInfoPoints = []
                           }
                         (TyApp
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 39
                              , srcInfoPoints = []
                              }
                            (TyCon
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 37
                                 , srcInfoPoints = []
                                 }
                               (UnQual
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 37
                                    , srcInfoPoints = []
                                    }
                                  (Ident
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 37
                                       , srcInfoPoints = []
                                       }
                                     "Compose")))
                            (TyVar
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia2.hs" 25 38 25 39
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia2.hs" 25 38 25 39
                                    , srcInfoPoints = []
                                    }
                                  "f")))
                         (TyVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 25 40 25 41
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia2.hs" 25 40 25 41
                                 , srcInfoPoints = []
                                 }
                               "g")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 25 42 25 43
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 25 42 25 43
                              , srcInfoPoints = []
                              }
                            "a"))))))
      , ClassDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 27 1 27 22
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia2.hs" 27 1 27 6 ]
            }
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 27 7 27 22
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 27 7 27 8
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 27 7 27 8
                     , srcInfoPoints = []
                     }
                   "C"))
             (KindedVar
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 27 9 27 22
                  , srcInfoPoints =
                      [ SrcSpan "tests/examples/DerivingVia2.hs" 27 9 27 10
                      , SrcSpan "tests/examples/DerivingVia2.hs" 27 12 27 14
                      , SrcSpan "tests/examples/DerivingVia2.hs" 27 21 27 22
                      ]
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 27 10 27 11
                     , srcInfoPoints = []
                     }
                   "a")
                (TyFun
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 27 15 27 21
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia2.hs" 27 17 27 19 ]
                     }
                   (TyVar
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 27 15 27 16
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 27 15 27 16
                           , srcInfoPoints = []
                           }
                         "k"))
                   (TyStar
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 27 20 27 21
                        , srcInfoPoints = []
                        }))))
          []
          Nothing
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 28 1 28 17
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia2.hs" 28 1 28 9 ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia2.hs" 28 10 28 17
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia2.hs" 28 10 28 17
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 28 10 28 11
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 28 10 28 11
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 28 10 28 11
                           , srcInfoPoints = []
                           }
                         "C")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 28 12 28 17
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 28 12 28 17
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 28 12 28 17
                           , srcInfoPoints = []
                           }
                         "Proxy")))))
          Nothing
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 30 1 30 38
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia2.hs" 30 19 30 20 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 30 1 30 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 30 9 30 18
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 30 9 30 16
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 30 9 30 16
                     , srcInfoPoints = []
                     }
                   "MyProxy"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia2.hs" 30 17 30 18
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 30 17 30 18
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia2.hs" 30 21 30 38
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia2.hs" 30 21 30 38
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia2.hs" 30 21 30 28
                      , srcInfoPoints = []
                      }
                    "MyProxy")
                 [ TyParen
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia2.hs" 30 29 30 38
                       , srcInfoPoints =
                           [ SrcSpan "tests/examples/DerivingVia2.hs" 30 29 30 30
                           , SrcSpan "tests/examples/DerivingVia2.hs" 30 37 30 38
                           ]
                       }
                     (TyApp
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia2.hs" 30 30 30 37
                          , srcInfoPoints = []
                          }
                        (TyCon
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia2.hs" 30 30 30 35
                             , srcInfoPoints = []
                             }
                           (UnQual
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia2.hs" 30 30 30 35
                                , srcInfoPoints = []
                                }
                              (Ident
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia2.hs" 30 30 30 35
                                   , srcInfoPoints = []
                                   }
                                 "Proxy")))
                        (TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia2.hs" 30 36 30 37
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia2.hs" 30 36 30 37
                                , srcInfoPoints = []
                                }
                              "a")))
                 ])
          ]
          []
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 31 1 31 50
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia2.hs" 31 1 31 9
                , SrcSpan "tests/examples/DerivingVia2.hs" 31 32 31 40
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia2.hs" 31 10 31 13
                  , srcInfoPoints = []
                  }
                (TyKind
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 31 14 31 31
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia2.hs" 31 14 31 15
                         , SrcSpan "tests/examples/DerivingVia2.hs" 31 21 31 23
                         , SrcSpan "tests/examples/DerivingVia2.hs" 31 30 31 31
                         ]
                     }
                   (TyCon
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 31 15 31 20
                        , srcInfoPoints = []
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 31 15 31 20
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 31 15 31 20
                              , srcInfoPoints = []
                              }
                            "Proxy")))
                   (TyFun
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 31 24 31 30
                        , srcInfoPoints =
                            [ SrcSpan "tests/examples/DerivingVia2.hs" 31 26 31 28 ]
                        }
                      (TyStar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 31 24 31 25
                           , srcInfoPoints = []
                           })
                      (TyStar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 31 29 31 30
                           , srcInfoPoints = []
                           })))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia2.hs" 31 41 31 50
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia2.hs" 31 41 31 50
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 31 41 31 42
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 31 41 31 42
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 31 41 31 42
                           , srcInfoPoints = []
                           }
                         "C")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 31 43 31 50
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 31 43 31 50
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 31 43 31 50
                           , srcInfoPoints = []
                           }
                         "MyProxy")))))
      , ClassDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 1 33 12
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia2.hs" 33 1 33 6 ]
            }
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 7 33 12
               , srcInfoPoints = []
               }
             (DHApp
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 7 33 10
                  , srcInfoPoints = []
                  }
                (DHead
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 7 33 8
                     , srcInfoPoints = []
                     }
                   (Ident
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 7 33 8
                        , srcInfoPoints = []
                        }
                      "Z"))
                (UnkindedVar
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 9 33 10
                     , srcInfoPoints = []
                     }
                   (Ident
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 9 33 10
                        , srcInfoPoints = []
                        }
                      "a")))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia2.hs" 33 11 33 12
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 33 11 33 12
                     , srcInfoPoints = []
                     }
                   "b")))
          []
          Nothing
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 1 34 5
            , srcInfoPoints = []
            }
          (DataType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 1 34 5
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 6 34 9
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 6 34 7
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 6 34 7
                     , srcInfoPoints = []
                     }
                   "T"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 8 34 9
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 8 34 9
                     , srcInfoPoints = []
                     }
                   "a")))
          []
          []
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 1 35 5
            , srcInfoPoints = []
            }
          (DataType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 1 35 5
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 6 35 10
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 6 35 8
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 6 35 8
                     , srcInfoPoints = []
                     }
                   "X1"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 9 35 10
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 9 35 10
                     , srcInfoPoints = []
                     }
                   "a")))
          []
          []
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 1 36 5
            , srcInfoPoints = []
            }
          (DataType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 1 36 5
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 6 36 10
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 6 36 8
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 6 36 8
                     , srcInfoPoints = []
                     }
                   "X2"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 9 36 10
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 9 36 10
                     , srcInfoPoints = []
                     }
                   "a")))
          []
          []
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 1 37 5
            , srcInfoPoints = []
            }
          (DataType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 1 37 5
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 6 37 10
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 6 37 8
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 6 37 8
                     , srcInfoPoints = []
                     }
                   "X3"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 9 37 10
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 9 37 10
                     , srcInfoPoints = []
                     }
                   "a")))
          []
          []
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 39 1 39 59
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia2.hs" 39 1 39 9
                , SrcSpan "tests/examples/DerivingVia2.hs" 39 30 39 38
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia2.hs" 39 10 39 13
                  , srcInfoPoints = []
                  }
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 39 14 39 29
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia2.hs" 39 14 39 15
                         , SrcSpan "tests/examples/DerivingVia2.hs" 39 28 39 29
                         ]
                     }
                   (TyForall
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 39 15 39 28
                        , srcInfoPoints =
                            [ SrcSpan "tests/examples/DerivingVia2.hs" 39 15 39 21
                            , SrcSpan "tests/examples/DerivingVia2.hs" 39 23 39 24
                            ]
                        }
                      (Just
                         [ UnkindedVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia2.hs" 39 22 39 23
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia2.hs" 39 22 39 23
                                  , srcInfoPoints = []
                                  }
                                "a")
                         ])
                      Nothing
                      (TyApp
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 39 25 39 28
                           , srcInfoPoints = []
                           }
                         (TyCon
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 39 25 39 26
                              , srcInfoPoints = []
                              }
                            (UnQual
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia2.hs" 39 25 39 26
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia2.hs" 39 25 39 26
                                    , srcInfoPoints = []
                                    }
                                  "T")))
                         (TyVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 39 27 39 28
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia2.hs" 39 27 39 28
                                 , srcInfoPoints = []
                                 }
                               "a")))))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 59
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 59
                  , srcInfoPoints = []
                  }
                (IHApp
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 52
                     , srcInfoPoints = []
                     }
                   (IHCon
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 50
                        , srcInfoPoints = []
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 50
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 50
                              , srcInfoPoints = []
                              }
                            "Z")))
                   (TyVar
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 39 51 39 52
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 39 51 39 52
                           , srcInfoPoints = []
                           }
                         "a")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 39 53 39 59
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia2.hs" 39 53 39 54
                         , SrcSpan "tests/examples/DerivingVia2.hs" 39 58 39 59
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 39 54 39 58
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 39 54 39 56
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 39 54 39 56
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia2.hs" 39 54 39 56
                                 , srcInfoPoints = []
                                 }
                               "X1")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 39 57 39 58
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 39 57 39 58
                              , srcInfoPoints = []
                              }
                            "b"))))))
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 40 1 40 59
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia2.hs" 40 1 40 9
                , SrcSpan "tests/examples/DerivingVia2.hs" 40 30 40 38
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia2.hs" 40 10 40 13
                  , srcInfoPoints = []
                  }
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 40 24 40 29
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia2.hs" 40 24 40 25
                         , SrcSpan "tests/examples/DerivingVia2.hs" 40 28 40 29
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 40 25 40 28
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 40 25 40 26
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 40 25 40 26
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia2.hs" 40 25 40 26
                                 , srcInfoPoints = []
                                 }
                               "T")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 40 27 40 28
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 40 27 40 28
                              , srcInfoPoints = []
                              }
                            "a"))))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia2.hs" 40 39 40 59
               , srcInfoPoints =
                   [ SrcSpan "tests/examples/DerivingVia2.hs" 40 39 40 45
                   , SrcSpan "tests/examples/DerivingVia2.hs" 40 47 40 48
                   ]
               }
             (Just
                [ UnkindedVar
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia2.hs" 40 46 40 47
                      , srcInfoPoints = []
                      }
                    (Ident
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia2.hs" 40 46 40 47
                         , srcInfoPoints = []
                         }
                       "b")
                ])
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia2.hs" 40 49 40 59
                  , srcInfoPoints = []
                  }
                (IHApp
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 40 49 40 52
                     , srcInfoPoints = []
                     }
                   (IHCon
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 40 49 40 50
                        , srcInfoPoints = []
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 40 49 40 50
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 40 49 40 50
                              , srcInfoPoints = []
                              }
                            "Z")))
                   (TyVar
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 40 51 40 52
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 40 51 40 52
                           , srcInfoPoints = []
                           }
                         "a")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 40 53 40 59
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia2.hs" 40 53 40 54
                         , SrcSpan "tests/examples/DerivingVia2.hs" 40 58 40 59
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 40 54 40 58
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 40 54 40 56
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 40 54 40 56
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia2.hs" 40 54 40 56
                                 , srcInfoPoints = []
                                 }
                               "X2")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 40 57 40 58
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 40 57 40 58
                              , srcInfoPoints = []
                              }
                            "b"))))))
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 41 1 41 59
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia2.hs" 41 1 41 9
                , SrcSpan "tests/examples/DerivingVia2.hs" 41 30 41 38
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia2.hs" 41 10 41 13
                  , srcInfoPoints = []
                  }
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 41 14 41 29
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia2.hs" 41 14 41 15
                         , SrcSpan "tests/examples/DerivingVia2.hs" 41 28 41 29
                         ]
                     }
                   (TyForall
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 41 15 41 28
                        , srcInfoPoints =
                            [ SrcSpan "tests/examples/DerivingVia2.hs" 41 15 41 21
                            , SrcSpan "tests/examples/DerivingVia2.hs" 41 23 41 24
                            ]
                        }
                      (Just
                         [ UnkindedVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia2.hs" 41 22 41 23
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia2.hs" 41 22 41 23
                                  , srcInfoPoints = []
                                  }
                                "a")
                         ])
                      Nothing
                      (TyApp
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 41 25 41 28
                           , srcInfoPoints = []
                           }
                         (TyCon
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 41 25 41 26
                              , srcInfoPoints = []
                              }
                            (UnQual
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia2.hs" 41 25 41 26
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia2.hs" 41 25 41 26
                                    , srcInfoPoints = []
                                    }
                                  "T")))
                         (TyVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 41 27 41 28
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia2.hs" 41 27 41 28
                                 , srcInfoPoints = []
                                 }
                               "a")))))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia2.hs" 41 39 41 59
               , srcInfoPoints =
                   [ SrcSpan "tests/examples/DerivingVia2.hs" 41 39 41 45
                   , SrcSpan "tests/examples/DerivingVia2.hs" 41 47 41 48
                   ]
               }
             (Just
                [ UnkindedVar
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia2.hs" 41 46 41 47
                      , srcInfoPoints = []
                      }
                    (Ident
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia2.hs" 41 46 41 47
                         , srcInfoPoints = []
                         }
                       "b")
                ])
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia2.hs" 41 49 41 59
                  , srcInfoPoints = []
                  }
                (IHApp
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 41 49 41 52
                     , srcInfoPoints = []
                     }
                   (IHCon
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 41 49 41 50
                        , srcInfoPoints = []
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 41 49 41 50
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 41 49 41 50
                              , srcInfoPoints = []
                              }
                            "Z")))
                   (TyVar
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 41 51 41 52
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 41 51 41 52
                           , srcInfoPoints = []
                           }
                         "a")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia2.hs" 41 53 41 59
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia2.hs" 41 53 41 54
                         , SrcSpan "tests/examples/DerivingVia2.hs" 41 58 41 59
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia2.hs" 41 54 41 58
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 41 54 41 56
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 41 54 41 56
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia2.hs" 41 54 41 56
                                 , srcInfoPoints = []
                                 }
                               "X3")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia2.hs" 41 57 41 58
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia2.hs" 41 57 41 58
                              , srcInfoPoints = []
                              }
                            "b"))))))
      ]
  , []
  )