packages feed

haskell-src-exts-1.21.0: tests/examples/DerivingVia.hs.parser.golden

ParseOk
  ( Module
      SrcSpanInfo
        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 1 1 460 1
        , srcInfoPoints =
            [ SrcSpan "tests/examples/DerivingVia.hs" 1 1 1 1
            , SrcSpan "tests/examples/DerivingVia.hs" 2 1 2 1
            , SrcSpan "tests/examples/DerivingVia.hs" 3 1 3 1
            , SrcSpan "tests/examples/DerivingVia.hs" 4 1 4 1
            , SrcSpan "tests/examples/DerivingVia.hs" 5 1 5 1
            , SrcSpan "tests/examples/DerivingVia.hs" 6 1 6 1
            , SrcSpan "tests/examples/DerivingVia.hs" 7 1 7 1
            , SrcSpan "tests/examples/DerivingVia.hs" 8 1 8 1
            , SrcSpan "tests/examples/DerivingVia.hs" 9 1 9 1
            , SrcSpan "tests/examples/DerivingVia.hs" 10 1 10 1
            , SrcSpan "tests/examples/DerivingVia.hs" 11 1 11 1
            , SrcSpan "tests/examples/DerivingVia.hs" 12 1 12 1
            , SrcSpan "tests/examples/DerivingVia.hs" 13 1 13 1
            , SrcSpan "tests/examples/DerivingVia.hs" 14 1 14 1
            , SrcSpan "tests/examples/DerivingVia.hs" 15 1 15 1
            , SrcSpan "tests/examples/DerivingVia.hs" 16 1 16 1
            , SrcSpan "tests/examples/DerivingVia.hs" 17 1 17 1
            , SrcSpan "tests/examples/DerivingVia.hs" 18 1 18 1
            , SrcSpan "tests/examples/DerivingVia.hs" 19 1 19 1
            , SrcSpan "tests/examples/DerivingVia.hs" 20 1 20 1
            , SrcSpan "tests/examples/DerivingVia.hs" 20 1 20 1
            , SrcSpan "tests/examples/DerivingVia.hs" 22 1 22 1
            , SrcSpan "tests/examples/DerivingVia.hs" 23 1 23 1
            , SrcSpan "tests/examples/DerivingVia.hs" 24 1 24 1
            , SrcSpan "tests/examples/DerivingVia.hs" 25 1 25 1
            , SrcSpan "tests/examples/DerivingVia.hs" 26 1 26 1
            , SrcSpan "tests/examples/DerivingVia.hs" 27 1 27 1
            , SrcSpan "tests/examples/DerivingVia.hs" 28 1 28 1
            , SrcSpan "tests/examples/DerivingVia.hs" 29 1 29 1
            , SrcSpan "tests/examples/DerivingVia.hs" 30 1 30 1
            , SrcSpan "tests/examples/DerivingVia.hs" 32 1 32 1
            , SrcSpan "tests/examples/DerivingVia.hs" 33 1 33 1
            , SrcSpan "tests/examples/DerivingVia.hs" 34 1 34 1
            , SrcSpan "tests/examples/DerivingVia.hs" 36 1 36 1
            , SrcSpan "tests/examples/DerivingVia.hs" 42 1 42 1
            , SrcSpan "tests/examples/DerivingVia.hs" 50 1 50 1
            , SrcSpan "tests/examples/DerivingVia.hs" 52 1 52 1
            , SrcSpan "tests/examples/DerivingVia.hs" 55 1 55 1
            , SrcSpan "tests/examples/DerivingVia.hs" 58 1 58 1
            , SrcSpan "tests/examples/DerivingVia.hs" 66 1 66 1
            , SrcSpan "tests/examples/DerivingVia.hs" 69 1 69 1
            , SrcSpan "tests/examples/DerivingVia.hs" 72 1 72 1
            , SrcSpan "tests/examples/DerivingVia.hs" 74 1 74 1
            , SrcSpan "tests/examples/DerivingVia.hs" 75 1 75 1
            , SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 1
            , SrcSpan "tests/examples/DerivingVia.hs" 84 1 84 1
            , SrcSpan "tests/examples/DerivingVia.hs" 87 1 87 1
            , SrcSpan "tests/examples/DerivingVia.hs" 91 1 91 1
            , SrcSpan "tests/examples/DerivingVia.hs" 95 1 95 1
            , SrcSpan "tests/examples/DerivingVia.hs" 99 1 99 1
            , SrcSpan "tests/examples/DerivingVia.hs" 112 1 112 1
            , SrcSpan "tests/examples/DerivingVia.hs" 115 1 115 1
            , SrcSpan "tests/examples/DerivingVia.hs" 119 1 119 1
            , SrcSpan "tests/examples/DerivingVia.hs" 123 1 123 1
            , SrcSpan "tests/examples/DerivingVia.hs" 127 1 127 1
            , SrcSpan "tests/examples/DerivingVia.hs" 128 1 128 1
            , SrcSpan "tests/examples/DerivingVia.hs" 132 1 132 1
            , SrcSpan "tests/examples/DerivingVia.hs" 137 1 137 1
            , SrcSpan "tests/examples/DerivingVia.hs" 146 1 146 1
            , SrcSpan "tests/examples/DerivingVia.hs" 157 1 157 1
            , SrcSpan "tests/examples/DerivingVia.hs" 160 1 160 1
            , SrcSpan "tests/examples/DerivingVia.hs" 162 1 162 1
            , SrcSpan "tests/examples/DerivingVia.hs" 165 1 165 1
            , SrcSpan "tests/examples/DerivingVia.hs" 171 1 171 1
            , SrcSpan "tests/examples/DerivingVia.hs" 172 1 172 1
            , SrcSpan "tests/examples/DerivingVia.hs" 173 1 173 1
            , SrcSpan "tests/examples/DerivingVia.hs" 174 1 174 1
            , SrcSpan "tests/examples/DerivingVia.hs" 175 1 175 1
            , SrcSpan "tests/examples/DerivingVia.hs" 176 1 176 1
            , SrcSpan "tests/examples/DerivingVia.hs" 177 1 177 1
            , SrcSpan "tests/examples/DerivingVia.hs" 178 1 178 1
            , SrcSpan "tests/examples/DerivingVia.hs" 179 1 179 1
            , SrcSpan "tests/examples/DerivingVia.hs" 181 1 181 1
            , SrcSpan "tests/examples/DerivingVia.hs" 190 1 190 1
            , SrcSpan "tests/examples/DerivingVia.hs" 193 1 193 1
            , SrcSpan "tests/examples/DerivingVia.hs" 201 1 201 1
            , SrcSpan "tests/examples/DerivingVia.hs" 205 1 205 1
            , SrcSpan "tests/examples/DerivingVia.hs" 221 1 221 1
            , SrcSpan "tests/examples/DerivingVia.hs" 224 1 224 1
            , SrcSpan "tests/examples/DerivingVia.hs" 230 1 230 1
            , SrcSpan "tests/examples/DerivingVia.hs" 233 1 233 1
            , SrcSpan "tests/examples/DerivingVia.hs" 236 1 236 1
            , SrcSpan "tests/examples/DerivingVia.hs" 239 1 239 1
            , SrcSpan "tests/examples/DerivingVia.hs" 244 1 244 1
            , SrcSpan "tests/examples/DerivingVia.hs" 251 1 251 1
            , SrcSpan "tests/examples/DerivingVia.hs" 258 1 258 1
            , SrcSpan "tests/examples/DerivingVia.hs" 265 1 265 1
            , SrcSpan "tests/examples/DerivingVia.hs" 268 1 268 1
            , SrcSpan "tests/examples/DerivingVia.hs" 269 1 269 1
            , SrcSpan "tests/examples/DerivingVia.hs" 270 1 270 1
            , SrcSpan "tests/examples/DerivingVia.hs" 272 1 272 1
            , SrcSpan "tests/examples/DerivingVia.hs" 276 1 276 1
            , SrcSpan "tests/examples/DerivingVia.hs" 280 1 280 1
            , SrcSpan "tests/examples/DerivingVia.hs" 284 1 284 1
            , SrcSpan "tests/examples/DerivingVia.hs" 288 1 288 1
            , SrcSpan "tests/examples/DerivingVia.hs" 293 1 293 1
            , SrcSpan "tests/examples/DerivingVia.hs" 303 1 303 1
            , SrcSpan "tests/examples/DerivingVia.hs" 309 1 309 1
            , SrcSpan "tests/examples/DerivingVia.hs" 312 1 312 1
            , SrcSpan "tests/examples/DerivingVia.hs" 321 1 321 1
            , SrcSpan "tests/examples/DerivingVia.hs" 327 1 327 1
            , SrcSpan "tests/examples/DerivingVia.hs" 330 1 330 1
            , SrcSpan "tests/examples/DerivingVia.hs" 332 1 332 1
            , SrcSpan "tests/examples/DerivingVia.hs" 336 1 336 1
            , SrcSpan "tests/examples/DerivingVia.hs" 337 1 337 1
            , SrcSpan "tests/examples/DerivingVia.hs" 338 1 338 1
            , SrcSpan "tests/examples/DerivingVia.hs" 345 1 345 1
            , SrcSpan "tests/examples/DerivingVia.hs" 350 1 350 1
            , SrcSpan "tests/examples/DerivingVia.hs" 353 1 353 1
            , SrcSpan "tests/examples/DerivingVia.hs" 358 1 358 1
            , SrcSpan "tests/examples/DerivingVia.hs" 359 1 359 1
            , SrcSpan "tests/examples/DerivingVia.hs" 361 1 361 1
            , SrcSpan "tests/examples/DerivingVia.hs" 363 1 363 1
            , SrcSpan "tests/examples/DerivingVia.hs" 365 1 365 1
            , SrcSpan "tests/examples/DerivingVia.hs" 367 1 367 1
            , SrcSpan "tests/examples/DerivingVia.hs" 369 1 369 1
            , SrcSpan "tests/examples/DerivingVia.hs" 371 1 371 1
            , SrcSpan "tests/examples/DerivingVia.hs" 373 1 373 1
            , SrcSpan "tests/examples/DerivingVia.hs" 380 1 380 1
            , SrcSpan "tests/examples/DerivingVia.hs" 388 1 388 1
            , SrcSpan "tests/examples/DerivingVia.hs" 395 1 395 1
            , SrcSpan "tests/examples/DerivingVia.hs" 401 1 401 1
            , SrcSpan "tests/examples/DerivingVia.hs" 405 1 405 1
            , SrcSpan "tests/examples/DerivingVia.hs" 406 1 406 1
            , SrcSpan "tests/examples/DerivingVia.hs" 407 1 407 1
            , SrcSpan "tests/examples/DerivingVia.hs" 409 1 409 1
            , SrcSpan "tests/examples/DerivingVia.hs" 413 1 413 1
            , SrcSpan "tests/examples/DerivingVia.hs" 425 1 425 1
            , SrcSpan "tests/examples/DerivingVia.hs" 427 1 427 1
            , SrcSpan "tests/examples/DerivingVia.hs" 435 1 435 1
            , SrcSpan "tests/examples/DerivingVia.hs" 437 1 437 1
            , SrcSpan "tests/examples/DerivingVia.hs" 439 1 439 1
            , SrcSpan "tests/examples/DerivingVia.hs" 441 1 441 1
            , SrcSpan "tests/examples/DerivingVia.hs" 443 1 443 1
            , SrcSpan "tests/examples/DerivingVia.hs" 445 1 445 1
            , SrcSpan "tests/examples/DerivingVia.hs" 451 1 451 1
            , SrcSpan "tests/examples/DerivingVia.hs" 454 1 454 1
            , SrcSpan "tests/examples/DerivingVia.hs" 457 1 457 1
            , SrcSpan "tests/examples/DerivingVia.hs" 460 1 460 1
            , SrcSpan "tests/examples/DerivingVia.hs" 460 1 460 1
            ]
        }
      (Just
         (ModuleHead
            SrcSpanInfo
              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 20 1 20 25
              , srcInfoPoints =
                  [ SrcSpan "tests/examples/DerivingVia.hs" 20 1 20 7
                  , SrcSpan "tests/examples/DerivingVia.hs" 20 20 20 25
                  ]
              }
            (ModuleName
               SrcSpanInfo
                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 20 8 20 19
                 , srcInfoPoints = []
                 }
               "DerivingVia")
            Nothing
            Nothing))
      [ LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 1 1 1 36
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 1 1 1 13
                , SrcSpan "tests/examples/DerivingVia.hs" 1 33 1 36
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 1 14 1 32
                , srcInfoPoints = []
                }
              "DerivingStrategies"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 2 1 2 29
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 2 1 2 13
                , SrcSpan "tests/examples/DerivingVia.hs" 2 26 2 29
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 2 14 2 25
                , srcInfoPoints = []
                }
              "DerivingVia"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 3 1 3 44
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 3 1 3 13
                , SrcSpan "tests/examples/DerivingVia.hs" 3 41 3 44
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 3 14 3 40
                , srcInfoPoints = []
                }
              "GeneralizedNewtypeDeriving"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 4 1 4 32
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 4 1 4 13
                , SrcSpan "tests/examples/DerivingVia.hs" 4 29 4 32
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 4 14 4 28
                , srcInfoPoints = []
                }
              "KindSignatures"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 5 1 5 28
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 5 1 5 13
                , SrcSpan "tests/examples/DerivingVia.hs" 5 25 5 28
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 5 14 5 24
                , srcInfoPoints = []
                }
              "RankNTypes"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 6 1 6 36
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 6 1 6 13
                , SrcSpan "tests/examples/DerivingVia.hs" 6 33 6 36
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 6 14 6 32
                , srcInfoPoints = []
                }
              "StandaloneDeriving"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 7 1 7 30
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 7 1 7 13
                , SrcSpan "tests/examples/DerivingVia.hs" 7 27 7 30
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 7 14 7 26
                , srcInfoPoints = []
                }
              "InstanceSigs"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 8 1 8 28
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 8 1 8 13
                , SrcSpan "tests/examples/DerivingVia.hs" 8 25 8 28
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 8 14 8 24
                , srcInfoPoints = []
                }
              "TypeInType"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 9 1 9 23
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 9 1 9 13
                , SrcSpan "tests/examples/DerivingVia.hs" 9 20 9 23
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 9 14 9 19
                , srcInfoPoints = []
                }
              "GADTs"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 10 1 10 34
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 10 1 10 13
                , SrcSpan "tests/examples/DerivingVia.hs" 10 31 10 34
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 10 14 10 30
                , srcInfoPoints = []
                }
              "TypeApplications"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 11 1 11 33
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 11 1 11 13
                , SrcSpan "tests/examples/DerivingVia.hs" 11 30 11 33
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 11 14 11 29
                , srcInfoPoints = []
                }
              "ConstraintKinds"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 12 1 12 39
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 12 1 12 13
                , SrcSpan "tests/examples/DerivingVia.hs" 12 36 12 39
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 12 14 12 35
                , srcInfoPoints = []
                }
              "MultiParamTypeClasses"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 13 1 13 28
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 13 1 13 13
                , SrcSpan "tests/examples/DerivingVia.hs" 13 25 13 28
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 13 14 13 24
                , srcInfoPoints = []
                }
              "MultiWayIf"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 14 1 14 31
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 14 1 14 13
                , SrcSpan "tests/examples/DerivingVia.hs" 14 28 14 31
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 14 14 14 27
                , srcInfoPoints = []
                }
              "TypeOperators"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 15 1 15 37
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 15 1 15 13
                , SrcSpan "tests/examples/DerivingVia.hs" 15 34 15 37
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 15 14 15 33
                , srcInfoPoints = []
                }
              "ScopedTypeVariables"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 16 1 16 35
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 16 1 16 13
                , SrcSpan "tests/examples/DerivingVia.hs" 16 32 16 35
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 16 14 16 31
                , srcInfoPoints = []
                }
              "FlexibleInstances"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 17 1 17 30
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 17 1 17 13
                , SrcSpan "tests/examples/DerivingVia.hs" 17 27 17 30
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 17 14 17 26
                , srcInfoPoints = []
                }
              "TypeFamilies"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 18 1 18 34
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 18 1 18 13
                , SrcSpan "tests/examples/DerivingVia.hs" 18 31 18 34
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 18 14 18 30
                , srcInfoPoints = []
                }
              "FlexibleContexts"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 19 1 19 38
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 19 1 19 13
                , SrcSpan "tests/examples/DerivingVia.hs" 19 35 19 38
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 19 14 19 34
                , srcInfoPoints = []
                }
              "UndecidableInstances"
          ]
      ]
      [ ImportDecl
          { importAnn =
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 22 1 22 17
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 22 1 22 7 ]
                }
          , importModule =
              ModuleName
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 22 8 22 17
                  , srcInfoPoints = []
                  }
                "Data.Void"
          , importQualified = False
          , importSrc = False
          , importSafe = False
          , importPkg = Nothing
          , importAs = Nothing
          , importSpecs = Nothing
          }
      , ImportDecl
          { importAnn =
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 23 1 23 20
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 23 1 23 7 ]
                }
          , importModule =
              ModuleName
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 23 8 23 20
                  , srcInfoPoints = []
                  }
                "Data.Complex"
          , importQualified = False
          , importSrc = False
          , importSafe = False
          , importPkg = Nothing
          , importAs = Nothing
          , importSpecs = Nothing
          }
      , ImportDecl
          { importAnn =
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 24 1 24 26
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 24 1 24 7 ]
                }
          , importModule =
              ModuleName
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 24 8 24 26
                  , srcInfoPoints = []
                  }
                "Data.Functor.Const"
          , importQualified = False
          , importSrc = False
          , importSafe = False
          , importPkg = Nothing
          , importAs = Nothing
          , importSpecs = Nothing
          }
      , ImportDecl
          { importAnn =
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 25 1 25 29
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 25 1 25 7 ]
                }
          , importModule =
              ModuleName
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 25 8 25 29
                  , srcInfoPoints = []
                  }
                "Data.Functor.Identity"
          , importQualified = False
          , importSrc = False
          , importSafe = False
          , importPkg = Nothing
          , importAs = Nothing
          , importSpecs = Nothing
          }
      , ImportDecl
          { importAnn =
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 26 1 26 18
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 26 1 26 7 ]
                }
          , importModule =
              ModuleName
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 26 8 26 18
                  , srcInfoPoints = []
                  }
                "Data.Ratio"
          , importQualified = False
          , importSrc = False
          , importSafe = False
          , importPkg = Nothing
          , importAs = Nothing
          , importSpecs = Nothing
          }
      , ImportDecl
          { importAnn =
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 27 1 27 28
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 27 1 27 7 ]
                }
          , importModule =
              ModuleName
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 27 8 27 28
                  , srcInfoPoints = []
                  }
                "Control.Monad.Reader"
          , importQualified = False
          , importSrc = False
          , importSafe = False
          , importPkg = Nothing
          , importAs = Nothing
          , importSpecs = Nothing
          }
      , ImportDecl
          { importAnn =
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 28 1 28 27
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 28 1 28 7 ]
                }
          , importModule =
              ModuleName
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 28 8 28 27
                  , srcInfoPoints = []
                  }
                "Control.Monad.State"
          , importQualified = False
          , importSrc = False
          , importSafe = False
          , importPkg = Nothing
          , importAs = Nothing
          , importSpecs = Nothing
          }
      , ImportDecl
          { importAnn =
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 29 1 29 28
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 29 1 29 7 ]
                }
          , importModule =
              ModuleName
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 29 8 29 28
                  , srcInfoPoints = []
                  }
                "Control.Monad.Writer"
          , importQualified = False
          , importSrc = False
          , importSafe = False
          , importPkg = Nothing
          , importAs = Nothing
          , importSpecs = Nothing
          }
      , ImportDecl
          { importAnn =
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 30 1 30 53
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 30 1 30 7 ]
                }
          , importModule =
              ModuleName
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 30 8 30 27
                  , srcInfoPoints = []
                  }
                "Control.Applicative"
          , importQualified = False
          , importSrc = False
          , importSafe = False
          , importPkg = Nothing
          , importAs = Nothing
          , importSpecs =
              Just
                (ImportSpecList
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 30 28 30 53
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 30 28 30 34
                         , SrcSpan "tests/examples/DerivingVia.hs" 30 35 30 36
                         , SrcSpan "tests/examples/DerivingVia.hs" 30 52 30 53
                         ]
                     }
                   True
                   [ IThingAll
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 30 36 30 52
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 30 48 30 49
                             , SrcSpan "tests/examples/DerivingVia.hs" 30 49 30 51
                             , SrcSpan "tests/examples/DerivingVia.hs" 30 51 30 52
                             ]
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 30 36 30 48
                            , srcInfoPoints = []
                            }
                          "WrappedMonad")
                   ])
          }
      , ImportDecl
          { importAnn =
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 32 1 32 22
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 32 1 32 7 ]
                }
          , importModule =
              ModuleName
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 32 8 32 22
                  , srcInfoPoints = []
                  }
                "Data.Bifunctor"
          , importQualified = False
          , importSrc = False
          , importSafe = False
          , importPkg = Nothing
          , importAs = Nothing
          , importSpecs = Nothing
          }
      , ImportDecl
          { importAnn =
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 33 1 33 19
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 33 1 33 7 ]
                }
          , importModule =
              ModuleName
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 33 8 33 19
                  , srcInfoPoints = []
                  }
                "Data.Monoid"
          , importQualified = False
          , importSrc = False
          , importSafe = False
          , importPkg = Nothing
          , importAs = Nothing
          , importSpecs = Nothing
          }
      , ImportDecl
          { importAnn =
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 34 1 34 17
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 34 1 34 7 ]
                }
          , importModule =
              ModuleName
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 34 8 34 17
                  , srcInfoPoints = []
                  }
                "Data.Kind"
          , importQualified = False
          , importSrc = False
          , importSafe = False
          , importPkg = Nothing
          , importAs = Nothing
          , importSpecs = Nothing
          }
      ]
      [ TypeDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 1 36 38
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 36 1 36 5
                , SrcSpan "tests/examples/DerivingVia.hs" 36 13 36 14
                ]
            }
          (DHApp
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 6 36 12
               , srcInfoPoints = []
               }
             (DHInfix
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 6 36 12
                  , srcInfoPoints = []
                  }
                (UnkindedVar
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 6 36 7
                     , srcInfoPoints = []
                     }
                   (Ident
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 6 36 7
                        , srcInfoPoints = []
                        }
                      "f"))
                (Symbol
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 8 36 10
                     , srcInfoPoints = []
                     }
                   "~>"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 11 36 12
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 11 36 12
                     , srcInfoPoints = []
                     }
                   "g")))
          (TyForall
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 15 36 38
               , srcInfoPoints =
                   [ SrcSpan "tests/examples/DerivingVia.hs" 36 15 36 21
                   , SrcSpan "tests/examples/DerivingVia.hs" 36 24 36 25
                   ]
               }
             (Just
                [ UnkindedVar
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 22 36 24
                      , srcInfoPoints = []
                      }
                    (Ident
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 22 36 24
                         , srcInfoPoints = []
                         }
                       "xx")
                ])
             Nothing
             (TyFun
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 26 36 38
                  , srcInfoPoints =
                      [ SrcSpan "tests/examples/DerivingVia.hs" 36 31 36 33 ]
                  }
                (TyApp
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 26 36 30
                     , srcInfoPoints = []
                     }
                   (TyVar
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 26 36 27
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 26 36 27
                           , srcInfoPoints = []
                           }
                         "f"))
                   (TyVar
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 28 36 30
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 28 36 30
                           , srcInfoPoints = []
                           }
                         "xx")))
                (TyApp
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 34 36 38
                     , srcInfoPoints = []
                     }
                   (TyVar
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 34 36 35
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 34 36 35
                           , srcInfoPoints = []
                           }
                         "g"))
                   (TyVar
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 36 36 38
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 36 36 38
                           , srcInfoPoints = []
                           }
                         "xx")))))
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 1 43 16
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 42 12 42 13 ]
            }
          (DataType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 1 42 5
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 6 42 11
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 6 42 9
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 6 42 9
                     , srcInfoPoints = []
                     }
                   "Foo"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 10 42 11
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 10 42 11
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 14 42 23
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 14 42 23
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 14 42 19
                      , srcInfoPoints = []
                      }
                    "MkFoo")
                 [ TyVar
                     SrcSpanInfo
                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 20 42 21
                       , srcInfoPoints = []
                       }
                     (Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 20 42 21
                          , srcInfoPoints = []
                          }
                        "a")
                 , TyVar
                     SrcSpanInfo
                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 22 42 23
                       , srcInfoPoints = []
                       }
                     (Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 22 42 23
                          , srcInfoPoints = []
                          }
                        "a")
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 43 3 43 16
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 43 3 43 11 ]
                }
              (Just
                 (DerivVia
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 44 8 44 11
                      , srcInfoPoints = []
                      }
                    (TyParen
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 44 12 44 30
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 44 12 44 13
                             , SrcSpan "tests/examples/DerivingVia.hs" 44 29 44 30
                             ]
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 44 13 44 29
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 44 13 44 21
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 44 13 44 21
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 44 13 44 21
                                     , srcInfoPoints = []
                                     }
                                   "Identity")))
                          (TyParen
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 44 22 44 29
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 44 22 44 23
                                   , SrcSpan "tests/examples/DerivingVia.hs" 44 28 44 29
                                   ]
                               }
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 44 23 44 28
                                  , srcInfoPoints = []
                                  }
                                (TyCon
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 44 23 44 26
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 44 23 44 26
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 44 23 44 26
                                           , srcInfoPoints = []
                                           }
                                         "Foo")))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 44 27 44 28
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 44 27 44 28
                                        , srcInfoPoints = []
                                        }
                                      "a"))))))))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 43 12 43 16
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 43 12 43 16
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 43 12 43 16
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 43 12 43 16
                             , srcInfoPoints = []
                             }
                           "Show")))
              ]
          ]
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 1 50 47
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 50 20 50 21 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 1 50 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 9 50 19
               , srcInfoPoints = []
               }
             (DHApp
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 9 50 17
                  , srcInfoPoints = []
                  }
                (DHApp
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 9 50 15
                     , srcInfoPoints = []
                     }
                   (DHead
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 9 50 13
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 9 50 13
                           , srcInfoPoints = []
                           }
                         "Flip"))
                   (UnkindedVar
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 14 50 15
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 14 50 15
                           , srcInfoPoints = []
                           }
                         "p")))
                (UnkindedVar
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 16 50 17
                     , srcInfoPoints = []
                     }
                   (Ident
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 16 50 17
                        , srcInfoPoints = []
                        }
                      "a")))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 18 50 19
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 18 50 19
                     , srcInfoPoints = []
                     }
                   "b")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 22 50 47
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 50 27 50 28
                    , SrcSpan "tests/examples/DerivingVia.hs" 50 46 50 47
                    ]
                }
              Nothing
              Nothing
              (RecDecl
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 22 50 47
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 50 27 50 28
                       , SrcSpan "tests/examples/DerivingVia.hs" 50 46 50 47
                       ]
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 22 50 26
                      , srcInfoPoints = []
                      }
                    "Flip")
                 [ FieldDecl
                     SrcSpanInfo
                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 29 50 45
                       , srcInfoPoints =
                           [ SrcSpan "tests/examples/DerivingVia.hs" 50 37 50 39 ]
                       }
                     [ Ident
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 29 50 36
                           , srcInfoPoints = []
                           }
                         "runFlip"
                     ]
                     (TyApp
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 40 50 45
                          , srcInfoPoints = []
                          }
                        (TyApp
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 40 50 43
                             , srcInfoPoints = []
                             }
                           (TyVar
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 40 50 41
                                , srcInfoPoints = []
                                }
                              (Ident
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 50 40 50 41
                                   , srcInfoPoints = []
                                   }
                                 "p"))
                           (TyVar
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 42 50 43
                                , srcInfoPoints = []
                                }
                              (Ident
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 50 42 50 43
                                   , srcInfoPoints = []
                                   }
                                 "b")))
                        (TyVar
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 44 50 45
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 44 50 45
                                , srcInfoPoints = []
                                }
                              "a")))
                 ])
          ]
          []
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 1 55 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 52 1 52 9
                , SrcSpan "tests/examples/DerivingVia.hs" 52 44 52 49
                , SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 3
                , SrcSpan "tests/examples/DerivingVia.hs" 55 1 55 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 43
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxSingle
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 24
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 52 22 52 24 ]
                     }
                   (ClassA
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 24
                        , srcInfoPoints =
                            [ SrcSpan "tests/examples/DerivingVia.hs" 52 22 52 24 ]
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 19
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 19
                              , srcInfoPoints = []
                              }
                            "Bifunctor"))
                      [ TyVar
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 20 52 21
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 20 52 21
                               , srcInfoPoints = []
                               }
                             "p")
                      ])))
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 43
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 34
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 34
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 34
                           , srcInfoPoints = []
                           }
                         "Bifunctor")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 35 52 43
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 52 35 52 36
                         , SrcSpan "tests/examples/DerivingVia.hs" 52 42 52 43
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 42
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 40
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 40
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 40
                                 , srcInfoPoints = []
                                 }
                               "Flip")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 41 52 42
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 41 52 42
                              , srcInfoPoints = []
                              }
                            "p"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 41
                   , srcInfoPoints = []
                   }
                 (FunBind
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 41
                      , srcInfoPoints = []
                      }
                    [ Match
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 41
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 8
                             , srcInfoPoints = []
                             }
                           "bimap")
                        [ PVar
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 9 53 10
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 9 53 10
                                 , srcInfoPoints = []
                                 }
                               "f")
                        , PVar
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 11 53 12
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 11 53 12
                                 , srcInfoPoints = []
                                 }
                               "g")
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 13 53 41
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 53 13 53 14 ]
                             }
                           (InfixApp
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 41
                                , srcInfoPoints = []
                                }
                              (Con
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 19
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 19
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 19
                                         , srcInfoPoints = []
                                         }
                                       "Flip")))
                              (QVarOp
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 53 20 53 21
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 53 20 53 21
                                      , srcInfoPoints = []
                                      }
                                    (Symbol
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 53 20 53 21
                                         , srcInfoPoints = []
                                         }
                                       ".")))
                              (InfixApp
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 41
                                   , srcInfoPoints = []
                                   }
                                 (App
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 31
                                      , srcInfoPoints = []
                                      }
                                    (App
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 29
                                         , srcInfoPoints = []
                                         }
                                       (Var
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 27
                                            , srcInfoPoints = []
                                            }
                                          (UnQual
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 53 22 53 27
                                               , srcInfoPoints = []
                                               }
                                             (Ident
                                                SrcSpanInfo
                                                  { srcInfoSpan =
                                                      SrcSpan
                                                        "tests/examples/DerivingVia.hs" 53 22 53 27
                                                  , srcInfoPoints = []
                                                  }
                                                "bimap")))
                                       (Var
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/DerivingVia.hs" 53 28 53 29
                                            , srcInfoPoints = []
                                            }
                                          (UnQual
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 53 28 53 29
                                               , srcInfoPoints = []
                                               }
                                             (Ident
                                                SrcSpanInfo
                                                  { srcInfoSpan =
                                                      SrcSpan
                                                        "tests/examples/DerivingVia.hs" 53 28 53 29
                                                  , srcInfoPoints = []
                                                  }
                                                "g"))))
                                    (Var
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 53 30 53 31
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/DerivingVia.hs" 53 30 53 31
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 53 30 53 31
                                               , srcInfoPoints = []
                                               }
                                             "f"))))
                                 (QVarOp
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 53 32 53 33
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 53 32 53 33
                                         , srcInfoPoints = []
                                         }
                                       (Symbol
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/DerivingVia.hs" 53 32 53 33
                                            , srcInfoPoints = []
                                            }
                                          ".")))
                                 (Var
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 53 34 53 41
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 53 34 53 41
                                         , srcInfoPoints = []
                                         }
                                       (Ident
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/DerivingVia.hs" 53 34 53 41
                                            , srcInfoPoints = []
                                            }
                                          "runFlip"))))))
                        Nothing
                    ])
             ])
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 1 58 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 55 1 55 9
                , SrcSpan "tests/examples/DerivingVia.hs" 55 44 55 49
                , SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 3
                , SrcSpan "tests/examples/DerivingVia.hs" 58 1 58 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 43
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxSingle
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 24
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 55 22 55 24 ]
                     }
                   (ClassA
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 24
                        , srcInfoPoints =
                            [ SrcSpan "tests/examples/DerivingVia.hs" 55 22 55 24 ]
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 19
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 19
                              , srcInfoPoints = []
                              }
                            "Bifunctor"))
                      [ TyVar
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 20 55 21
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 20 55 21
                               , srcInfoPoints = []
                               }
                             "p")
                      ])))
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 43
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 32
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 32
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 32
                           , srcInfoPoints = []
                           }
                         "Functor")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 33 55 43
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 55 33 55 34
                         , SrcSpan "tests/examples/DerivingVia.hs" 55 42 55 43
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 42
                        , srcInfoPoints = []
                        }
                      (TyApp
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 40
                           , srcInfoPoints = []
                           }
                         (TyCon
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 38
                              , srcInfoPoints = []
                              }
                            (UnQual
                               SrcSpanInfo
                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 38
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 38
                                    , srcInfoPoints = []
                                    }
                                  "Flip")))
                         (TyVar
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 39 55 40
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 39 55 40
                                 , srcInfoPoints = []
                                 }
                               "p")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 41 55 42
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 41 55 42
                              , srcInfoPoints = []
                              }
                            "a"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 36
                   , srcInfoPoints = []
                   }
                 (FunBind
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 36
                      , srcInfoPoints = []
                      }
                    [ Match
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 36
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 7
                             , srcInfoPoints = []
                             }
                           "fmap")
                        [ PVar
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 8 56 9
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 8 56 9
                                 , srcInfoPoints = []
                                 }
                               "f")
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 10 56 36
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 56 10 56 11 ]
                             }
                           (InfixApp
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 36
                                , srcInfoPoints = []
                                }
                              (Con
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 16
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 16
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 16
                                         , srcInfoPoints = []
                                         }
                                       "Flip")))
                              (QVarOp
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 56 17 56 18
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 56 17 56 18
                                      , srcInfoPoints = []
                                      }
                                    (Symbol
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 56 17 56 18
                                         , srcInfoPoints = []
                                         }
                                       ".")))
                              (InfixApp
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 36
                                   , srcInfoPoints = []
                                   }
                                 (App
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 26
                                      , srcInfoPoints = []
                                      }
                                    (Var
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 24
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 24
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 56 19 56 24
                                               , srcInfoPoints = []
                                               }
                                             "first")))
                                    (Var
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 56 25 56 26
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/DerivingVia.hs" 56 25 56 26
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 56 25 56 26
                                               , srcInfoPoints = []
                                               }
                                             "f"))))
                                 (QVarOp
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 56 27 56 28
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 56 27 56 28
                                         , srcInfoPoints = []
                                         }
                                       (Symbol
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/DerivingVia.hs" 56 27 56 28
                                            , srcInfoPoints = []
                                            }
                                          ".")))
                                 (Var
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 56 29 56 36
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 56 29 56 36
                                         , srcInfoPoints = []
                                         }
                                       (Ident
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/DerivingVia.hs" 56 29 56 36
                                            , srcInfoPoints = []
                                            }
                                          "runFlip"))))))
                        Nothing
                    ])
             ])
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 1 59 19
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 58 15 58 16 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 1 58 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 9 58 14
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 9 58 12
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 9 58 12
                     , srcInfoPoints = []
                     }
                   "Bar"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 13 58 14
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 13 58 14
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 17 58 37
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 17 58 37
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 17 58 22
                      , srcInfoPoints = []
                      }
                    "MkBar")
                 [ TyParen
                     SrcSpanInfo
                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 23 58 37
                       , srcInfoPoints =
                           [ SrcSpan "tests/examples/DerivingVia.hs" 58 23 58 24
                           , SrcSpan "tests/examples/DerivingVia.hs" 58 36 58 37
                           ]
                       }
                     (TyApp
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 36
                          , srcInfoPoints = []
                          }
                        (TyApp
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 32
                             , srcInfoPoints = []
                             }
                           (TyCon
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 30
                                , srcInfoPoints = []
                                }
                              (UnQual
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 30
                                   , srcInfoPoints = []
                                   }
                                 (Ident
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 30
                                      , srcInfoPoints = []
                                      }
                                    "Either")))
                           (TyVar
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 31 58 32
                                , srcInfoPoints = []
                                }
                              (Ident
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 58 31 58 32
                                   , srcInfoPoints = []
                                   }
                                 "a")))
                        (TyCon
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 33 58 36
                             , srcInfoPoints = []
                             }
                           (UnQual
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 33 58 36
                                , srcInfoPoints = []
                                }
                              (Ident
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 58 33 58 36
                                   , srcInfoPoints = []
                                   }
                                 "Int"))))
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 3 59 19
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 59 3 59 11 ]
                }
              (Just
                 (DerivVia
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 8 60 11
                      , srcInfoPoints = []
                      }
                    (TyParen
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 12 60 29
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 60 12 60 13
                             , SrcSpan "tests/examples/DerivingVia.hs" 60 28 60 29
                             ]
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 28
                            , srcInfoPoints = []
                            }
                          (TyApp
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 24
                               , srcInfoPoints = []
                               }
                             (TyCon
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 17
                                  , srcInfoPoints = []
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 17
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 17
                                        , srcInfoPoints = []
                                        }
                                      "Flip")))
                             (TyCon
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 60 18 60 24
                                  , srcInfoPoints = []
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 60 18 60 24
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 60 18 60 24
                                        , srcInfoPoints = []
                                        }
                                      "Either"))))
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 25 60 28
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 60 25 60 28
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 60 25 60 28
                                     , srcInfoPoints = []
                                     }
                                   "Int")))))))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19
                             , srcInfoPoints = []
                             }
                           "Functor")))
              ]
          ]
      , TypeDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 1 66 47
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 66 1 66 5
                , SrcSpan "tests/examples/DerivingVia.hs" 66 13 66 14
                ]
            }
          (DHead
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 6 66 12
               , srcInfoPoints = []
               }
             (Ident
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 6 66 12
                  , srcInfoPoints = []
                  }
                "MTrans"))
          (TyFun
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 15 66 47
               , srcInfoPoints =
                   [ SrcSpan "tests/examples/DerivingVia.hs" 66 30 66 32 ]
               }
             (TyParen
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 15 66 29
                  , srcInfoPoints =
                      [ SrcSpan "tests/examples/DerivingVia.hs" 66 15 66 16
                      , SrcSpan "tests/examples/DerivingVia.hs" 66 28 66 29
                      ]
                  }
                (TyFun
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 28
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 66 21 66 23 ]
                     }
                   (TyCon
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 20
                        , srcInfoPoints = []
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 20
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 20
                              , srcInfoPoints = []
                              }
                            "Type")))
                   (TyCon
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 24 66 28
                        , srcInfoPoints = []
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 24 66 28
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 24 66 28
                              , srcInfoPoints = []
                              }
                            "Type")))))
             (TyParen
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 33 66 47
                  , srcInfoPoints =
                      [ SrcSpan "tests/examples/DerivingVia.hs" 66 33 66 34
                      , SrcSpan "tests/examples/DerivingVia.hs" 66 46 66 47
                      ]
                  }
                (TyFun
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 46
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 66 39 66 41 ]
                     }
                   (TyCon
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 38
                        , srcInfoPoints = []
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 38
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 38
                              , srcInfoPoints = []
                              }
                            "Type")))
                   (TyCon
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 42 66 46
                        , srcInfoPoints = []
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 42 66 46
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 42 66 46
                              , srcInfoPoints = []
                              }
                            "Type"))))))
      , GDataDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 1 72 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 69 13 69 18
                , SrcSpan "tests/examples/DerivingVia.hs" 70 3 70 3
                , SrcSpan "tests/examples/DerivingVia.hs" 72 1 72 0
                ]
            }
          (DataType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 1 69 5
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 6 69 12
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 6 69 10
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 6 69 10
                     , srcInfoPoints = []
                     }
                   "Dict"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 11 69 12
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 11 69 12
                     , srcInfoPoints = []
                     }
                   "c")))
          Nothing
          [ GadtDecl
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 3 70 22
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 70 8 70 10 ]
                }
              (Ident
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 3 70 7
                   , srcInfoPoints = []
                   }
                 "Dict")
              Nothing
              Nothing
              Nothing
              (TyForall
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 22
                   , srcInfoPoints = []
                   }
                 Nothing
                 (Just
                    (CxSingle
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 15
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 70 13 70 15 ]
                         }
                       (AppA
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 15
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 70 13 70 15 ]
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 12
                               , srcInfoPoints = []
                               }
                             "c")
                          [])))
                 (TyApp
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 22
                      , srcInfoPoints = []
                      }
                    (TyCon
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 20
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 20
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 20
                               , srcInfoPoints = []
                               }
                             "Dict")))
                    (TyVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 21 70 22
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 21 70 22
                            , srcInfoPoints = []
                            }
                          "c"))))
          ]
          []
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 1 72 35
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 72 16 72 17 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 1 72 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 15
               , srcInfoPoints = []
               }
             (DHInfix
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 15
                  , srcInfoPoints = []
                  }
                (UnkindedVar
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 10
                     , srcInfoPoints = []
                     }
                   (Ident
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 10
                        , srcInfoPoints = []
                        }
                      "a"))
                (Symbol
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 11 72 13
                     , srcInfoPoints = []
                     }
                   ":-"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 14 72 15
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 14 72 15
                     , srcInfoPoints = []
                     }
                   "b")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 18 72 35
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 18 72 35
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 18 72 21
                      , srcInfoPoints = []
                      }
                    "Sub")
                 [ TyParen
                     SrcSpanInfo
                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 22 72 35
                       , srcInfoPoints =
                           [ SrcSpan "tests/examples/DerivingVia.hs" 72 22 72 23
                           , SrcSpan "tests/examples/DerivingVia.hs" 72 34 72 35
                           ]
                       }
                     (TyForall
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 34
                          , srcInfoPoints = []
                          }
                        Nothing
                        (Just
                           (CxSingle
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 27
                                , srcInfoPoints =
                                    [ SrcSpan "tests/examples/DerivingVia.hs" 72 25 72 27 ]
                                }
                              (AppA
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 27
                                   , srcInfoPoints =
                                       [ SrcSpan "tests/examples/DerivingVia.hs" 72 25 72 27 ]
                                   }
                                 (Ident
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 24
                                      , srcInfoPoints = []
                                      }
                                    "a")
                                 [])))
                        (TyApp
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 34
                             , srcInfoPoints = []
                             }
                           (TyCon
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 32
                                , srcInfoPoints = []
                                }
                              (UnQual
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 32
                                   , srcInfoPoints = []
                                   }
                                 (Ident
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 32
                                      , srcInfoPoints = []
                                      }
                                    "Dict")))
                           (TyVar
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 33 72 34
                                , srcInfoPoints = []
                                }
                              (Ident
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 72 33 72 34
                                   , srcInfoPoints = []
                                   }
                                 "b"))))
                 ])
          ]
          []
      , InfixDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 1 74 12
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 74 8 74 9 ]
            }
          (AssocLeft
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 1 74 7
               , srcInfoPoints = []
               })
          (Just 1)
          [ VarOp
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 10 74 12
                , srcInfoPoints = []
                }
              (Symbol
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 10 74 12
                   , srcInfoPoints = []
                   }
                 "\\\\")
          ]
      , TypeSig
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 1 75 39
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 75 6 75 8 ]
            }
          [ Symbol
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 1 75 5
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 75 1 75 2
                    , SrcSpan "tests/examples/DerivingVia.hs" 75 2 75 4
                    , SrcSpan "tests/examples/DerivingVia.hs" 75 4 75 5
                    ]
                }
              "\\\\"
          ]
          (TyForall
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 39
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxSingle
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 13
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 75 11 75 13 ]
                     }
                   (AppA
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 13
                        , srcInfoPoints =
                            [ SrcSpan "tests/examples/DerivingVia.hs" 75 11 75 13 ]
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 10
                           , srcInfoPoints = []
                           }
                         "a")
                      [])))
             (TyFun
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 14 75 39
                  , srcInfoPoints =
                      [ SrcSpan "tests/examples/DerivingVia.hs" 75 23 75 25 ]
                  }
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 14 75 22
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 75 14 75 15
                         , SrcSpan "tests/examples/DerivingVia.hs" 75 21 75 22
                         ]
                     }
                   (TyForall
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 21
                        , srcInfoPoints = []
                        }
                      Nothing
                      (Just
                         (CxSingle
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 19
                              , srcInfoPoints =
                                  [ SrcSpan "tests/examples/DerivingVia.hs" 75 17 75 19 ]
                              }
                            (AppA
                               SrcSpanInfo
                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 19
                                 , srcInfoPoints =
                                     [ SrcSpan "tests/examples/DerivingVia.hs" 75 17 75 19 ]
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 16
                                    , srcInfoPoints = []
                                    }
                                  "b")
                               [])))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 20 75 21
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 20 75 21
                              , srcInfoPoints = []
                              }
                            "r"))))
                (TyFun
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 26 75 39
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 75 35 75 37 ]
                     }
                   (TyParen
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 26 75 34
                        , srcInfoPoints =
                            [ SrcSpan "tests/examples/DerivingVia.hs" 75 26 75 27
                            , SrcSpan "tests/examples/DerivingVia.hs" 75 33 75 34
                            ]
                        }
                      (TyInfix
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 27 75 33
                           , srcInfoPoints = []
                           }
                         (TyVar
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 27 75 28
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 27 75 28
                                 , srcInfoPoints = []
                                 }
                               "a"))
                         (UnpromotedName
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 29 75 31
                              , srcInfoPoints = []
                              }
                            (UnQual
                               SrcSpanInfo
                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 29 75 31
                                 , srcInfoPoints = []
                                 }
                               (Symbol
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 75 29 75 31
                                    , srcInfoPoints = []
                                    }
                                  ":-")))
                         (TyVar
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 32 75 33
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 32 75 33
                                 , srcInfoPoints = []
                                 }
                               "b"))))
                   (TyVar
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 38 75 39
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 38 75 39
                           , srcInfoPoints = []
                           }
                         "r")))))
      , FunBind
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 18
            , srcInfoPoints = []
            }
          [ InfixMatch
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 18
                , srcInfoPoints = []
                }
              (PVar
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 2
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 2
                      , srcInfoPoints = []
                      }
                    "r"))
              (Symbol
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 3 76 5
                   , srcInfoPoints = []
                   }
                 "\\\\")
              [ PApp
                  SrcSpanInfo
                    { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 6 76 14
                    , srcInfoPoints = []
                    }
                  (UnQual
                     SrcSpanInfo
                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 6 76 9
                       , srcInfoPoints = []
                       }
                     (Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 6 76 9
                          , srcInfoPoints = []
                          }
                        "Sub"))
                  [ PApp
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 10 76 14
                        , srcInfoPoints = []
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 10 76 14
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 10 76 14
                              , srcInfoPoints = []
                              }
                            "Dict"))
                      []
                  ]
              ]
              (UnGuardedRhs
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 15 76 18
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 76 15 76 16 ]
                   }
                 (Var
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 17 76 18
                      , srcInfoPoints = []
                      }
                    (UnQual
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 17 76 18
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 17 76 18
                            , srcInfoPoints = []
                            }
                          "r"))))
              Nothing
          ]
      , ClassDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 1 85 38
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 84 1 84 6
                , SrcSpan "tests/examples/DerivingVia.hs" 84 38 84 43
                , SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 3
                , SrcSpan "tests/examples/DerivingVia.hs" 87 1 87 0
                ]
            }
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 7 84 37
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 7 84 19
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 7 84 19
                     , srcInfoPoints = []
                     }
                   "LiftingMonad"))
             (KindedVar
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 20 84 37
                  , srcInfoPoints =
                      [ SrcSpan "tests/examples/DerivingVia.hs" 84 20 84 21
                      , SrcSpan "tests/examples/DerivingVia.hs" 84 27 84 29
                      , SrcSpan "tests/examples/DerivingVia.hs" 84 36 84 37
                      ]
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 21 84 26
                     , srcInfoPoints = []
                     }
                   "trans")
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 30 84 36
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 30 84 36
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 30 84 36
                           , srcInfoPoints = []
                           }
                         "MTrans")))))
          []
          (Just
             [ ClsDecl
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 38
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 85 9 85 11 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 38
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 85 9 85 11 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 8
                          , srcInfoPoints = []
                          }
                        "proof"
                    ]
                    (TyInfix
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 38
                         , srcInfoPoints = []
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 19
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 17
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 17
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 17
                                     , srcInfoPoints = []
                                     }
                                   "Monad")))
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 18 85 19
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 85 18 85 19
                                  , srcInfoPoints = []
                                  }
                                "m")))
                       (UnpromotedName
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 20 85 22
                            , srcInfoPoints = []
                            }
                          (UnQual
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 20 85 22
                               , srcInfoPoints = []
                               }
                             (Symbol
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 85 20 85 22
                                  , srcInfoPoints = []
                                  }
                                ":-")))
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 38
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 28
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 28
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 28
                                     , srcInfoPoints = []
                                     }
                                   "Monad")))
                          (TyParen
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 29 85 38
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 85 29 85 30
                                   , SrcSpan "tests/examples/DerivingVia.hs" 85 37 85 38
                                   ]
                               }
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 85 30 85 37
                                  , srcInfoPoints = []
                                  }
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 85 30 85 35
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 85 30 85 35
                                        , srcInfoPoints = []
                                        }
                                      "trans"))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 85 36 85 37
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 85 36 85 37
                                        , srcInfoPoints = []
                                        }
                                      "m")))))))
             ])
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 1 91 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 87 1 87 9
                , SrcSpan "tests/examples/DerivingVia.hs" 87 44 87 49
                , SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 3
                , SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 3
                , SrcSpan "tests/examples/DerivingVia.hs" 91 1 91 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 43
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 43
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 22
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 22
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 22
                           , srcInfoPoints = []
                           }
                         "LiftingMonad")))
                (TyKind
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 23 87 43
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 87 23 87 24
                         , SrcSpan "tests/examples/DerivingVia.hs" 87 33 87 35
                         , SrcSpan "tests/examples/DerivingVia.hs" 87 42 87 43
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 32
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 30
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 30
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 30
                                 , srcInfoPoints = []
                                 }
                               "StateT")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 31 87 32
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 31 87 32
                              , srcInfoPoints = []
                              }
                            "s")))
                   (TyCon
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 36 87 42
                        , srcInfoPoints = []
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 36 87 42
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 36 87 42
                              , srcInfoPoints = []
                              }
                            "MTrans"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 41
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 88 9 88 11 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 41
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 88 9 88 11 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 8
                          , srcInfoPoints = []
                          }
                        "proof"
                    ]
                    (TyInfix
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 41
                         , srcInfoPoints = []
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 19
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 17
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 17
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 17
                                     , srcInfoPoints = []
                                     }
                                   "Monad")))
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 18 88 19
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 88 18 88 19
                                  , srcInfoPoints = []
                                  }
                                "m")))
                       (UnpromotedName
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 20 88 22
                            , srcInfoPoints = []
                            }
                          (UnQual
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 20 88 22
                               , srcInfoPoints = []
                               }
                             (Symbol
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 88 20 88 22
                                  , srcInfoPoints = []
                                  }
                                ":-")))
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 41
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 28
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 28
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 28
                                     , srcInfoPoints = []
                                     }
                                   "Monad")))
                          (TyParen
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 29 88 41
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 88 29 88 30
                                   , SrcSpan "tests/examples/DerivingVia.hs" 88 40 88 41
                                   ]
                               }
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 40
                                  , srcInfoPoints = []
                                  }
                                (TyApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 38
                                     , srcInfoPoints = []
                                     }
                                   (TyCon
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 36
                                        , srcInfoPoints = []
                                        }
                                      (UnQual
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 36
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 88 30 88 36
                                              , srcInfoPoints = []
                                              }
                                            "StateT")))
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 88 37 88 38
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 88 37 88 38
                                           , srcInfoPoints = []
                                           }
                                         "s")))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 88 39 88 40
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 88 39 88 40
                                        , srcInfoPoints = []
                                        }
                                      "m")))))))
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 19
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 19
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 8
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 8
                            , srcInfoPoints = []
                            }
                          "proof"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 9 89 19
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 89 9 89 10 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 19
                            , srcInfoPoints = []
                            }
                          (Con
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 14
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 14
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 14
                                     , srcInfoPoints = []
                                     }
                                   "Sub")))
                          (Con
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 15 89 19
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 89 15 89 19
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 89 15 89 19
                                     , srcInfoPoints = []
                                     }
                                   "Dict")))))
                    Nothing)
             ])
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 1 95 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 91 1 91 9
                , SrcSpan "tests/examples/DerivingVia.hs" 91 57 91 62
                , SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 3
                , SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 3
                , SrcSpan "tests/examples/DerivingVia.hs" 95 1 95 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 56
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxSingle
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 21
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 91 19 91 21 ]
                     }
                   (ClassA
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 21
                        , srcInfoPoints =
                            [ SrcSpan "tests/examples/DerivingVia.hs" 91 19 91 21 ]
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 16
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 16
                              , srcInfoPoints = []
                              }
                            "Monoid"))
                      [ TyVar
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 17 91 18
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 17 91 18
                               , srcInfoPoints = []
                               }
                             "w")
                      ])))
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 56
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 34
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 34
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 34
                           , srcInfoPoints = []
                           }
                         "LiftingMonad")))
                (TyKind
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 35 91 56
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 91 35 91 36
                         , SrcSpan "tests/examples/DerivingVia.hs" 91 46 91 48
                         , SrcSpan "tests/examples/DerivingVia.hs" 91 55 91 56
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 45
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 43
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 43
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 43
                                 , srcInfoPoints = []
                                 }
                               "WriterT")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 44 91 45
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 44 91 45
                              , srcInfoPoints = []
                              }
                            "w")))
                   (TyCon
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 49 91 55
                        , srcInfoPoints = []
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 49 91 55
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 49 91 55
                              , srcInfoPoints = []
                              }
                            "MTrans"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 42
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 92 9 92 11 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 42
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 92 9 92 11 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 8
                          , srcInfoPoints = []
                          }
                        "proof"
                    ]
                    (TyInfix
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 42
                         , srcInfoPoints = []
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 19
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 17
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 17
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 17
                                     , srcInfoPoints = []
                                     }
                                   "Monad")))
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 18 92 19
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 92 18 92 19
                                  , srcInfoPoints = []
                                  }
                                "m")))
                       (UnpromotedName
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 20 92 22
                            , srcInfoPoints = []
                            }
                          (UnQual
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 20 92 22
                               , srcInfoPoints = []
                               }
                             (Symbol
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 92 20 92 22
                                  , srcInfoPoints = []
                                  }
                                ":-")))
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 42
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 28
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 28
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 28
                                     , srcInfoPoints = []
                                     }
                                   "Monad")))
                          (TyParen
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 29 92 42
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 92 29 92 30
                                   , SrcSpan "tests/examples/DerivingVia.hs" 92 41 92 42
                                   ]
                               }
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 41
                                  , srcInfoPoints = []
                                  }
                                (TyApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 39
                                     , srcInfoPoints = []
                                     }
                                   (TyCon
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 37
                                        , srcInfoPoints = []
                                        }
                                      (UnQual
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 37
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 92 30 92 37
                                              , srcInfoPoints = []
                                              }
                                            "WriterT")))
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 92 38 92 39
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 92 38 92 39
                                           , srcInfoPoints = []
                                           }
                                         "w")))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 92 40 92 41
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 92 40 92 41
                                        , srcInfoPoints = []
                                        }
                                      "m")))))))
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 19
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 19
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 8
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 8
                            , srcInfoPoints = []
                            }
                          "proof"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 9 93 19
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 93 9 93 10 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 19
                            , srcInfoPoints = []
                            }
                          (Con
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 14
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 14
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 14
                                     , srcInfoPoints = []
                                     }
                                   "Sub")))
                          (Con
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 15 93 19
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 93 15 93 19
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 93 15 93 19
                                     , srcInfoPoints = []
                                     }
                                   "Dict")))))
                    Nothing)
             ])
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 1 99 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 95 1 95 9
                , SrcSpan "tests/examples/DerivingVia.hs" 95 102 95 107
                , SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 3
                , SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 3
                , SrcSpan "tests/examples/DerivingVia.hs" 99 1 99 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 95 10 95 101
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxTuple
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 10 95 54
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 95 10 95 11
                         , SrcSpan "tests/examples/DerivingVia.hs" 95 29 95 30
                         , SrcSpan "tests/examples/DerivingVia.hs" 95 50 95 51
                         , SrcSpan "tests/examples/DerivingVia.hs" 95 52 95 54
                         ]
                     }
                   [ ClassA
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 29
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 23
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 23
                               , srcInfoPoints = []
                               }
                             "LiftingMonad"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 24 95 29
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 24 95 29
                                , srcInfoPoints = []
                                }
                              "trans")
                       ]
                   , ClassA
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 50
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 43
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 43
                               , srcInfoPoints = []
                               }
                             "LiftingMonad"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 44 95 50
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 44 95 50
                                , srcInfoPoints = []
                                }
                              "trans'")
                       ]
                   ]))
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 101
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 67
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 67
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 67
                           , srcInfoPoints = []
                           }
                         "LiftingMonad")))
                (TyKind
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 95 68 95 101
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 95 68 95 69
                         , SrcSpan "tests/examples/DerivingVia.hs" 95 91 95 93
                         , SrcSpan "tests/examples/DerivingVia.hs" 95 100 95 101
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 90
                        , srcInfoPoints = []
                        }
                      (TyApp
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 83
                           , srcInfoPoints = []
                           }
                         (TyCon
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 77
                              , srcInfoPoints = []
                              }
                            (UnQual
                               SrcSpanInfo
                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 77
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 77
                                    , srcInfoPoints = []
                                    }
                                  "ComposeT")))
                         (TyVar
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 78 95 83
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 78 95 83
                                 , srcInfoPoints = []
                                 }
                               "trans")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 84 95 90
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 84 95 90
                              , srcInfoPoints = []
                              }
                            "trans'")))
                   (TyCon
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 95 94 95 100
                        , srcInfoPoints = []
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 95 94 95 100
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 95 94 95 100
                              , srcInfoPoints = []
                              }
                            "MTrans"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 64
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 96 9 96 11 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 64
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 96 9 96 11 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 8
                          , srcInfoPoints = []
                          }
                        "proof"
                    ]
                    (TyForall
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 12 96 64
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 96 12 96 18
                             , SrcSpan "tests/examples/DerivingVia.hs" 96 20 96 21
                             ]
                         }
                       (Just
                          [ UnkindedVar
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 19 96 20
                                , srcInfoPoints = []
                                }
                              (Ident
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 96 19 96 20
                                   , srcInfoPoints = []
                                   }
                                 "m")
                          ])
                       Nothing
                       (TyInfix
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 64
                            , srcInfoPoints = []
                            }
                          (TyApp
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 29
                               , srcInfoPoints = []
                               }
                             (TyCon
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 27
                                  , srcInfoPoints = []
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 27
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 27
                                        , srcInfoPoints = []
                                        }
                                      "Monad")))
                             (TyVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 96 28 96 29
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 96 28 96 29
                                     , srcInfoPoints = []
                                     }
                                   "m")))
                          (UnpromotedName
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 30 96 32
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 96 30 96 32
                                  , srcInfoPoints = []
                                  }
                                (Symbol
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 96 30 96 32
                                     , srcInfoPoints = []
                                     }
                                   ":-")))
                          (TyApp
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 64
                               , srcInfoPoints = []
                               }
                             (TyCon
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 38
                                  , srcInfoPoints = []
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 38
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 38
                                        , srcInfoPoints = []
                                        }
                                      "Monad")))
                             (TyParen
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 96 39 96 64
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 96 39 96 40
                                      , SrcSpan "tests/examples/DerivingVia.hs" 96 63 96 64
                                      ]
                                  }
                                (TyApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 96 40 96 63
                                     , srcInfoPoints = []
                                     }
                                   (TyApp
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 96 40 96 61
                                        , srcInfoPoints = []
                                        }
                                      (TyApp
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 96 40 96 54
                                           , srcInfoPoints = []
                                           }
                                         (TyCon
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 96 40 96 48
                                              , srcInfoPoints = []
                                              }
                                            (UnQual
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 96 40 96 48
                                                 , srcInfoPoints = []
                                                 }
                                               (Ident
                                                  SrcSpanInfo
                                                    { srcInfoSpan =
                                                        SrcSpan
                                                          "tests/examples/DerivingVia.hs"
                                                          96
                                                          40
                                                          96
                                                          48
                                                    , srcInfoPoints = []
                                                    }
                                                  "ComposeT")))
                                         (TyVar
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 96 49 96 54
                                              , srcInfoPoints = []
                                              }
                                            (Ident
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 96 49 96 54
                                                 , srcInfoPoints = []
                                                 }
                                               "trans")))
                                      (TyVar
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 96 55 96 61
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 96 55 96 61
                                              , srcInfoPoints = []
                                              }
                                            "trans'")))
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 96 62 96 63
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 96 62 96 63
                                           , srcInfoPoints = []
                                           }
                                         "m"))))))))
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 69
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 69
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 8
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 8
                            , srcInfoPoints = []
                            }
                          "proof"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 9 97 69
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 97 9 97 10 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 69
                            , srcInfoPoints = []
                            }
                          (Con
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 14
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 14
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 14
                                     , srcInfoPoints = []
                                     }
                                   "Sub")))
                          (Paren
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 15 97 69
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 97 15 97 16
                                   , SrcSpan "tests/examples/DerivingVia.hs" 97 68 97 69
                                   ]
                               }
                             (InfixApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 68
                                  , srcInfoPoints = []
                                  }
                                (InfixApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 48
                                     , srcInfoPoints = []
                                     }
                                   (Con
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 20
                                        , srcInfoPoints = []
                                        }
                                      (UnQual
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 20
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 97 16 97 20
                                              , srcInfoPoints = []
                                              }
                                            "Dict")))
                                   (QVarOp
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 97 21 97 23
                                        , srcInfoPoints = []
                                        }
                                      (UnQual
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 97 21 97 23
                                           , srcInfoPoints = []
                                           }
                                         (Symbol
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 97 21 97 23
                                              , srcInfoPoints = []
                                              }
                                            "\\\\")))
                                   (App
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 97 24 97 48
                                        , srcInfoPoints = []
                                        }
                                      (App
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 97 24 97 36
                                           , srcInfoPoints = []
                                           }
                                         (Var
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 97 24 97 29
                                              , srcInfoPoints = []
                                              }
                                            (UnQual
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 97 24 97 29
                                                 , srcInfoPoints = []
                                                 }
                                               (Ident
                                                  SrcSpanInfo
                                                    { srcInfoSpan =
                                                        SrcSpan
                                                          "tests/examples/DerivingVia.hs"
                                                          97
                                                          24
                                                          97
                                                          29
                                                    , srcInfoPoints = []
                                                    }
                                                  "proof")))
                                         (TypeApp
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 97 30 97 36
                                              , srcInfoPoints =
                                                  [ SrcSpan
                                                      "tests/examples/DerivingVia.hs" 97 30 97 31
                                                  ]
                                              }
                                            (TyVar
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 97 31 97 36
                                                 , srcInfoPoints = []
                                                 }
                                               (Ident
                                                  SrcSpanInfo
                                                    { srcInfoSpan =
                                                        SrcSpan
                                                          "tests/examples/DerivingVia.hs"
                                                          97
                                                          31
                                                          97
                                                          36
                                                    , srcInfoPoints = []
                                                    }
                                                  "trans"))))
                                      (TypeApp
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 97 37 97 48
                                           , srcInfoPoints =
                                               [ SrcSpan "tests/examples/DerivingVia.hs" 97 37 97 38
                                               ]
                                           }
                                         (TyParen
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 97 38 97 48
                                              , srcInfoPoints =
                                                  [ SrcSpan
                                                      "tests/examples/DerivingVia.hs" 97 38 97 39
                                                  , SrcSpan
                                                      "tests/examples/DerivingVia.hs" 97 47 97 48
                                                  ]
                                              }
                                            (TyApp
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 97 39 97 47
                                                 , srcInfoPoints = []
                                                 }
                                               (TyVar
                                                  SrcSpanInfo
                                                    { srcInfoSpan =
                                                        SrcSpan
                                                          "tests/examples/DerivingVia.hs"
                                                          97
                                                          39
                                                          97
                                                          45
                                                    , srcInfoPoints = []
                                                    }
                                                  (Ident
                                                     SrcSpanInfo
                                                       { srcInfoSpan =
                                                           SrcSpan
                                                             "tests/examples/DerivingVia.hs"
                                                             97
                                                             39
                                                             97
                                                             45
                                                       , srcInfoPoints = []
                                                       }
                                                     "trans'"))
                                               (TyVar
                                                  SrcSpanInfo
                                                    { srcInfoSpan =
                                                        SrcSpan
                                                          "tests/examples/DerivingVia.hs"
                                                          97
                                                          46
                                                          97
                                                          47
                                                    , srcInfoPoints = []
                                                    }
                                                  (Ident
                                                     SrcSpanInfo
                                                       { srcInfoSpan =
                                                           SrcSpan
                                                             "tests/examples/DerivingVia.hs"
                                                             97
                                                             46
                                                             97
                                                             47
                                                       , srcInfoPoints = []
                                                       }
                                                     "m")))))))
                                (QVarOp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 97 49 97 51
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 97 49 97 51
                                        , srcInfoPoints = []
                                        }
                                      (Symbol
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 97 49 97 51
                                           , srcInfoPoints = []
                                           }
                                         "\\\\")))
                                (App
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 97 52 97 68
                                     , srcInfoPoints = []
                                     }
                                   (App
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 97 52 97 65
                                        , srcInfoPoints = []
                                        }
                                      (Var
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 97 52 97 57
                                           , srcInfoPoints = []
                                           }
                                         (UnQual
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 97 52 97 57
                                              , srcInfoPoints = []
                                              }
                                            (Ident
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 97 52 97 57
                                                 , srcInfoPoints = []
                                                 }
                                               "proof")))
                                      (TypeApp
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 97 58 97 65
                                           , srcInfoPoints =
                                               [ SrcSpan "tests/examples/DerivingVia.hs" 97 58 97 59
                                               ]
                                           }
                                         (TyVar
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 97 59 97 65
                                              , srcInfoPoints = []
                                              }
                                            (Ident
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 97 59 97 65
                                                 , srcInfoPoints = []
                                                 }
                                               "trans'"))))
                                   (TypeApp
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 97 66 97 68
                                        , srcInfoPoints =
                                            [ SrcSpan "tests/examples/DerivingVia.hs" 97 66 97 67 ]
                                        }
                                      (TyVar
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 97 67 97 68
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 97 67 97 68
                                              , srcInfoPoints = []
                                              }
                                            "m"))))))))
                    Nothing)
             ])
      , GDataDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 1 109 34
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 99 15 99 17
                , SrcSpan "tests/examples/DerivingVia.hs" 99 25 99 30
                , SrcSpan "tests/examples/DerivingVia.hs" 100 3 100 3
                , SrcSpan "tests/examples/DerivingVia.hs" 101 3 101 3
                , SrcSpan "tests/examples/DerivingVia.hs" 101 3 101 3
                ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 1 99 8
               , srcInfoPoints = []
               })
          Nothing
          (DHead
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 9 99 14
               , srcInfoPoints = []
               }
             (Ident
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 9 99 14
                  , srcInfoPoints = []
                  }
                "Stack"))
          (Just
             (TyCon
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 18 99 24
                  , srcInfoPoints = []
                  }
                (UnQual
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 18 99 24
                     , srcInfoPoints = []
                     }
                   (Ident
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 18 99 24
                        , srcInfoPoints = []
                        }
                      "MTrans"))))
          [ GadtDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 100 3 100 71
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 100 9 100 11 ]
                }
              (Ident
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 100 3 100 8
                   , srcInfoPoints = []
                   }
                 "Stack")
              Nothing
              Nothing
              Nothing
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 71
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 100 59 100 61 ]
                   }
                 (TyApp
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 58
                      , srcInfoPoints = []
                      }
                    (TyApp
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 56
                         , srcInfoPoints = []
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 23
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 19
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 19
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 19
                                     , srcInfoPoints = []
                                     }
                                   "ReaderT")))
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 100 20 100 23
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 100 20 100 23
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 100 20 100 23
                                     , srcInfoPoints = []
                                     }
                                   "Int"))))
                       (TyParen
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 100 24 100 56
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 100 24 100 25
                                , SrcSpan "tests/examples/DerivingVia.hs" 100 55 100 56
                                ]
                            }
                          (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 55
                               , srcInfoPoints = []
                               }
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 36
                                  , srcInfoPoints = []
                                  }
                                (TyCon
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 31
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 31
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 31
                                           , srcInfoPoints = []
                                           }
                                         "StateT")))
                                (TyCon
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 100 32 100 36
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 100 32 100 36
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 100 32 100 36
                                           , srcInfoPoints = []
                                           }
                                         "Bool"))))
                             (TyParen
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 100 37 100 55
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 100 37 100 38
                                      , SrcSpan "tests/examples/DerivingVia.hs" 100 54 100 55
                                      ]
                                  }
                                (TyApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 100 38 100 54
                                     , srcInfoPoints = []
                                     }
                                   (TyApp
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 100 38 100 52
                                        , srcInfoPoints = []
                                        }
                                      (TyCon
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 100 38 100 45
                                           , srcInfoPoints = []
                                           }
                                         (UnQual
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 100 38 100 45
                                              , srcInfoPoints = []
                                              }
                                            (Ident
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 100 38 100 45
                                                 , srcInfoPoints = []
                                                 }
                                               "WriterT")))
                                      (TyCon
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 100 46 100 52
                                           , srcInfoPoints = []
                                           }
                                         (UnQual
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 100 46 100 52
                                              , srcInfoPoints = []
                                              }
                                            (Ident
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 100 46 100 52
                                                 , srcInfoPoints = []
                                                 }
                                               "String"))))
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 100 53 100 54
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 100 53 100 54
                                           , srcInfoPoints = []
                                           }
                                         "m")))))))
                    (TyVar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 100 57 100 58
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 100 57 100 58
                            , srcInfoPoints = []
                            }
                          "a")))
                 (TyApp
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 71
                      , srcInfoPoints = []
                      }
                    (TyApp
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 69
                         , srcInfoPoints = []
                         }
                       (TyCon
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 67
                            , srcInfoPoints = []
                            }
                          (UnQual
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 67
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 67
                                  , srcInfoPoints = []
                                  }
                                "Stack")))
                       (TyVar
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 100 68 100 69
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 100 68 100 69
                               , srcInfoPoints = []
                               }
                             "m")))
                    (TyVar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 100 70 100 71
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 100 70 100 71
                            , srcInfoPoints = []
                            }
                          "a"))))
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 101 3 108 6
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 101 3 101 11
                    , SrcSpan "tests/examples/DerivingVia.hs" 102 5 102 6
                    , SrcSpan "tests/examples/DerivingVia.hs" 103 5 103 6
                    , SrcSpan "tests/examples/DerivingVia.hs" 104 5 104 6
                    , SrcSpan "tests/examples/DerivingVia.hs" 105 5 105 6
                    , SrcSpan "tests/examples/DerivingVia.hs" 106 5 106 6
                    , SrcSpan "tests/examples/DerivingVia.hs" 107 5 107 6
                    , SrcSpan "tests/examples/DerivingVia.hs" 108 5 108 6
                    ]
                }
              (Just
                 (DerivNewtype
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 101 12 101 19
                      , srcInfoPoints = []
                      }))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14
                             , srcInfoPoints = []
                             }
                           "Functor")))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18
                             , srcInfoPoints = []
                             }
                           "Applicative")))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12
                             , srcInfoPoints = []
                             }
                           "Monad")))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 22
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHApp
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 22
                       , srcInfoPoints = []
                       }
                     (IHCon
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 18
                          , srcInfoPoints = []
                          }
                        (UnQual
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 18
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 18
                                , srcInfoPoints = []
                                }
                              "MonadReader")))
                     (TyCon
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 105 19 105 22
                          , srcInfoPoints = []
                          }
                        (UnQual
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 105 19 105 22
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 105 19 105 22
                                , srcInfoPoints = []
                                }
                              "Int"))))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 22
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHApp
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 22
                       , srcInfoPoints = []
                       }
                     (IHCon
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 17
                          , srcInfoPoints = []
                          }
                        (UnQual
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 17
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 17
                                , srcInfoPoints = []
                                }
                              "MonadState")))
                     (TyCon
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 106 18 106 22
                          , srcInfoPoints = []
                          }
                        (UnQual
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 106 18 106 22
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 106 18 106 22
                                , srcInfoPoints = []
                                }
                              "Bool"))))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 25
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHApp
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 25
                       , srcInfoPoints = []
                       }
                     (IHCon
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 18
                          , srcInfoPoints = []
                          }
                        (UnQual
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 18
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 18
                                , srcInfoPoints = []
                                }
                              "MonadWriter")))
                     (TyCon
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 107 19 107 25
                          , srcInfoPoints = []
                          }
                        (UnQual
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 107 19 107 25
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 107 19 107 25
                                , srcInfoPoints = []
                                }
                              "String"))))
              ]
          , Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 109 3 109 34
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 109 3 109 11
                    , SrcSpan "tests/examples/DerivingVia.hs" 109 12 109 13
                    , SrcSpan "tests/examples/DerivingVia.hs" 109 23 109 24
                    , SrcSpan "tests/examples/DerivingVia.hs" 109 33 109 34
                    ]
                }
              (Just
                 (DerivVia
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 110 8 110 11
                      , srcInfoPoints = []
                      }
                    (TyParen
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 110 12 110 74
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 110 12 110 13
                             , SrcSpan "tests/examples/DerivingVia.hs" 110 73 110 74
                             ]
                         }
                       (TyInfix
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 73
                            , srcInfoPoints = []
                            }
                          (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 24
                               , srcInfoPoints = []
                               }
                             (TyCon
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 20
                                  , srcInfoPoints = []
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 20
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 20
                                        , srcInfoPoints = []
                                        }
                                      "ReaderT")))
                             (TyCon
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 110 21 110 24
                                  , srcInfoPoints = []
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 110 21 110 24
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 110 21 110 24
                                        , srcInfoPoints = []
                                        }
                                      "Int"))))
                          (UnpromotedName
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 35
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 26
                                   , SrcSpan "tests/examples/DerivingVia.hs" 110 26 110 34
                                   , SrcSpan "tests/examples/DerivingVia.hs" 110 34 110 35
                                   ]
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 35
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 26
                                      , SrcSpan "tests/examples/DerivingVia.hs" 110 26 110 34
                                      , SrcSpan "tests/examples/DerivingVia.hs" 110 34 110 35
                                      ]
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 110 26 110 34
                                     , srcInfoPoints = []
                                     }
                                   "ComposeT")))
                          (TyInfix
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 73
                               , srcInfoPoints = []
                               }
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 47
                                  , srcInfoPoints = []
                                  }
                                (TyCon
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 42
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 42
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 42
                                           , srcInfoPoints = []
                                           }
                                         "StateT")))
                                (TyCon
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 110 43 110 47
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 110 43 110 47
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 110 43 110 47
                                           , srcInfoPoints = []
                                           }
                                         "Bool"))))
                             (UnpromotedName
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 58
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 49
                                      , SrcSpan "tests/examples/DerivingVia.hs" 110 49 110 57
                                      , SrcSpan "tests/examples/DerivingVia.hs" 110 57 110 58
                                      ]
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 58
                                     , srcInfoPoints =
                                         [ SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 49
                                         , SrcSpan "tests/examples/DerivingVia.hs" 110 49 110 57
                                         , SrcSpan "tests/examples/DerivingVia.hs" 110 57 110 58
                                         ]
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 110 49 110 57
                                        , srcInfoPoints = []
                                        }
                                      "ComposeT")))
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 73
                                  , srcInfoPoints = []
                                  }
                                (TyCon
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 66
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 66
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 66
                                           , srcInfoPoints = []
                                           }
                                         "WriterT")))
                                (TyCon
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 110 67 110 73
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 110 67 110 73
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 110 67 110 73
                                           , srcInfoPoints = []
                                           }
                                         "String")))))))))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23
                             , srcInfoPoints = []
                             }
                           "MonadTrans")))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33
                             , srcInfoPoints = []
                             }
                           "MFunctor")))
              ]
          ]
      , ClassDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 112 1 113 57
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 112 1 112 6
                , SrcSpan "tests/examples/DerivingVia.hs" 112 34 112 39
                , SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 3
                , SrcSpan "tests/examples/DerivingVia.hs" 115 1 115 0
                ]
            }
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 112 7 112 33
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 112 7 112 15
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 112 7 112 15
                     , srcInfoPoints = []
                     }
                   "MFunctor"))
             (KindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 112 16 112 33
                  , srcInfoPoints =
                      [ SrcSpan "tests/examples/DerivingVia.hs" 112 16 112 17
                      , SrcSpan "tests/examples/DerivingVia.hs" 112 23 112 25
                      , SrcSpan "tests/examples/DerivingVia.hs" 112 32 112 33
                      ]
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 112 17 112 22
                     , srcInfoPoints = []
                     }
                   "trans")
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 112 26 112 32
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 112 26 112 32
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 112 26 112 32
                           , srcInfoPoints = []
                           }
                         "MTrans")))))
          []
          (Just
             [ ClsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 57
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 113 9 113 11 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 57
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 113 9 113 11 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 8
                          , srcInfoPoints = []
                          }
                        "hoist"
                    ]
                    (TyForall
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 57
                         , srcInfoPoints = []
                         }
                       Nothing
                       (Just
                          (CxSingle
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 22
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 113 20 113 22 ]
                               }
                             (ClassA
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 22
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 113 20 113 22 ]
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 17
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 17
                                        , srcInfoPoints = []
                                        }
                                      "Monad"))
                                [ TyVar
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 113 18 113 19
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 113 18 113 19
                                         , srcInfoPoints = []
                                         }
                                       "m")
                                ])))
                       (TyFun
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 113 23 113 57
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 113 33 113 35 ]
                            }
                          (TyParen
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 113 23 113 32
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 113 23 113 24
                                   , SrcSpan "tests/examples/DerivingVia.hs" 113 31 113 32
                                   ]
                               }
                             (TyInfix
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 113 24 113 31
                                  , srcInfoPoints = []
                                  }
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 113 24 113 25
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 113 24 113 25
                                        , srcInfoPoints = []
                                        }
                                      "m"))
                                (UnpromotedName
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 113 26 113 28
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 113 26 113 28
                                        , srcInfoPoints = []
                                        }
                                      (Symbol
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 113 26 113 28
                                           , srcInfoPoints = []
                                           }
                                         "~>")))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 113 29 113 31
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 113 29 113 31
                                        , srcInfoPoints = []
                                        }
                                      "m'"))))
                          (TyParen
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 113 36 113 57
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 113 36 113 37
                                   , SrcSpan "tests/examples/DerivingVia.hs" 113 56 113 57
                                   ]
                               }
                             (TyInfix
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 56
                                  , srcInfoPoints = []
                                  }
                                (TyApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 44
                                     , srcInfoPoints = []
                                     }
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 42
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 42
                                           , srcInfoPoints = []
                                           }
                                         "trans"))
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 113 43 113 44
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 113 43 113 44
                                           , srcInfoPoints = []
                                           }
                                         "m")))
                                (UnpromotedName
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 113 45 113 47
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 113 45 113 47
                                        , srcInfoPoints = []
                                        }
                                      (Symbol
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 113 45 113 47
                                           , srcInfoPoints = []
                                           }
                                         "~>")))
                                (TyApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 113 48 113 56
                                     , srcInfoPoints = []
                                     }
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 113 48 113 53
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 113 48 113 53
                                           , srcInfoPoints = []
                                           }
                                         "trans"))
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 113 54 113 56
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 113 54 113 56
                                           , srcInfoPoints = []
                                           }
                                         "m'"))))))))
             ])
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 115 1 119 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 115 1 115 9
                , SrcSpan "tests/examples/DerivingVia.hs" 115 41 115 46
                , SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 3
                , SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 3
                , SrcSpan "tests/examples/DerivingVia.hs" 119 1 119 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 40
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 40
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 18
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 18
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 18
                           , srcInfoPoints = []
                           }
                         "MFunctor")))
                (TyKind
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 115 19 115 40
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 115 19 115 20
                         , SrcSpan "tests/examples/DerivingVia.hs" 115 30 115 32
                         , SrcSpan "tests/examples/DerivingVia.hs" 115 39 115 40
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 29
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 27
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 27
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 27
                                 , srcInfoPoints = []
                                 }
                               "ReaderT")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 115 28 115 29
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 115 28 115 29
                              , srcInfoPoints = []
                              }
                            "r")))
                   (TyCon
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 115 33 115 39
                        , srcInfoPoints = []
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 115 33 115 39
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 115 33 115 39
                              , srcInfoPoints = []
                              }
                            "MTrans"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 65
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 116 9 116 11 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 65
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 116 9 116 11 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 8
                          , srcInfoPoints = []
                          }
                        "hoist"
                    ]
                    (TyForall
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 65
                         , srcInfoPoints = []
                         }
                       Nothing
                       (Just
                          (CxSingle
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 22
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 116 20 116 22 ]
                               }
                             (ClassA
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 22
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 116 20 116 22 ]
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 17
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 17
                                        , srcInfoPoints = []
                                        }
                                      "Monad"))
                                [ TyVar
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 116 18 116 19
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 116 18 116 19
                                         , srcInfoPoints = []
                                         }
                                       "m")
                                ])))
                       (TyFun
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 116 23 116 65
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 116 33 116 35 ]
                            }
                          (TyParen
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 116 23 116 32
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 116 23 116 24
                                   , SrcSpan "tests/examples/DerivingVia.hs" 116 31 116 32
                                   ]
                               }
                             (TyInfix
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 116 24 116 31
                                  , srcInfoPoints = []
                                  }
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 116 24 116 25
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 116 24 116 25
                                        , srcInfoPoints = []
                                        }
                                      "m"))
                                (UnpromotedName
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 116 26 116 28
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 116 26 116 28
                                        , srcInfoPoints = []
                                        }
                                      (Symbol
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 116 26 116 28
                                           , srcInfoPoints = []
                                           }
                                         "~>")))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 116 29 116 31
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 116 29 116 31
                                        , srcInfoPoints = []
                                        }
                                      "m'"))))
                          (TyParen
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 116 36 116 65
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 116 36 116 37
                                   , SrcSpan "tests/examples/DerivingVia.hs" 116 64 116 65
                                   ]
                               }
                             (TyInfix
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 64
                                  , srcInfoPoints = []
                                  }
                                (TyApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 48
                                     , srcInfoPoints = []
                                     }
                                   (TyApp
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 46
                                        , srcInfoPoints = []
                                        }
                                      (TyCon
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 44
                                           , srcInfoPoints = []
                                           }
                                         (UnQual
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 116 37 116 44
                                              , srcInfoPoints = []
                                              }
                                            (Ident
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 116 37 116 44
                                                 , srcInfoPoints = []
                                                 }
                                               "ReaderT")))
                                      (TyVar
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 116 45 116 46
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 116 45 116 46
                                              , srcInfoPoints = []
                                              }
                                            "r")))
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 116 47 116 48
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 116 47 116 48
                                           , srcInfoPoints = []
                                           }
                                         "m")))
                                (UnpromotedName
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 116 49 116 51
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 116 49 116 51
                                        , srcInfoPoints = []
                                        }
                                      (Symbol
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 116 49 116 51
                                           , srcInfoPoints = []
                                           }
                                         "~>")))
                                (TyApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 116 52 116 64
                                     , srcInfoPoints = []
                                     }
                                   (TyApp
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 116 52 116 61
                                        , srcInfoPoints = []
                                        }
                                      (TyCon
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 116 52 116 59
                                           , srcInfoPoints = []
                                           }
                                         (UnQual
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 116 52 116 59
                                              , srcInfoPoints = []
                                              }
                                            (Ident
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 116 52 116 59
                                                 , srcInfoPoints = []
                                                 }
                                               "ReaderT")))
                                      (TyVar
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 116 60 116 61
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 116 60 116 61
                                              , srcInfoPoints = []
                                              }
                                            "r")))
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 116 62 116 64
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 116 62 116 64
                                           , srcInfoPoints = []
                                           }
                                         "m'"))))))))
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 46
                   , srcInfoPoints = []
                   }
                 (FunBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 46
                      , srcInfoPoints = []
                      }
                    [ Match
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 46
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 8
                             , srcInfoPoints = []
                             }
                           "hoist")
                        [ PVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 117 9 117 12
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 117 9 117 12
                                 , srcInfoPoints = []
                                 }
                               "nat")
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 117 13 117 46
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 117 13 117 14 ]
                             }
                           (InfixApp
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 46
                                , srcInfoPoints = []
                                }
                              (Con
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 22
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 22
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 22
                                         , srcInfoPoints = []
                                         }
                                       "ReaderT")))
                              (QVarOp
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 117 23 117 24
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 117 23 117 24
                                      , srcInfoPoints = []
                                      }
                                    (Symbol
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 117 23 117 24
                                         , srcInfoPoints = []
                                         }
                                       ".")))
                              (InfixApp
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 117 25 117 46
                                   , srcInfoPoints = []
                                   }
                                 (App
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 117 25 117 33
                                      , srcInfoPoints = []
                                      }
                                    (Var
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 117 25 117 29
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 117 25 117 29
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 117 25 117 29
                                               , srcInfoPoints = []
                                               }
                                             "fmap")))
                                    (Var
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 117 30 117 33
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 117 30 117 33
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 117 30 117 33
                                               , srcInfoPoints = []
                                               }
                                             "nat"))))
                                 (QVarOp
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 117 34 117 35
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 117 34 117 35
                                         , srcInfoPoints = []
                                         }
                                       (Symbol
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 117 34 117 35
                                            , srcInfoPoints = []
                                            }
                                          ".")))
                                 (Var
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 117 36 117 46
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 117 36 117 46
                                         , srcInfoPoints = []
                                         }
                                       (Ident
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 117 36 117 46
                                            , srcInfoPoints = []
                                            }
                                          "runReaderT"))))))
                        Nothing
                    ])
             ])
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 119 1 123 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 119 1 119 9
                , SrcSpan "tests/examples/DerivingVia.hs" 119 40 119 45
                , SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 3
                , SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 3
                , SrcSpan "tests/examples/DerivingVia.hs" 123 1 123 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 39
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 39
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 18
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 18
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 18
                           , srcInfoPoints = []
                           }
                         "MFunctor")))
                (TyKind
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 119 19 119 39
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 119 19 119 20
                         , SrcSpan "tests/examples/DerivingVia.hs" 119 29 119 31
                         , SrcSpan "tests/examples/DerivingVia.hs" 119 38 119 39
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 28
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 26
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 26
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 26
                                 , srcInfoPoints = []
                                 }
                               "StateT")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 119 27 119 28
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 119 27 119 28
                              , srcInfoPoints = []
                              }
                            "s")))
                   (TyCon
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 119 32 119 38
                        , srcInfoPoints = []
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 119 32 119 38
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 119 32 119 38
                              , srcInfoPoints = []
                              }
                            "MTrans"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 63
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 120 9 120 11 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 63
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 120 9 120 11 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 8
                          , srcInfoPoints = []
                          }
                        "hoist"
                    ]
                    (TyForall
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 63
                         , srcInfoPoints = []
                         }
                       Nothing
                       (Just
                          (CxSingle
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 22
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 120 20 120 22 ]
                               }
                             (ClassA
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 22
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 120 20 120 22 ]
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 17
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 17
                                        , srcInfoPoints = []
                                        }
                                      "Monad"))
                                [ TyVar
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 120 18 120 19
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 120 18 120 19
                                         , srcInfoPoints = []
                                         }
                                       "m")
                                ])))
                       (TyFun
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 120 23 120 63
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 120 33 120 35 ]
                            }
                          (TyParen
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 120 23 120 32
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 120 23 120 24
                                   , SrcSpan "tests/examples/DerivingVia.hs" 120 31 120 32
                                   ]
                               }
                             (TyInfix
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 120 24 120 31
                                  , srcInfoPoints = []
                                  }
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 120 24 120 25
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 120 24 120 25
                                        , srcInfoPoints = []
                                        }
                                      "m"))
                                (UnpromotedName
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 120 26 120 28
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 120 26 120 28
                                        , srcInfoPoints = []
                                        }
                                      (Symbol
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 120 26 120 28
                                           , srcInfoPoints = []
                                           }
                                         "~>")))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 120 29 120 31
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 120 29 120 31
                                        , srcInfoPoints = []
                                        }
                                      "m'"))))
                          (TyParen
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 120 36 120 63
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 120 36 120 37
                                   , SrcSpan "tests/examples/DerivingVia.hs" 120 62 120 63
                                   ]
                               }
                             (TyInfix
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 62
                                  , srcInfoPoints = []
                                  }
                                (TyApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 47
                                     , srcInfoPoints = []
                                     }
                                   (TyApp
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 45
                                        , srcInfoPoints = []
                                        }
                                      (TyCon
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 43
                                           , srcInfoPoints = []
                                           }
                                         (UnQual
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 120 37 120 43
                                              , srcInfoPoints = []
                                              }
                                            (Ident
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 120 37 120 43
                                                 , srcInfoPoints = []
                                                 }
                                               "StateT")))
                                      (TyVar
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 120 44 120 45
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 120 44 120 45
                                              , srcInfoPoints = []
                                              }
                                            "s")))
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 120 46 120 47
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 120 46 120 47
                                           , srcInfoPoints = []
                                           }
                                         "m")))
                                (UnpromotedName
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 120 48 120 50
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 120 48 120 50
                                        , srcInfoPoints = []
                                        }
                                      (Symbol
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 120 48 120 50
                                           , srcInfoPoints = []
                                           }
                                         "~>")))
                                (TyApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 120 51 120 62
                                     , srcInfoPoints = []
                                     }
                                   (TyApp
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 120 51 120 59
                                        , srcInfoPoints = []
                                        }
                                      (TyCon
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 120 51 120 57
                                           , srcInfoPoints = []
                                           }
                                         (UnQual
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 120 51 120 57
                                              , srcInfoPoints = []
                                              }
                                            (Ident
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 120 51 120 57
                                                 , srcInfoPoints = []
                                                 }
                                               "StateT")))
                                      (TyVar
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 120 58 120 59
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 120 58 120 59
                                              , srcInfoPoints = []
                                              }
                                            "s")))
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 120 60 120 62
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 120 60 120 62
                                           , srcInfoPoints = []
                                           }
                                         "m'"))))))))
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 44
                   , srcInfoPoints = []
                   }
                 (FunBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 44
                      , srcInfoPoints = []
                      }
                    [ Match
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 44
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 8
                             , srcInfoPoints = []
                             }
                           "hoist")
                        [ PVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 121 9 121 12
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 121 9 121 12
                                 , srcInfoPoints = []
                                 }
                               "nat")
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 121 13 121 44
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 121 13 121 14 ]
                             }
                           (InfixApp
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 44
                                , srcInfoPoints = []
                                }
                              (Con
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 21
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 21
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 21
                                         , srcInfoPoints = []
                                         }
                                       "StateT")))
                              (QVarOp
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 121 22 121 23
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 121 22 121 23
                                      , srcInfoPoints = []
                                      }
                                    (Symbol
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 121 22 121 23
                                         , srcInfoPoints = []
                                         }
                                       ".")))
                              (InfixApp
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 121 24 121 44
                                   , srcInfoPoints = []
                                   }
                                 (App
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 121 24 121 32
                                      , srcInfoPoints = []
                                      }
                                    (Var
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 121 24 121 28
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 121 24 121 28
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 121 24 121 28
                                               , srcInfoPoints = []
                                               }
                                             "fmap")))
                                    (Var
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 121 29 121 32
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 121 29 121 32
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 121 29 121 32
                                               , srcInfoPoints = []
                                               }
                                             "nat"))))
                                 (QVarOp
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 121 33 121 34
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 121 33 121 34
                                         , srcInfoPoints = []
                                         }
                                       (Symbol
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 121 33 121 34
                                            , srcInfoPoints = []
                                            }
                                          ".")))
                                 (Var
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 121 35 121 44
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 121 35 121 44
                                         , srcInfoPoints = []
                                         }
                                       (Ident
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 121 35 121 44
                                            , srcInfoPoints = []
                                            }
                                          "runStateT"))))))
                        Nothing
                    ])
             ])
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 123 1 127 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 123 1 123 9
                , SrcSpan "tests/examples/DerivingVia.hs" 123 41 123 46
                , SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 3
                , SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 3
                , SrcSpan "tests/examples/DerivingVia.hs" 127 1 127 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 40
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 40
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 18
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 18
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 18
                           , srcInfoPoints = []
                           }
                         "MFunctor")))
                (TyKind
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 123 19 123 40
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 123 19 123 20
                         , SrcSpan "tests/examples/DerivingVia.hs" 123 30 123 32
                         , SrcSpan "tests/examples/DerivingVia.hs" 123 39 123 40
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 29
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 27
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 27
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 27
                                 , srcInfoPoints = []
                                 }
                               "WriterT")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 123 28 123 29
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 123 28 123 29
                              , srcInfoPoints = []
                              }
                            "w")))
                   (TyCon
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 123 33 123 39
                        , srcInfoPoints = []
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 123 33 123 39
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 123 33 123 39
                              , srcInfoPoints = []
                              }
                            "MTrans"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 65
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 124 9 124 11 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 65
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 124 9 124 11 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 8
                          , srcInfoPoints = []
                          }
                        "hoist"
                    ]
                    (TyForall
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 65
                         , srcInfoPoints = []
                         }
                       Nothing
                       (Just
                          (CxSingle
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 22
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 124 20 124 22 ]
                               }
                             (ClassA
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 22
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 124 20 124 22 ]
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 17
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 17
                                        , srcInfoPoints = []
                                        }
                                      "Monad"))
                                [ TyVar
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 124 18 124 19
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 124 18 124 19
                                         , srcInfoPoints = []
                                         }
                                       "m")
                                ])))
                       (TyFun
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 124 23 124 65
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 124 33 124 35 ]
                            }
                          (TyParen
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 124 23 124 32
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 124 23 124 24
                                   , SrcSpan "tests/examples/DerivingVia.hs" 124 31 124 32
                                   ]
                               }
                             (TyInfix
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 124 24 124 31
                                  , srcInfoPoints = []
                                  }
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 124 24 124 25
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 124 24 124 25
                                        , srcInfoPoints = []
                                        }
                                      "m"))
                                (UnpromotedName
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 124 26 124 28
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 124 26 124 28
                                        , srcInfoPoints = []
                                        }
                                      (Symbol
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 124 26 124 28
                                           , srcInfoPoints = []
                                           }
                                         "~>")))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 124 29 124 31
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 124 29 124 31
                                        , srcInfoPoints = []
                                        }
                                      "m'"))))
                          (TyParen
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 124 36 124 65
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 124 36 124 37
                                   , SrcSpan "tests/examples/DerivingVia.hs" 124 64 124 65
                                   ]
                               }
                             (TyInfix
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 64
                                  , srcInfoPoints = []
                                  }
                                (TyApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 48
                                     , srcInfoPoints = []
                                     }
                                   (TyApp
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 46
                                        , srcInfoPoints = []
                                        }
                                      (TyCon
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 44
                                           , srcInfoPoints = []
                                           }
                                         (UnQual
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 124 37 124 44
                                              , srcInfoPoints = []
                                              }
                                            (Ident
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 124 37 124 44
                                                 , srcInfoPoints = []
                                                 }
                                               "WriterT")))
                                      (TyVar
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 124 45 124 46
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 124 45 124 46
                                              , srcInfoPoints = []
                                              }
                                            "w")))
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 124 47 124 48
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 124 47 124 48
                                           , srcInfoPoints = []
                                           }
                                         "m")))
                                (UnpromotedName
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 124 49 124 51
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 124 49 124 51
                                        , srcInfoPoints = []
                                        }
                                      (Symbol
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 124 49 124 51
                                           , srcInfoPoints = []
                                           }
                                         "~>")))
                                (TyApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 124 52 124 64
                                     , srcInfoPoints = []
                                     }
                                   (TyApp
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 124 52 124 61
                                        , srcInfoPoints = []
                                        }
                                      (TyCon
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 124 52 124 59
                                           , srcInfoPoints = []
                                           }
                                         (UnQual
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 124 52 124 59
                                              , srcInfoPoints = []
                                              }
                                            (Ident
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 124 52 124 59
                                                 , srcInfoPoints = []
                                                 }
                                               "WriterT")))
                                      (TyVar
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 124 60 124 61
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 124 60 124 61
                                              , srcInfoPoints = []
                                              }
                                            "w")))
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 124 62 124 64
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 124 62 124 64
                                           , srcInfoPoints = []
                                           }
                                         "m'"))))))))
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 41
                   , srcInfoPoints = []
                   }
                 (FunBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 41
                      , srcInfoPoints = []
                      }
                    [ Match
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 41
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 8
                             , srcInfoPoints = []
                             }
                           "hoist")
                        [ PVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 125 9 125 12
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 125 9 125 12
                                 , srcInfoPoints = []
                                 }
                               "nat")
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 125 13 125 41
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 125 13 125 14 ]
                             }
                           (InfixApp
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 41
                                , srcInfoPoints = []
                                }
                              (Con
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 22
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 22
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 22
                                         , srcInfoPoints = []
                                         }
                                       "WriterT")))
                              (QVarOp
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 125 23 125 24
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 125 23 125 24
                                      , srcInfoPoints = []
                                      }
                                    (Symbol
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 125 23 125 24
                                         , srcInfoPoints = []
                                         }
                                       ".")))
                              (InfixApp
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 125 25 125 41
                                   , srcInfoPoints = []
                                   }
                                 (Var
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 125 25 125 28
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 125 25 125 28
                                         , srcInfoPoints = []
                                         }
                                       (Ident
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 125 25 125 28
                                            , srcInfoPoints = []
                                            }
                                          "nat")))
                                 (QVarOp
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 125 29 125 30
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 125 29 125 30
                                         , srcInfoPoints = []
                                         }
                                       (Symbol
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 125 29 125 30
                                            , srcInfoPoints = []
                                            }
                                          ".")))
                                 (Var
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 125 31 125 41
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 125 31 125 41
                                         , srcInfoPoints = []
                                         }
                                       (Ident
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 125 31 125 41
                                            , srcInfoPoints = []
                                            }
                                          "runWriterT"))))))
                        Nothing
                    ])
             ])
      , InfixDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 127 1 127 20
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 127 8 127 9 ]
            }
          (AssocRight
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 127 1 127 7
               , srcInfoPoints = []
               })
          (Just 9)
          [ ConOp
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 20
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 11
                    , SrcSpan "tests/examples/DerivingVia.hs" 127 11 127 19
                    , SrcSpan "tests/examples/DerivingVia.hs" 127 19 127 20
                    ]
                }
              (Ident
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 20
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 11
                       , SrcSpan "tests/examples/DerivingVia.hs" 127 11 127 19
                       , SrcSpan "tests/examples/DerivingVia.hs" 127 19 127 20
                       ]
                   }
                 "ComposeT")
          ]
      , GDataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 128 1 130 49
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 128 18 128 20
                , SrcSpan "tests/examples/DerivingVia.hs" 128 48 128 53
                , SrcSpan "tests/examples/DerivingVia.hs" 129 3 129 3
                , SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 3
                , SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 3
                ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 128 1 128 8
               , srcInfoPoints = []
               })
          Nothing
          (DHead
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 128 9 128 17
               , srcInfoPoints = []
               }
             (Ident
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 128 9 128 17
                  , srcInfoPoints = []
                  }
                "ComposeT"))
          (Just
             (TyFun
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 47
                  , srcInfoPoints =
                      [ SrcSpan "tests/examples/DerivingVia.hs" 128 28 128 30 ]
                  }
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 27
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 27
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 27
                           , srcInfoPoints = []
                           }
                         "MTrans")))
                (TyFun
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 47
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 128 38 128 40 ]
                     }
                   (TyCon
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 37
                        , srcInfoPoints = []
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 37
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 37
                              , srcInfoPoints = []
                              }
                            "MTrans")))
                   (TyCon
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 128 41 128 47
                        , srcInfoPoints = []
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 128 41 128 47
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 128 41 128 47
                              , srcInfoPoints = []
                              }
                            "MTrans"))))))
          [ GadtDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 129 3 129 63
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 129 12 129 14
                    , SrcSpan "tests/examples/DerivingVia.hs" 129 15 129 16
                    , SrcSpan "tests/examples/DerivingVia.hs" 129 42 129 43
                    , SrcSpan "tests/examples/DerivingVia.hs" 129 44 129 46
                    ]
                }
              (Ident
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 129 3 129 11
                   , srcInfoPoints = []
                   }
                 "ComposeT")
              Nothing
              Nothing
              (Just
                 [ FieldDecl
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 129 17 129 41
                       , srcInfoPoints =
                           [ SrcSpan "tests/examples/DerivingVia.hs" 129 29 129 31 ]
                       }
                     [ Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 129 17 129 28
                           , srcInfoPoints = []
                           }
                         "getComposeT"
                     ]
                     (TyApp
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 41
                          , srcInfoPoints = []
                          }
                        (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 39
                             , srcInfoPoints = []
                             }
                           (TyVar
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 33
                                , srcInfoPoints = []
                                }
                              (Ident
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 33
                                   , srcInfoPoints = []
                                   }
                                 "f"))
                           (TyParen
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 129 34 129 39
                                , srcInfoPoints =
                                    [ SrcSpan "tests/examples/DerivingVia.hs" 129 34 129 35
                                    , SrcSpan "tests/examples/DerivingVia.hs" 129 38 129 39
                                    ]
                                }
                              (TyApp
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 129 35 129 38
                                   , srcInfoPoints = []
                                   }
                                 (TyVar
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 129 35 129 36
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 129 35 129 36
                                         , srcInfoPoints = []
                                         }
                                       "g"))
                                 (TyVar
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 129 37 129 38
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 129 37 129 38
                                         , srcInfoPoints = []
                                         }
                                       "m")))))
                        (TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 129 40 129 41
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 129 40 129 41
                                , srcInfoPoints = []
                                }
                              "a")))
                 ])
              (TyApp
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 63
                   , srcInfoPoints = []
                   }
                 (TyApp
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 61
                      , srcInfoPoints = []
                      }
                    (TyApp
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 59
                         , srcInfoPoints = []
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 57
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 55
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 55
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 55
                                     , srcInfoPoints = []
                                     }
                                   "ComposeT")))
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 129 56 129 57
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 129 56 129 57
                                  , srcInfoPoints = []
                                  }
                                "f")))
                       (TyVar
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 129 58 129 59
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 129 58 129 59
                               , srcInfoPoints = []
                               }
                             "g")))
                    (TyVar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 129 60 129 61
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 129 60 129 61
                            , srcInfoPoints = []
                            }
                          "m")))
                 (TyVar
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 129 62 129 63
                      , srcInfoPoints = []
                      }
                    (Ident
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 129 62 129 63
                         , srcInfoPoints = []
                         }
                       "a")))
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 49
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 11
                    , SrcSpan "tests/examples/DerivingVia.hs" 130 20 130 21
                    , SrcSpan "tests/examples/DerivingVia.hs" 130 28 130 29
                    , SrcSpan "tests/examples/DerivingVia.hs" 130 41 130 42
                    , SrcSpan "tests/examples/DerivingVia.hs" 130 48 130 49
                    ]
                }
              (Just
                 (DerivNewtype
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 130 12 130 19
                      , srcInfoPoints = []
                      }))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28
                             , srcInfoPoints = []
                             }
                           "Functor")))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41
                             , srcInfoPoints = []
                             }
                           "Applicative")))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48
                             , srcInfoPoints = []
                             }
                           "Monad")))
              ]
          ]
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 132 1 137 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 132 1 132 9
                , SrcSpan "tests/examples/DerivingVia.hs" 132 84 132 89
                , SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 3
                , SrcSpan "tests/examples/DerivingVia.hs" 134 3 134 3
                , SrcSpan "tests/examples/DerivingVia.hs" 137 1 137 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 132 10 132 83
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxTuple
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 132 10 132 57
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 132 10 132 11
                         , SrcSpan "tests/examples/DerivingVia.hs" 132 23 132 24
                         , SrcSpan "tests/examples/DerivingVia.hs" 132 37 132 38
                         , SrcSpan "tests/examples/DerivingVia.hs" 132 53 132 54
                         , SrcSpan "tests/examples/DerivingVia.hs" 132 55 132 57
                         ]
                     }
                   [ ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 23
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 21
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 21
                               , srcInfoPoints = []
                               }
                             "MonadTrans"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 132 22 132 23
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 132 22 132 23
                                , srcInfoPoints = []
                                }
                              "f")
                       ]
                   , ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 37
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 35
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 35
                               , srcInfoPoints = []
                               }
                             "MonadTrans"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 132 36 132 37
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 132 36 132 37
                                , srcInfoPoints = []
                                }
                              "g")
                       ]
                   , ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 53
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 51
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 51
                               , srcInfoPoints = []
                               }
                             "LiftingMonad"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 132 52 132 53
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 132 52 132 53
                                , srcInfoPoints = []
                                }
                              "g")
                       ]
                   ]))
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 83
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 68
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 68
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 68
                           , srcInfoPoints = []
                           }
                         "MonadTrans")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 132 69 132 83
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 132 69 132 70
                         , SrcSpan "tests/examples/DerivingVia.hs" 132 82 132 83
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 82
                        , srcInfoPoints = []
                        }
                      (TyApp
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 80
                           , srcInfoPoints = []
                           }
                         (TyCon
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 78
                              , srcInfoPoints = []
                              }
                            (UnQual
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 78
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 78
                                    , srcInfoPoints = []
                                    }
                                  "ComposeT")))
                         (TyVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 132 79 132 80
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 132 79 132 80
                                 , srcInfoPoints = []
                                 }
                               "f")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 132 81 132 82
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 132 81 132 82
                              , srcInfoPoints = []
                              }
                            "g"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 51
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 133 8 133 10 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 51
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 133 8 133 10 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 7
                          , srcInfoPoints = []
                          }
                        "lift"
                    ]
                    (TyForall
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 133 11 133 51
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 133 11 133 17
                             , SrcSpan "tests/examples/DerivingVia.hs" 133 19 133 20
                             ]
                         }
                       (Just
                          [ UnkindedVar
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 133 18 133 19
                                , srcInfoPoints = []
                                }
                              (Ident
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 133 18 133 19
                                   , srcInfoPoints = []
                                   }
                                 "m")
                          ])
                       (Just
                          (CxSingle
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 31
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 133 29 133 31 ]
                               }
                             (ClassA
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 31
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 133 29 133 31 ]
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 26
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 26
                                        , srcInfoPoints = []
                                        }
                                      "Monad"))
                                [ TyVar
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 133 27 133 28
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 133 27 133 28
                                         , srcInfoPoints = []
                                         }
                                       "m")
                                ])))
                       (TyInfix
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 133 32 133 51
                            , srcInfoPoints = []
                            }
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 133 32 133 33
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 133 32 133 33
                                  , srcInfoPoints = []
                                  }
                                "m"))
                          (UnpromotedName
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 133 34 133 36
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 133 34 133 36
                                  , srcInfoPoints = []
                                  }
                                (Symbol
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 133 34 133 36
                                     , srcInfoPoints = []
                                     }
                                   "~>")))
                          (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 51
                               , srcInfoPoints = []
                               }
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 49
                                  , srcInfoPoints = []
                                  }
                                (TyApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 47
                                     , srcInfoPoints = []
                                     }
                                   (TyCon
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 45
                                        , srcInfoPoints = []
                                        }
                                      (UnQual
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 45
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 133 37 133 45
                                              , srcInfoPoints = []
                                              }
                                            "ComposeT")))
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 133 46 133 47
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 133 46 133 47
                                           , srcInfoPoints = []
                                           }
                                         "f")))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 133 48 133 49
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 133 48 133 49
                                        , srcInfoPoints = []
                                        }
                                      "g")))
                             (TyVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 133 50 133 51
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 133 50 133 51
                                     , srcInfoPoints = []
                                     }
                                   "m"))))))
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 134 3 135 19
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 134 3 135 19
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 134 3 134 7
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 134 3 134 7
                            , srcInfoPoints = []
                            }
                          "lift"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 134 8 135 19
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 134 8 134 9 ]
                         }
                       (InfixApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 134 10 135 19
                            , srcInfoPoints = []
                            }
                          (InfixApp
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 32
                               , srcInfoPoints = []
                               }
                             (Con
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 18
                                  , srcInfoPoints = []
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 18
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 18
                                        , srcInfoPoints = []
                                        }
                                      "ComposeT")))
                             (QVarOp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 134 19 134 20
                                  , srcInfoPoints = []
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 134 19 134 20
                                     , srcInfoPoints = []
                                     }
                                   (Symbol
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 134 19 134 20
                                        , srcInfoPoints = []
                                        }
                                      ".")))
                             (InfixApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 32
                                  , srcInfoPoints = []
                                  }
                                (Var
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 25
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 25
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 25
                                           , srcInfoPoints = []
                                           }
                                         "lift")))
                                (QVarOp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 134 26 134 27
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 134 26 134 27
                                        , srcInfoPoints = []
                                        }
                                      (Symbol
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 134 26 134 27
                                           , srcInfoPoints = []
                                           }
                                         ".")))
                                (Var
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 134 28 134 32
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 134 28 134 32
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 134 28 134 32
                                           , srcInfoPoints = []
                                           }
                                         "lift")))))
                          (QVarOp
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 135 5 135 7
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 135 5 135 7
                                  , srcInfoPoints = []
                                  }
                                (Symbol
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 135 5 135 7
                                     , srcInfoPoints = []
                                     }
                                   "\\\\")))
                          (App
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 19
                               , srcInfoPoints = []
                               }
                             (App
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 16
                                  , srcInfoPoints = []
                                  }
                                (Var
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 13
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 13
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 13
                                           , srcInfoPoints = []
                                           }
                                         "proof")))
                                (TypeApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 135 14 135 16
                                     , srcInfoPoints =
                                         [ SrcSpan "tests/examples/DerivingVia.hs" 135 14 135 15 ]
                                     }
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 135 15 135 16
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 135 15 135 16
                                           , srcInfoPoints = []
                                           }
                                         "g"))))
                             (TypeApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 135 17 135 19
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 135 17 135 18 ]
                                  }
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 135 18 135 19
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 135 18 135 19
                                        , srcInfoPoints = []
                                        }
                                      "m"))))))
                    Nothing)
             ])
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 137 1 146 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 137 1 137 9
                , SrcSpan "tests/examples/DerivingVia.hs" 137 78 137 83
                , SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 3
                , SrcSpan "tests/examples/DerivingVia.hs" 139 3 139 3
                , SrcSpan "tests/examples/DerivingVia.hs" 146 1 146 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 137 10 137 77
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxTuple
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 137 10 137 53
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 137 10 137 11
                         , SrcSpan "tests/examples/DerivingVia.hs" 137 21 137 22
                         , SrcSpan "tests/examples/DerivingVia.hs" 137 33 137 34
                         , SrcSpan "tests/examples/DerivingVia.hs" 137 49 137 50
                         , SrcSpan "tests/examples/DerivingVia.hs" 137 51 137 53
                         ]
                     }
                   [ ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 21
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 19
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 19
                               , srcInfoPoints = []
                               }
                             "MFunctor"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 137 20 137 21
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 137 20 137 21
                                , srcInfoPoints = []
                                }
                              "f")
                       ]
                   , ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 33
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 31
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 31
                               , srcInfoPoints = []
                               }
                             "MFunctor"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 137 32 137 33
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 137 32 137 33
                                , srcInfoPoints = []
                                }
                              "g")
                       ]
                   , ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 49
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 47
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 47
                               , srcInfoPoints = []
                               }
                             "LiftingMonad"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 137 48 137 49
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 137 48 137 49
                                , srcInfoPoints = []
                                }
                              "g")
                       ]
                   ]))
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 77
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 62
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 62
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 62
                           , srcInfoPoints = []
                           }
                         "MFunctor")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 137 63 137 77
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 137 63 137 64
                         , SrcSpan "tests/examples/DerivingVia.hs" 137 76 137 77
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 76
                        , srcInfoPoints = []
                        }
                      (TyApp
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 74
                           , srcInfoPoints = []
                           }
                         (TyCon
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 72
                              , srcInfoPoints = []
                              }
                            (UnQual
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 72
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 72
                                    , srcInfoPoints = []
                                    }
                                  "ComposeT")))
                         (TyVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 137 73 137 74
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 137 73 137 74
                                 , srcInfoPoints = []
                                 }
                               "f")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 137 75 137 76
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 137 75 137 76
                              , srcInfoPoints = []
                              }
                            "g"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 84
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 138 9 138 11 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 84
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 138 9 138 11 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 8
                          , srcInfoPoints = []
                          }
                        "hoist"
                    ]
                    (TyForall
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 138 12 138 84
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 138 12 138 18
                             , SrcSpan "tests/examples/DerivingVia.hs" 138 23 138 24
                             ]
                         }
                       (Just
                          [ UnkindedVar
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 138 19 138 20
                                , srcInfoPoints = []
                                }
                              (Ident
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 138 19 138 20
                                   , srcInfoPoints = []
                                   }
                                 "m")
                          , UnkindedVar
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 138 21 138 23
                                , srcInfoPoints = []
                                }
                              (Ident
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 138 21 138 23
                                   , srcInfoPoints = []
                                   }
                                 "m'")
                          ])
                       (Just
                          (CxSingle
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 35
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 138 33 138 35 ]
                               }
                             (ClassA
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 35
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 138 33 138 35 ]
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 30
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 30
                                        , srcInfoPoints = []
                                        }
                                      "Monad"))
                                [ TyVar
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 138 31 138 32
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 138 31 138 32
                                         , srcInfoPoints = []
                                         }
                                       "m")
                                ])))
                       (TyFun
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 138 36 138 84
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 138 46 138 48 ]
                            }
                          (TyParen
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 138 36 138 45
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 138 36 138 37
                                   , SrcSpan "tests/examples/DerivingVia.hs" 138 44 138 45
                                   ]
                               }
                             (TyInfix
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 138 37 138 44
                                  , srcInfoPoints = []
                                  }
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 138 37 138 38
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 138 37 138 38
                                        , srcInfoPoints = []
                                        }
                                      "m"))
                                (UnpromotedName
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 138 39 138 41
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 138 39 138 41
                                        , srcInfoPoints = []
                                        }
                                      (Symbol
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 138 39 138 41
                                           , srcInfoPoints = []
                                           }
                                         "~>")))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 138 42 138 44
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 138 42 138 44
                                        , srcInfoPoints = []
                                        }
                                      "m'"))))
                          (TyParen
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 138 49 138 84
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 138 49 138 50
                                   , SrcSpan "tests/examples/DerivingVia.hs" 138 83 138 84
                                   ]
                               }
                             (TyInfix
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 83
                                  , srcInfoPoints = []
                                  }
                                (TyApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 64
                                     , srcInfoPoints = []
                                     }
                                   (TyApp
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 62
                                        , srcInfoPoints = []
                                        }
                                      (TyApp
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 60
                                           , srcInfoPoints = []
                                           }
                                         (TyCon
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 138 50 138 58
                                              , srcInfoPoints = []
                                              }
                                            (UnQual
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 138 50 138 58
                                                 , srcInfoPoints = []
                                                 }
                                               (Ident
                                                  SrcSpanInfo
                                                    { srcInfoSpan =
                                                        SrcSpan
                                                          "tests/examples/DerivingVia.hs"
                                                          138
                                                          50
                                                          138
                                                          58
                                                    , srcInfoPoints = []
                                                    }
                                                  "ComposeT")))
                                         (TyVar
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 138 59 138 60
                                              , srcInfoPoints = []
                                              }
                                            (Ident
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 138 59 138 60
                                                 , srcInfoPoints = []
                                                 }
                                               "f")))
                                      (TyVar
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 138 61 138 62
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 138 61 138 62
                                              , srcInfoPoints = []
                                              }
                                            "g")))
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 138 63 138 64
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 138 63 138 64
                                           , srcInfoPoints = []
                                           }
                                         "m")))
                                (UnpromotedName
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 138 65 138 67
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 138 65 138 67
                                        , srcInfoPoints = []
                                        }
                                      (Symbol
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 138 65 138 67
                                           , srcInfoPoints = []
                                           }
                                         "~>")))
                                (TyApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 138 68 138 83
                                     , srcInfoPoints = []
                                     }
                                   (TyApp
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 138 68 138 80
                                        , srcInfoPoints = []
                                        }
                                      (TyApp
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 138 68 138 78
                                           , srcInfoPoints = []
                                           }
                                         (TyCon
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 138 68 138 76
                                              , srcInfoPoints = []
                                              }
                                            (UnQual
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 138 68 138 76
                                                 , srcInfoPoints = []
                                                 }
                                               (Ident
                                                  SrcSpanInfo
                                                    { srcInfoSpan =
                                                        SrcSpan
                                                          "tests/examples/DerivingVia.hs"
                                                          138
                                                          68
                                                          138
                                                          76
                                                    , srcInfoPoints = []
                                                    }
                                                  "ComposeT")))
                                         (TyVar
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 138 77 138 78
                                              , srcInfoPoints = []
                                              }
                                            (Ident
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 138 77 138 78
                                                 , srcInfoPoints = []
                                                 }
                                               "f")))
                                      (TyVar
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 138 79 138 80
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 138 79 138 80
                                              , srcInfoPoints = []
                                              }
                                            "g")))
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 138 81 138 83
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 138 81 138 83
                                           , srcInfoPoints = []
                                           }
                                         "m'"))))))))
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 139 3 140 19
                   , srcInfoPoints = []
                   }
                 (FunBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 139 3 140 19
                      , srcInfoPoints = []
                      }
                    [ Match
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 139 3 140 19
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 139 3 139 8
                             , srcInfoPoints = []
                             }
                           "hoist")
                        [ PVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 139 9 139 10
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 139 9 139 10
                                 , srcInfoPoints = []
                                 }
                               "f")
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 139 11 140 19
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 139 11 139 12 ]
                             }
                           (InfixApp
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 139 13 140 19
                                , srcInfoPoints = []
                                }
                              (InfixApp
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 139 13 139 53
                                   , srcInfoPoints = []
                                   }
                                 (Con
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 139 13 139 21
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 139 13 139 21
                                         , srcInfoPoints = []
                                         }
                                       (Ident
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 139 13 139 21
                                            , srcInfoPoints = []
                                            }
                                          "ComposeT")))
                                 (QVarOp
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 139 22 139 23
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 139 22 139 23
                                         , srcInfoPoints = []
                                         }
                                       (Symbol
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 139 22 139 23
                                            , srcInfoPoints = []
                                            }
                                          ".")))
                                 (InfixApp
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 139 24 139 53
                                      , srcInfoPoints = []
                                      }
                                    (App
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 139 24 139 39
                                         , srcInfoPoints = []
                                         }
                                       (Var
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 139 24 139 29
                                            , srcInfoPoints = []
                                            }
                                          (UnQual
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 139 24 139 29
                                               , srcInfoPoints = []
                                               }
                                             (Ident
                                                SrcSpanInfo
                                                  { srcInfoSpan =
                                                      SrcSpan
                                                        "tests/examples/DerivingVia.hs"
                                                        139
                                                        24
                                                        139
                                                        29
                                                  , srcInfoPoints = []
                                                  }
                                                "hoist")))
                                       (Paren
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 139 30 139 39
                                            , srcInfoPoints =
                                                [ SrcSpan
                                                    "tests/examples/DerivingVia.hs" 139 30 139 31
                                                , SrcSpan
                                                    "tests/examples/DerivingVia.hs" 139 38 139 39
                                                ]
                                            }
                                          (App
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 139 31 139 38
                                               , srcInfoPoints = []
                                               }
                                             (Var
                                                SrcSpanInfo
                                                  { srcInfoSpan =
                                                      SrcSpan
                                                        "tests/examples/DerivingVia.hs"
                                                        139
                                                        31
                                                        139
                                                        36
                                                  , srcInfoPoints = []
                                                  }
                                                (UnQual
                                                   SrcSpanInfo
                                                     { srcInfoSpan =
                                                         SrcSpan
                                                           "tests/examples/DerivingVia.hs"
                                                           139
                                                           31
                                                           139
                                                           36
                                                     , srcInfoPoints = []
                                                     }
                                                   (Ident
                                                      SrcSpanInfo
                                                        { srcInfoSpan =
                                                            SrcSpan
                                                              "tests/examples/DerivingVia.hs"
                                                              139
                                                              31
                                                              139
                                                              36
                                                        , srcInfoPoints = []
                                                        }
                                                      "hoist")))
                                             (Var
                                                SrcSpanInfo
                                                  { srcInfoSpan =
                                                      SrcSpan
                                                        "tests/examples/DerivingVia.hs"
                                                        139
                                                        37
                                                        139
                                                        38
                                                  , srcInfoPoints = []
                                                  }
                                                (UnQual
                                                   SrcSpanInfo
                                                     { srcInfoSpan =
                                                         SrcSpan
                                                           "tests/examples/DerivingVia.hs"
                                                           139
                                                           37
                                                           139
                                                           38
                                                     , srcInfoPoints = []
                                                     }
                                                   (Ident
                                                      SrcSpanInfo
                                                        { srcInfoSpan =
                                                            SrcSpan
                                                              "tests/examples/DerivingVia.hs"
                                                              139
                                                              37
                                                              139
                                                              38
                                                        , srcInfoPoints = []
                                                        }
                                                      "f"))))))
                                    (QVarOp
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 139 40 139 41
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 139 40 139 41
                                            , srcInfoPoints = []
                                            }
                                          (Symbol
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 139 40 139 41
                                               , srcInfoPoints = []
                                               }
                                             ".")))
                                    (Var
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 139 42 139 53
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 139 42 139 53
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 139 42 139 53
                                               , srcInfoPoints = []
                                               }
                                             "getComposeT")))))
                              (QVarOp
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 140 5 140 7
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 140 5 140 7
                                      , srcInfoPoints = []
                                      }
                                    (Symbol
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 140 5 140 7
                                         , srcInfoPoints = []
                                         }
                                       "\\\\")))
                              (App
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 19
                                   , srcInfoPoints = []
                                   }
                                 (App
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 16
                                      , srcInfoPoints = []
                                      }
                                    (Var
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 13
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 13
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 140 8 140 13
                                               , srcInfoPoints = []
                                               }
                                             "proof")))
                                    (TypeApp
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 140 14 140 16
                                         , srcInfoPoints =
                                             [ SrcSpan "tests/examples/DerivingVia.hs" 140 14 140 15
                                             ]
                                         }
                                       (TyVar
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 140 15 140 16
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 140 15 140 16
                                               , srcInfoPoints = []
                                               }
                                             "g"))))
                                 (TypeApp
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 140 17 140 19
                                      , srcInfoPoints =
                                          [ SrcSpan "tests/examples/DerivingVia.hs" 140 17 140 18 ]
                                      }
                                    (TyVar
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 140 18 140 19
                                         , srcInfoPoints = []
                                         }
                                       (Ident
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 140 18 140 19
                                            , srcInfoPoints = []
                                            }
                                          "m"))))))
                        Nothing
                    ])
             ])
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 146 1 150 22
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 146 13 146 14 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 146 1 146 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 146 9 146 12
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 146 9 146 10
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 146 9 146 10
                     , srcInfoPoints = []
                     }
                   "X"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 146 11 146 12
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 146 11 146 12
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 146 15 146 23
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 146 15 146 23
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 146 15 146 16
                      , srcInfoPoints = []
                      }
                    "X")
                 [ TyTuple
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 146 17 146 23
                       , srcInfoPoints =
                           [ SrcSpan "tests/examples/DerivingVia.hs" 146 17 146 18
                           , SrcSpan "tests/examples/DerivingVia.hs" 146 19 146 20
                           , SrcSpan "tests/examples/DerivingVia.hs" 146 22 146 23
                           ]
                       }
                     Boxed
                     [ TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 146 18 146 19
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 146 18 146 19
                              , srcInfoPoints = []
                              }
                            "a")
                     , TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 146 21 146 22
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 146 21 146 22
                              , srcInfoPoints = []
                              }
                            "a")
                     ]
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 147 3 147 31
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 147 3 147 11
                    , SrcSpan "tests/examples/DerivingVia.hs" 147 12 147 13
                    , SrcSpan "tests/examples/DerivingVia.hs" 147 22 147 23
                    , SrcSpan "tests/examples/DerivingVia.hs" 147 30 147 31
                    ]
                }
              (Just
                 (DerivVia
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 148 8 148 11
                      , srcInfoPoints = []
                      }
                    (TyTuple
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 148 12 148 30
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 148 12 148 13
                             , SrcSpan "tests/examples/DerivingVia.hs" 148 22 148 23
                             , SrcSpan "tests/examples/DerivingVia.hs" 148 29 148 30
                             ]
                         }
                       Boxed
                       [ TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 22
                             , srcInfoPoints = []
                             }
                           (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 20
                                , srcInfoPoints = []
                                }
                              (UnQual
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 20
                                   , srcInfoPoints = []
                                   }
                                 (Ident
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 20
                                      , srcInfoPoints = []
                                      }
                                    "Product")))
                           (TyVar
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 148 21 148 22
                                , srcInfoPoints = []
                                }
                              (Ident
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 148 21 148 22
                                   , srcInfoPoints = []
                                   }
                                 "a"))
                       , TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 29
                             , srcInfoPoints = []
                             }
                           (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 27
                                , srcInfoPoints = []
                                }
                              (UnQual
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 27
                                   , srcInfoPoints = []
                                   }
                                 (Ident
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 27
                                      , srcInfoPoints = []
                                      }
                                    "Sum")))
                           (TyVar
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 148 28 148 29
                                , srcInfoPoints = []
                                }
                              (Ident
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 148 28 148 29
                                   , srcInfoPoints = []
                                   }
                                 "a"))
                       ])))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22
                             , srcInfoPoints = []
                             }
                           "Semigroup")))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30
                             , srcInfoPoints = []
                             }
                           "Monoid")))
              ]
          , Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 150 3 150 22
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 150 3 150 11
                    , SrcSpan "tests/examples/DerivingVia.hs" 150 12 150 13
                    , SrcSpan "tests/examples/DerivingVia.hs" 150 17 150 18
                    , SrcSpan "tests/examples/DerivingVia.hs" 150 21 150 22
                    ]
                }
              (Just
                 (DerivVia
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 151 8 151 11
                      , srcInfoPoints = []
                      }
                    (TyTuple
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 151 12 151 18
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 151 12 151 13
                             , SrcSpan "tests/examples/DerivingVia.hs" 151 14 151 15
                             , SrcSpan "tests/examples/DerivingVia.hs" 151 17 151 18
                             ]
                         }
                       Boxed
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 151 13 151 14
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 151 13 151 14
                                , srcInfoPoints = []
                                }
                              "a")
                       , TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 151 16 151 17
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 151 16 151 17
                                , srcInfoPoints = []
                                }
                              "a")
                       ])))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17
                             , srcInfoPoints = []
                             }
                           "Show")))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21
                             , srcInfoPoints = []
                             }
                           "Eq")))
              ]
          ]
      , ClassDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 157 1 158 18
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 157 1 157 6
                , SrcSpan "tests/examples/DerivingVia.hs" 157 11 157 16
                , SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 3
                , SrcSpan "tests/examples/DerivingVia.hs" 160 1 160 0
                ]
            }
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 157 7 157 10
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 157 7 157 8
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 157 7 157 8
                     , srcInfoPoints = []
                     }
                   "C"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 157 9 157 10
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 157 9 157 10
                     , srcInfoPoints = []
                     }
                   "f")))
          []
          (Just
             [ ClsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 18
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 158 5 158 7 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 18
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 158 5 158 7 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 4
                          , srcInfoPoints = []
                          }
                        "c"
                    ]
                    (TyFun
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 18
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 158 12 158 14 ]
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 11
                            , srcInfoPoints = []
                            }
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 9
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 9
                                  , srcInfoPoints = []
                                  }
                                "f"))
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 158 10 158 11
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 158 10 158 11
                                  , srcInfoPoints = []
                                  }
                                "a")))
                       (TyCon
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 158 15 158 18
                            , srcInfoPoints = []
                            }
                          (UnQual
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 158 15 158 18
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 158 15 158 18
                                  , srcInfoPoints = []
                                  }
                                "Int")))))
             ])
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 160 1 160 26
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 160 16 160 17 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 160 1 160 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 15
               , srcInfoPoints = []
               }
             (DHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 13
                  , srcInfoPoints = []
                  }
                (DHead
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 11
                     , srcInfoPoints = []
                     }
                   (Ident
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 11
                        , srcInfoPoints = []
                        }
                      "X2"))
                (UnkindedVar
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 160 12 160 13
                     , srcInfoPoints = []
                     }
                   (Ident
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 160 12 160 13
                        , srcInfoPoints = []
                        }
                      "f")))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 160 14 160 15
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 160 14 160 15
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 160 18 160 26
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 160 18 160 26
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 160 18 160 20
                      , srcInfoPoints = []
                      }
                    "X2")
                 [ TyParen
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 160 21 160 26
                       , srcInfoPoints =
                           [ SrcSpan "tests/examples/DerivingVia.hs" 160 21 160 22
                           , SrcSpan "tests/examples/DerivingVia.hs" 160 25 160 26
                           ]
                       }
                     (TyApp
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 160 22 160 25
                          , srcInfoPoints = []
                          }
                        (TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 160 22 160 23
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 160 22 160 23
                                , srcInfoPoints = []
                                }
                              "f"))
                        (TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 160 24 160 25
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 160 24 160 25
                                , srcInfoPoints = []
                                }
                              "a")))
                 ])
          ]
          []
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 162 1 165 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 162 1 162 9
                , SrcSpan "tests/examples/DerivingVia.hs" 162 19 162 24
                , SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 3
                , SrcSpan "tests/examples/DerivingVia.hs" 165 1 165 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 18
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 18
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 11
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 11
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 11
                           , srcInfoPoints = []
                           }
                         "C")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 162 12 162 18
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 162 12 162 13
                         , SrcSpan "tests/examples/DerivingVia.hs" 162 17 162 18
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 17
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 15
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 15
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 15
                                 , srcInfoPoints = []
                                 }
                               "X2")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 162 16 162 17
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 162 16 162 17
                              , srcInfoPoints = []
                              }
                            "f"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 14
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 14
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 4
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 4
                            , srcInfoPoints = []
                            }
                          "c"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 163 5 163 14
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 163 5 163 6 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 14
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 12
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 12
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 12
                                     , srcInfoPoints = []
                                     }
                                   "const")))
                          (Lit
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 163 13 163 14
                               , srcInfoPoints = []
                               }
                             (Int
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 163 13 163 14
                                  , srcInfoPoints = []
                                  }
                                0
                                "0"))))
                    Nothing)
             ])
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 165 1 165 35
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 165 1 165 9
                , SrcSpan "tests/examples/DerivingVia.hs" 165 22 165 30
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 165 10 165 13
                  , srcInfoPoints = []
                  }
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 165 14 165 21
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 165 14 165 15
                         , SrcSpan "tests/examples/DerivingVia.hs" 165 20 165 21
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 20
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 17
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 17
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 17
                                 , srcInfoPoints = []
                                 }
                               "X2")))
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 165 18 165 20
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 165 18 165 20
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 165 18 165 20
                                 , srcInfoPoints = []
                                 }
                               "IO")))))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 35
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 35
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 32
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 32
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 32
                           , srcInfoPoints = []
                           }
                         "C")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 165 33 165 35
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 165 33 165 35
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 165 33 165 35
                           , srcInfoPoints = []
                           }
                         "IO")))))
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 171 1 171 46
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 171 14 171 15 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 171 1 171 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 171 9 171 13
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 171 9 171 11
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 171 9 171 11
                     , srcInfoPoints = []
                     }
                   "P0"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 171 12 171 13
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 171 12 171 13
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 171 16 171 20
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 171 16 171 20
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 171 16 171 18
                      , srcInfoPoints = []
                      }
                    "P0")
                 [ TyVar
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 171 19 171 20
                       , srcInfoPoints = []
                       }
                     (Ident
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 171 19 171 20
                          , srcInfoPoints = []
                          }
                        "a")
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 171 33 171 46
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 171 33 171 41 ]
                }
              (Just
                 (DerivVia
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 171 47 171 50
                      , srcInfoPoints = []
                      }
                    (TyVar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 171 51 171 52
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 171 51 171 52
                            , srcInfoPoints = []
                            }
                          "a"))))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46
                             , srcInfoPoints = []
                             }
                           "Show")))
              ]
          ]
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 172 1 172 46
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 172 14 172 15 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 172 1 172 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 172 9 172 13
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 172 9 172 11
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 172 9 172 11
                     , srcInfoPoints = []
                     }
                   "P1"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 172 12 172 13
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 172 12 172 13
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 172 16 172 22
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 172 16 172 22
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 172 16 172 18
                      , srcInfoPoints = []
                      }
                    "P1")
                 [ TyList
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 172 19 172 22
                       , srcInfoPoints =
                           [ SrcSpan "tests/examples/DerivingVia.hs" 172 19 172 20
                           , SrcSpan "tests/examples/DerivingVia.hs" 172 21 172 22
                           ]
                       }
                     (TyVar
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 172 20 172 21
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 172 20 172 21
                             , srcInfoPoints = []
                             }
                           "a"))
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 172 33 172 46
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 172 33 172 41 ]
                }
              (Just
                 (DerivVia
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 172 47 172 50
                      , srcInfoPoints = []
                      }
                    (TyList
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 172 51 172 54
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 172 51 172 52
                             , SrcSpan "tests/examples/DerivingVia.hs" 172 53 172 54
                             ]
                         }
                       (TyVar
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 172 52 172 53
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 172 52 172 53
                               , srcInfoPoints = []
                               }
                             "a")))))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46
                             , srcInfoPoints = []
                             }
                           "Show")))
              ]
          ]
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 173 1 173 46
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 173 14 173 15 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 173 1 173 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 173 9 173 13
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 173 9 173 11
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 173 9 173 11
                     , srcInfoPoints = []
                     }
                   "P2"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 173 12 173 13
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 173 12 173 13
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 173 16 173 25
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 173 16 173 25
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 173 16 173 18
                      , srcInfoPoints = []
                      }
                    "P2")
                 [ TyTuple
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 173 19 173 25
                       , srcInfoPoints =
                           [ SrcSpan "tests/examples/DerivingVia.hs" 173 19 173 20
                           , SrcSpan "tests/examples/DerivingVia.hs" 173 21 173 22
                           , SrcSpan "tests/examples/DerivingVia.hs" 173 24 173 25
                           ]
                       }
                     Boxed
                     [ TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 173 20 173 21
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 173 20 173 21
                              , srcInfoPoints = []
                              }
                            "a")
                     , TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 173 23 173 24
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 173 23 173 24
                              , srcInfoPoints = []
                              }
                            "a")
                     ]
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 173 33 173 46
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 173 33 173 41 ]
                }
              (Just
                 (DerivVia
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 173 47 173 50
                      , srcInfoPoints = []
                      }
                    (TyTuple
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 173 51 173 57
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 173 51 173 52
                             , SrcSpan "tests/examples/DerivingVia.hs" 173 53 173 54
                             , SrcSpan "tests/examples/DerivingVia.hs" 173 56 173 57
                             ]
                         }
                       Boxed
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 173 52 173 53
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 173 52 173 53
                                , srcInfoPoints = []
                                }
                              "a")
                       , TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 173 55 173 56
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 173 55 173 56
                                , srcInfoPoints = []
                                }
                              "a")
                       ])))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46
                             , srcInfoPoints = []
                             }
                           "Show")))
              ]
          ]
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 174 1 174 46
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 174 14 174 15 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 174 1 174 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 174 9 174 13
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 174 9 174 11
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 174 9 174 11
                     , srcInfoPoints = []
                     }
                   "P3"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 174 12 174 13
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 174 12 174 13
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 174 16 174 28
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 174 16 174 28
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 174 16 174 18
                      , srcInfoPoints = []
                      }
                    "P3")
                 [ TyParen
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 174 19 174 28
                       , srcInfoPoints =
                           [ SrcSpan "tests/examples/DerivingVia.hs" 174 19 174 20
                           , SrcSpan "tests/examples/DerivingVia.hs" 174 27 174 28
                           ]
                       }
                     (TyApp
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 27
                          , srcInfoPoints = []
                          }
                        (TyCon
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 25
                             , srcInfoPoints = []
                             }
                           (UnQual
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 25
                                , srcInfoPoints = []
                                }
                              (Ident
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 25
                                   , srcInfoPoints = []
                                   }
                                 "Maybe")))
                        (TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 174 26 174 27
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 174 26 174 27
                                , srcInfoPoints = []
                                }
                              "a")))
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 174 33 174 46
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 174 33 174 41 ]
                }
              (Just
                 (DerivVia
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 174 47 174 50
                      , srcInfoPoints = []
                      }
                    (TyParen
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 174 51 174 60
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 174 51 174 52
                             , SrcSpan "tests/examples/DerivingVia.hs" 174 59 174 60
                             ]
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 59
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 57
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 57
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 57
                                     , srcInfoPoints = []
                                     }
                                   "First")))
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 174 58 174 59
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 174 58 174 59
                                  , srcInfoPoints = []
                                  }
                                "a"))))))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46
                             , srcInfoPoints = []
                             }
                           "Show")))
              ]
          ]
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 175 1 175 46
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 175 14 175 15 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 175 1 175 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 175 9 175 13
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 175 9 175 11
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 175 9 175 11
                     , srcInfoPoints = []
                     }
                   "P4"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 175 12 175 13
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 175 12 175 13
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 175 16 175 28
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 175 16 175 28
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 175 16 175 18
                      , srcInfoPoints = []
                      }
                    "P4")
                 [ TyParen
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 175 19 175 28
                       , srcInfoPoints =
                           [ SrcSpan "tests/examples/DerivingVia.hs" 175 19 175 20
                           , SrcSpan "tests/examples/DerivingVia.hs" 175 27 175 28
                           ]
                       }
                     (TyApp
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 27
                          , srcInfoPoints = []
                          }
                        (TyCon
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 25
                             , srcInfoPoints = []
                             }
                           (UnQual
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 25
                                , srcInfoPoints = []
                                }
                              (Ident
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 25
                                   , srcInfoPoints = []
                                   }
                                 "Maybe")))
                        (TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 175 26 175 27
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 175 26 175 27
                                , srcInfoPoints = []
                                }
                              "a")))
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 175 33 175 46
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 175 33 175 41 ]
                }
              (Just
                 (DerivVia
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 175 47 175 50
                      , srcInfoPoints = []
                      }
                    (TyParen
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 175 51 175 62
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 175 51 175 52
                             , SrcSpan "tests/examples/DerivingVia.hs" 175 61 175 62
                             ]
                         }
                       (TyInfix
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 61
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 57
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 57
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 57
                                     , srcInfoPoints = []
                                     }
                                   "First")))
                          (UnpromotedName
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 175 58 175 59
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 175 58 175 59
                                  , srcInfoPoints = []
                                  }
                                (Symbol
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 175 58 175 59
                                     , srcInfoPoints = []
                                     }
                                   "$")))
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 175 60 175 61
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 175 60 175 61
                                  , srcInfoPoints = []
                                  }
                                "a"))))))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46
                             , srcInfoPoints = []
                             }
                           "Show")))
              ]
          ]
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 176 1 176 46
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 176 14 176 15 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 176 1 176 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 176 9 176 13
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 176 9 176 11
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 176 9 176 11
                     , srcInfoPoints = []
                     }
                   "P5"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 176 12 176 13
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 176 12 176 13
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 176 16 176 20
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 176 16 176 20
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 176 16 176 18
                      , srcInfoPoints = []
                      }
                    "P5")
                 [ TyVar
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 176 19 176 20
                       , srcInfoPoints = []
                       }
                     (Ident
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 176 19 176 20
                          , srcInfoPoints = []
                          }
                        "a")
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 176 33 176 46
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 176 33 176 41 ]
                }
              (Just
                 (DerivVia
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 176 47 176 50
                      , srcInfoPoints = []
                      }
                    (TyParen
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 176 51 176 65
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 176 51 176 52
                             , SrcSpan "tests/examples/DerivingVia.hs" 176 64 176 65
                             ]
                         }
                       (TyInfix
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 64
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 60
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 60
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 60
                                     , srcInfoPoints = []
                                     }
                                   "Identity")))
                          (UnpromotedName
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 176 61 176 62
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 176 61 176 62
                                  , srcInfoPoints = []
                                  }
                                (Symbol
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 176 61 176 62
                                     , srcInfoPoints = []
                                     }
                                   "$")))
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 176 63 176 64
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 176 63 176 64
                                  , srcInfoPoints = []
                                  }
                                "a"))))))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46
                             , srcInfoPoints = []
                             }
                           "Show")))
              ]
          ]
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 177 1 177 46
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 177 14 177 15 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 177 1 177 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 177 9 177 13
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 177 9 177 11
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 177 9 177 11
                     , srcInfoPoints = []
                     }
                   "P6"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 177 12 177 13
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 177 12 177 13
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 177 16 177 22
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 177 16 177 22
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 177 16 177 18
                      , srcInfoPoints = []
                      }
                    "P6")
                 [ TyList
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 177 19 177 22
                       , srcInfoPoints =
                           [ SrcSpan "tests/examples/DerivingVia.hs" 177 19 177 20
                           , SrcSpan "tests/examples/DerivingVia.hs" 177 21 177 22
                           ]
                       }
                     (TyVar
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 177 20 177 21
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 177 20 177 21
                             , srcInfoPoints = []
                             }
                           "a"))
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 177 33 177 46
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 177 33 177 41 ]
                }
              (Just
                 (DerivVia
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 177 47 177 50
                      , srcInfoPoints = []
                      }
                    (TyParen
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 177 51 177 59
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 177 51 177 52
                             , SrcSpan "tests/examples/DerivingVia.hs" 177 58 177 59
                             ]
                         }
                       (TyInfix
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 58
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 54
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 53
                                   , SrcSpan "tests/examples/DerivingVia.hs" 177 53 177 54
                                   ]
                               }
                             (Special
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 54
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 53
                                      , SrcSpan "tests/examples/DerivingVia.hs" 177 53 177 54
                                      ]
                                  }
                                (ListCon
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 54
                                     , srcInfoPoints =
                                         [ SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 53
                                         , SrcSpan "tests/examples/DerivingVia.hs" 177 53 177 54
                                         ]
                                     })))
                          (UnpromotedName
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 177 55 177 56
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 177 55 177 56
                                  , srcInfoPoints = []
                                  }
                                (Symbol
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 177 55 177 56
                                     , srcInfoPoints = []
                                     }
                                   "$")))
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 177 57 177 58
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 177 57 177 58
                                  , srcInfoPoints = []
                                  }
                                "a"))))))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46
                             , srcInfoPoints = []
                             }
                           "Show")))
              ]
          ]
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 178 1 178 46
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 178 14 178 15 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 178 1 178 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 178 9 178 13
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 178 9 178 11
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 178 9 178 11
                     , srcInfoPoints = []
                     }
                   "P7"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 178 12 178 13
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 178 12 178 13
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 178 16 178 25
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 178 16 178 25
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 178 16 178 18
                      , srcInfoPoints = []
                      }
                    "P7")
                 [ TyTuple
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 178 19 178 25
                       , srcInfoPoints =
                           [ SrcSpan "tests/examples/DerivingVia.hs" 178 19 178 20
                           , SrcSpan "tests/examples/DerivingVia.hs" 178 21 178 22
                           , SrcSpan "tests/examples/DerivingVia.hs" 178 24 178 25
                           ]
                       }
                     Boxed
                     [ TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 178 20 178 21
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 178 20 178 21
                              , srcInfoPoints = []
                              }
                            "a")
                     , TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 178 23 178 24
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 178 23 178 24
                              , srcInfoPoints = []
                              }
                            "a")
                     ]
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 178 33 178 46
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 178 33 178 41 ]
                }
              (Just
                 (DerivVia
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 178 47 178 50
                      , srcInfoPoints = []
                      }
                    (TyParen
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 178 51 178 70
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 178 51 178 52
                             , SrcSpan "tests/examples/DerivingVia.hs" 178 69 178 70
                             ]
                         }
                       (TyInfix
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 69
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 60
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 60
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 60
                                     , srcInfoPoints = []
                                     }
                                   "Identity")))
                          (UnpromotedName
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 178 61 178 62
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 178 61 178 62
                                  , srcInfoPoints = []
                                  }
                                (Symbol
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 178 61 178 62
                                     , srcInfoPoints = []
                                     }
                                   "$")))
                          (TyTuple
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 178 63 178 69
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 178 63 178 64
                                   , SrcSpan "tests/examples/DerivingVia.hs" 178 65 178 66
                                   , SrcSpan "tests/examples/DerivingVia.hs" 178 68 178 69
                                   ]
                               }
                             Boxed
                             [ TyVar
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 178 64 178 65
                                   , srcInfoPoints = []
                                   }
                                 (Ident
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 178 64 178 65
                                      , srcInfoPoints = []
                                      }
                                    "a")
                             , TyVar
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 178 67 178 68
                                   , srcInfoPoints = []
                                   }
                                 (Ident
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 178 67 178 68
                                      , srcInfoPoints = []
                                      }
                                    "a")
                             ])))))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46
                             , srcInfoPoints = []
                             }
                           "Show")))
              ]
          ]
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 179 1 179 49
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 179 14 179 15 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 179 1 179 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 179 9 179 13
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 179 9 179 11
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 179 9 179 11
                     , srcInfoPoints = []
                     }
                   "P8"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 179 12 179 13
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 179 12 179 13
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 179 16 179 32
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 179 16 179 32
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 179 16 179 18
                      , srcInfoPoints = []
                      }
                    "P8")
                 [ TyParen
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 179 19 179 32
                       , srcInfoPoints =
                           [ SrcSpan "tests/examples/DerivingVia.hs" 179 19 179 20
                           , SrcSpan "tests/examples/DerivingVia.hs" 179 31 179 32
                           ]
                       }
                     (TyApp
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 31
                          , srcInfoPoints = []
                          }
                        (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 29
                             , srcInfoPoints = []
                             }
                           (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 26
                                , srcInfoPoints = []
                                }
                              (UnQual
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 26
                                   , srcInfoPoints = []
                                   }
                                 (Ident
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 26
                                      , srcInfoPoints = []
                                      }
                                    "Either")))
                           (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 29
                                , srcInfoPoints =
                                    [ SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 28
                                    , SrcSpan "tests/examples/DerivingVia.hs" 179 28 179 29
                                    ]
                                }
                              (Special
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 29
                                   , srcInfoPoints =
                                       [ SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 28
                                       , SrcSpan "tests/examples/DerivingVia.hs" 179 28 179 29
                                       ]
                                   }
                                 (UnitCon
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 29
                                      , srcInfoPoints =
                                          [ SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 28
                                          , SrcSpan "tests/examples/DerivingVia.hs" 179 28 179 29
                                          ]
                                      }))))
                        (TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 179 30 179 31
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 179 30 179 31
                                , srcInfoPoints = []
                                }
                              "a")))
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 179 33 179 49
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 179 33 179 41 ]
                }
              (Just
                 (DerivVia
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 179 50 179 53
                      , srcInfoPoints = []
                      }
                    (TyParen
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 179 54 179 71
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 179 54 179 55
                             , SrcSpan "tests/examples/DerivingVia.hs" 179 70 179 71
                             ]
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 70
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 58
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 56
                                   , SrcSpan "tests/examples/DerivingVia.hs" 179 56 179 57
                                   , SrcSpan "tests/examples/DerivingVia.hs" 179 57 179 58
                                   ]
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 58
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 56
                                      , SrcSpan "tests/examples/DerivingVia.hs" 179 56 179 57
                                      , SrcSpan "tests/examples/DerivingVia.hs" 179 57 179 58
                                      ]
                                  }
                                (Symbol
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 179 56 179 57
                                     , srcInfoPoints = []
                                     }
                                   "$")))
                          (TyParen
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 179 59 179 70
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 179 59 179 60
                                   , SrcSpan "tests/examples/DerivingVia.hs" 179 69 179 70
                                   ]
                               }
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 69
                                  , srcInfoPoints = []
                                  }
                                (TyCon
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 66
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 66
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 66
                                           , srcInfoPoints = []
                                           }
                                         "Either")))
                                (TyCon
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 69
                                     , srcInfoPoints =
                                         [ SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 68
                                         , SrcSpan "tests/examples/DerivingVia.hs" 179 68 179 69
                                         ]
                                     }
                                   (Special
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 69
                                        , srcInfoPoints =
                                            [ SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 68
                                            , SrcSpan "tests/examples/DerivingVia.hs" 179 68 179 69
                                            ]
                                        }
                                      (UnitCon
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 69
                                           , srcInfoPoints =
                                               [ SrcSpan
                                                   "tests/examples/DerivingVia.hs" 179 67 179 68
                                               , SrcSpan
                                                   "tests/examples/DerivingVia.hs" 179 68 179 69
                                               ]
                                           })))))))))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49
                             , srcInfoPoints = []
                             }
                           "Functor")))
              ]
          ]
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 181 1 181 73
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 181 15 181 16 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 181 1 181 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 14
               , srcInfoPoints = []
               }
             (DHInfix
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 14
                  , srcInfoPoints = []
                  }
                (UnkindedVar
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 10
                     , srcInfoPoints = []
                     }
                   (Ident
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 10
                        , srcInfoPoints = []
                        }
                      "f"))
                (Symbol
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 181 11 181 12
                     , srcInfoPoints = []
                     }
                   "$"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 181 13 181 14
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 181 13 181 14
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 181 17 181 26
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 181 17 181 26
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 181 17 181 20
                      , srcInfoPoints = []
                      }
                    "APP")
                 [ TyParen
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 181 21 181 26
                       , srcInfoPoints =
                           [ SrcSpan "tests/examples/DerivingVia.hs" 181 21 181 22
                           , SrcSpan "tests/examples/DerivingVia.hs" 181 25 181 26
                           ]
                       }
                     (TyApp
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 181 22 181 25
                          , srcInfoPoints = []
                          }
                        (TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 181 22 181 23
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 181 22 181 23
                                , srcInfoPoints = []
                                }
                              "f"))
                        (TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 181 24 181 25
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 181 24 181 25
                                , srcInfoPoints = []
                                }
                              "a")))
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 181 27 181 48
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 181 27 181 35 ]
                }
              (Just
                 (DerivNewtype
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 181 36 181 43
                      , srcInfoPoints = []
                      }))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48
                             , srcInfoPoints = []
                             }
                           "Show")))
              ]
          , Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 181 49 181 73
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 181 49 181 57 ]
                }
              (Just
                 (DerivNewtype
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 181 58 181 65
                      , srcInfoPoints = []
                      }))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73
                             , srcInfoPoints = []
                             }
                           "Functor")))
              ]
          ]
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 190 1 191 34
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 190 29 190 30 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 190 1 190 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 28
               , srcInfoPoints = []
               }
             (DHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 26
                  , srcInfoPoints = []
                  }
                (DHead
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 24
                     , srcInfoPoints = []
                     }
                   (Ident
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 24
                        , srcInfoPoints = []
                        }
                      "WrapApplicative"))
                (UnkindedVar
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 190 25 190 26
                     , srcInfoPoints = []
                     }
                   (Ident
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 190 25 190 26
                        , srcInfoPoints = []
                        }
                      "f")))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 190 27 190 28
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 190 27 190 28
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 190 31 190 55
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 190 31 190 55
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 190 31 190 49
                      , srcInfoPoints = []
                      }
                    "WrappedApplicative")
                 [ TyParen
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 190 50 190 55
                       , srcInfoPoints =
                           [ SrcSpan "tests/examples/DerivingVia.hs" 190 50 190 51
                           , SrcSpan "tests/examples/DerivingVia.hs" 190 54 190 55
                           ]
                       }
                     (TyApp
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 190 51 190 54
                          , srcInfoPoints = []
                          }
                        (TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 190 51 190 52
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 190 51 190 52
                                , srcInfoPoints = []
                                }
                              "f"))
                        (TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 190 53 190 54
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 190 53 190 54
                                , srcInfoPoints = []
                                }
                              "a")))
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 191 3 191 34
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 191 3 191 11
                    , SrcSpan "tests/examples/DerivingVia.hs" 191 12 191 13
                    , SrcSpan "tests/examples/DerivingVia.hs" 191 20 191 21
                    , SrcSpan "tests/examples/DerivingVia.hs" 191 33 191 34
                    ]
                }
              Nothing
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20
                             , srcInfoPoints = []
                             }
                           "Functor")))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33
                             , srcInfoPoints = []
                             }
                           "Applicative")))
              ]
          ]
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 193 1 201 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 193 1 193 9
                , SrcSpan "tests/examples/DerivingVia.hs" 193 62 193 67
                , SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 3
                , SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 3
                , SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 3
                , SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 3
                , SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 3
                , SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 3
                , SrcSpan "tests/examples/DerivingVia.hs" 201 1 201 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 193 10 193 61
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxTuple
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 193 10 193 35
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 193 10 193 11
                         , SrcSpan "tests/examples/DerivingVia.hs" 193 24 193 25
                         , SrcSpan "tests/examples/DerivingVia.hs" 193 31 193 32
                         , SrcSpan "tests/examples/DerivingVia.hs" 193 33 193 35
                         ]
                     }
                   [ ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 24
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 22
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 22
                               , srcInfoPoints = []
                               }
                             "Applicative"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 193 23 193 24
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 193 23 193 24
                                , srcInfoPoints = []
                                }
                              "f")
                       ]
                   , ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 31
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 29
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 29
                               , srcInfoPoints = []
                               }
                             "Num"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 193 30 193 31
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 193 30 193 31
                                , srcInfoPoints = []
                                }
                              "a")
                       ]
                   ]))
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 61
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 39
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 39
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 39
                           , srcInfoPoints = []
                           }
                         "Num")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 193 40 193 61
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 193 40 193 41
                         , SrcSpan "tests/examples/DerivingVia.hs" 193 60 193 61
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 60
                        , srcInfoPoints = []
                        }
                      (TyApp
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 58
                           , srcInfoPoints = []
                           }
                         (TyCon
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 56
                              , srcInfoPoints = []
                              }
                            (UnQual
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 56
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 56
                                    , srcInfoPoints = []
                                    }
                                  "WrapApplicative")))
                         (TyVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 193 57 193 58
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 193 57 193 58
                                 , srcInfoPoints = []
                                 }
                               "f")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 193 59 193 60
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 193 59 193 60
                              , srcInfoPoints = []
                              }
                            "a"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 27
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 27
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 6
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 4
                             , SrcSpan "tests/examples/DerivingVia.hs" 194 4 194 5
                             , SrcSpan "tests/examples/DerivingVia.hs" 194 5 194 6
                             ]
                         }
                       (Symbol
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 194 4 194 5
                            , srcInfoPoints = []
                            }
                          "+"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 194 15 194 27
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 194 15 194 16 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 27
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 23
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 23
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 23
                                     , srcInfoPoints = []
                                     }
                                   "liftA2")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 27
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 25
                                   , SrcSpan "tests/examples/DerivingVia.hs" 194 25 194 26
                                   , SrcSpan "tests/examples/DerivingVia.hs" 194 26 194 27
                                   ]
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 27
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 25
                                      , SrcSpan "tests/examples/DerivingVia.hs" 194 25 194 26
                                      , SrcSpan "tests/examples/DerivingVia.hs" 194 26 194 27
                                      ]
                                  }
                                (Symbol
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 194 25 194 26
                                     , srcInfoPoints = []
                                     }
                                   "+")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 27
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 27
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 6
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 4
                             , SrcSpan "tests/examples/DerivingVia.hs" 195 4 195 5
                             , SrcSpan "tests/examples/DerivingVia.hs" 195 5 195 6
                             ]
                         }
                       (Symbol
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 195 4 195 5
                            , srcInfoPoints = []
                            }
                          "*"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 195 15 195 27
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 195 15 195 16 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 27
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 23
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 23
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 23
                                     , srcInfoPoints = []
                                     }
                                   "liftA2")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 27
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 25
                                   , SrcSpan "tests/examples/DerivingVia.hs" 195 25 195 26
                                   , SrcSpan "tests/examples/DerivingVia.hs" 195 26 195 27
                                   ]
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 27
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 25
                                      , SrcSpan "tests/examples/DerivingVia.hs" 195 25 195 26
                                      , SrcSpan "tests/examples/DerivingVia.hs" 195 26 195 27
                                      ]
                                  }
                                (Symbol
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 195 25 195 26
                                     , srcInfoPoints = []
                                     }
                                   "*")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 28
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 28
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 9
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 9
                            , srcInfoPoints = []
                            }
                          "negate"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 196 15 196 28
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 196 15 196 16 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 28
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 21
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 21
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 21
                                     , srcInfoPoints = []
                                     }
                                   "fmap")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 196 22 196 28
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 196 22 196 28
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 196 22 196 28
                                     , srcInfoPoints = []
                                     }
                                   "negate")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 35
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 35
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 14
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 14
                            , srcInfoPoints = []
                            }
                          "fromInteger"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 197 15 197 35
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 197 15 197 16 ]
                         }
                       (InfixApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 35
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 21
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 21
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 21
                                     , srcInfoPoints = []
                                     }
                                   "pure")))
                          (QVarOp
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 197 22 197 23
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 197 22 197 23
                                  , srcInfoPoints = []
                                  }
                                (Symbol
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 197 22 197 23
                                     , srcInfoPoints = []
                                     }
                                   ".")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 197 24 197 35
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 197 24 197 35
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 197 24 197 35
                                     , srcInfoPoints = []
                                     }
                                   "fromInteger")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 25
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 25
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 6
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 6
                            , srcInfoPoints = []
                            }
                          "abs"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 198 15 198 25
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 198 15 198 16 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 25
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 21
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 21
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 21
                                     , srcInfoPoints = []
                                     }
                                   "fmap")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 198 22 198 25
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 198 22 198 25
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 198 22 198 25
                                     , srcInfoPoints = []
                                     }
                                   "abs")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 28
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 28
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 9
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 9
                            , srcInfoPoints = []
                            }
                          "signum"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 199 15 199 28
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 199 15 199 16 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 28
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 21
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 21
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 21
                                     , srcInfoPoints = []
                                     }
                                   "fmap")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 199 22 199 28
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 199 22 199 28
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 199 22 199 28
                                     , srcInfoPoints = []
                                     }
                                   "signum")))))
                    Nothing)
             ])
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 201 1 205 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 201 1 201 9
                , SrcSpan "tests/examples/DerivingVia.hs" 201 76 201 81
                , SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 3
                , SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 3
                , SrcSpan "tests/examples/DerivingVia.hs" 205 1 205 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 201 10 201 75
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxTuple
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 201 10 201 42
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 201 10 201 11
                         , SrcSpan "tests/examples/DerivingVia.hs" 201 24 201 25
                         , SrcSpan "tests/examples/DerivingVia.hs" 201 38 201 39
                         , SrcSpan "tests/examples/DerivingVia.hs" 201 40 201 42
                         ]
                     }
                   [ ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 24
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 22
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 22
                               , srcInfoPoints = []
                               }
                             "Applicative"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 201 23 201 24
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 201 23 201 24
                                , srcInfoPoints = []
                                }
                              "f")
                       ]
                   , ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 38
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 36
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 36
                               , srcInfoPoints = []
                               }
                             "Fractional"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 201 37 201 38
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 201 37 201 38
                                , srcInfoPoints = []
                                }
                              "a")
                       ]
                   ]))
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 75
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 53
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 53
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 53
                           , srcInfoPoints = []
                           }
                         "Fractional")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 201 54 201 75
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 201 54 201 55
                         , SrcSpan "tests/examples/DerivingVia.hs" 201 74 201 75
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 74
                        , srcInfoPoints = []
                        }
                      (TyApp
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 72
                           , srcInfoPoints = []
                           }
                         (TyCon
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 70
                              , srcInfoPoints = []
                              }
                            (UnQual
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 70
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 70
                                    , srcInfoPoints = []
                                    }
                                  "WrapApplicative")))
                         (TyVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 201 71 201 72
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 201 71 201 72
                                 , srcInfoPoints = []
                                 }
                               "f")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 201 73 201 74
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 201 73 201 74
                              , srcInfoPoints = []
                              }
                            "a"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 28
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 28
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 8
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 8
                            , srcInfoPoints = []
                            }
                          "recip"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 202 16 202 28
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 202 16 202 17 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 28
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 22
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 22
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 22
                                     , srcInfoPoints = []
                                     }
                                   "fmap")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 202 23 202 28
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 202 23 202 28
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 202 23 202 28
                                     , srcInfoPoints = []
                                     }
                                   "recip")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 37
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 37
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 15
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 15
                            , srcInfoPoints = []
                            }
                          "fromRational"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 203 16 203 37
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 203 16 203 17 ]
                         }
                       (InfixApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 37
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 22
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 22
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 22
                                     , srcInfoPoints = []
                                     }
                                   "pure")))
                          (QVarOp
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 203 23 203 24
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 203 23 203 24
                                  , srcInfoPoints = []
                                  }
                                (Symbol
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 203 23 203 24
                                     , srcInfoPoints = []
                                     }
                                   ".")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 203 25 203 37
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 203 25 203 37
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 203 25 203 37
                                     , srcInfoPoints = []
                                     }
                                   "fromRational")))))
                    Nothing)
             ])
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 205 1 221 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 205 1 205 9
                , SrcSpan "tests/examples/DerivingVia.hs" 205 72 205 77
                , SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 3
                , SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 3
                , SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 3
                , SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 3
                , SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 3
                , SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 3
                , SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 3
                , SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 3
                , SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 3
                , SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 3
                , SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 3
                , SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 3
                , SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 3
                , SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 3
                , SrcSpan "tests/examples/DerivingVia.hs" 221 1 221 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 205 10 205 71
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxTuple
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 205 10 205 40
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 205 10 205 11
                         , SrcSpan "tests/examples/DerivingVia.hs" 205 24 205 25
                         , SrcSpan "tests/examples/DerivingVia.hs" 205 36 205 37
                         , SrcSpan "tests/examples/DerivingVia.hs" 205 38 205 40
                         ]
                     }
                   [ ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 24
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 22
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 22
                               , srcInfoPoints = []
                               }
                             "Applicative"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 205 23 205 24
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 205 23 205 24
                                , srcInfoPoints = []
                                }
                              "f")
                       ]
                   , ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 36
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 34
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 34
                               , srcInfoPoints = []
                               }
                             "Floating"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 205 35 205 36
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 205 35 205 36
                                , srcInfoPoints = []
                                }
                              "a")
                       ]
                   ]))
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 71
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 49
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 49
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 49
                           , srcInfoPoints = []
                           }
                         "Floating")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 205 50 205 71
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 205 50 205 51
                         , SrcSpan "tests/examples/DerivingVia.hs" 205 70 205 71
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 70
                        , srcInfoPoints = []
                        }
                      (TyApp
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 68
                           , srcInfoPoints = []
                           }
                         (TyCon
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 66
                              , srcInfoPoints = []
                              }
                            (UnQual
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 66
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 66
                                    , srcInfoPoints = []
                                    }
                                  "WrapApplicative")))
                         (TyVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 205 67 205 68
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 205 67 205 68
                                 , srcInfoPoints = []
                                 }
                               "f")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 205 69 205 70
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 205 69 205 70
                              , srcInfoPoints = []
                              }
                            "a"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 18
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 18
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 5
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 5
                            , srcInfoPoints = []
                            }
                          "pi"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 206 9 206 18
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 206 9 206 10 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 18
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 15
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 15
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 15
                                     , srcInfoPoints = []
                                     }
                                   "pure")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 206 16 206 18
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 206 16 206 18
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 206 16 206 18
                                     , srcInfoPoints = []
                                     }
                                   "pi")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 20
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 20
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 7
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 7
                            , srcInfoPoints = []
                            }
                          "sqrt"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 207 9 207 20
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 207 9 207 10 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 20
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 15
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 15
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 15
                                     , srcInfoPoints = []
                                     }
                                   "fmap")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 207 16 207 20
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 207 16 207 20
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 207 16 207 20
                                     , srcInfoPoints = []
                                     }
                                   "sqrt")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 19
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 19
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 6
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 6
                            , srcInfoPoints = []
                            }
                          "exp"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 208 9 208 19
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 208 9 208 10 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 19
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 15
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 15
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 15
                                     , srcInfoPoints = []
                                     }
                                   "fmap")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 208 16 208 19
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 208 16 208 19
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 208 16 208 19
                                     , srcInfoPoints = []
                                     }
                                   "exp")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 19
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 19
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 6
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 6
                            , srcInfoPoints = []
                            }
                          "log"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 209 9 209 19
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 209 9 209 10 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 19
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 15
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 15
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 15
                                     , srcInfoPoints = []
                                     }
                                   "fmap")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 209 16 209 19
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 209 16 209 19
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 209 16 209 19
                                     , srcInfoPoints = []
                                     }
                                   "log")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 19
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 19
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 6
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 6
                            , srcInfoPoints = []
                            }
                          "sin"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 210 9 210 19
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 210 9 210 10 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 19
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 15
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 15
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 15
                                     , srcInfoPoints = []
                                     }
                                   "fmap")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 210 16 210 19
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 210 16 210 19
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 210 16 210 19
                                     , srcInfoPoints = []
                                     }
                                   "sin")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 19
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 19
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 6
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 6
                            , srcInfoPoints = []
                            }
                          "cos"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 211 9 211 19
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 211 9 211 10 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 19
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 15
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 15
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 15
                                     , srcInfoPoints = []
                                     }
                                   "fmap")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 211 16 211 19
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 211 16 211 19
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 211 16 211 19
                                     , srcInfoPoints = []
                                     }
                                   "cos")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 20
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 20
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 7
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 7
                            , srcInfoPoints = []
                            }
                          "asin"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 212 9 212 20
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 212 9 212 10 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 20
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 15
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 15
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 15
                                     , srcInfoPoints = []
                                     }
                                   "fmap")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 212 16 212 20
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 212 16 212 20
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 212 16 212 20
                                     , srcInfoPoints = []
                                     }
                                   "asin")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 20
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 20
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 7
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 7
                            , srcInfoPoints = []
                            }
                          "atan"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 213 9 213 20
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 213 9 213 10 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 20
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 15
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 15
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 15
                                     , srcInfoPoints = []
                                     }
                                   "fmap")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 213 16 213 20
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 213 16 213 20
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 213 16 213 20
                                     , srcInfoPoints = []
                                     }
                                   "atan")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 20
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 20
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 7
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 7
                            , srcInfoPoints = []
                            }
                          "acos"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 214 9 214 20
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 214 9 214 10 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 20
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 15
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 15
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 15
                                     , srcInfoPoints = []
                                     }
                                   "fmap")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 214 16 214 20
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 214 16 214 20
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 214 16 214 20
                                     , srcInfoPoints = []
                                     }
                                   "acos")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 20
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 20
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 7
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 7
                            , srcInfoPoints = []
                            }
                          "sinh"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 215 9 215 20
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 215 9 215 10 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 20
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 15
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 15
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 15
                                     , srcInfoPoints = []
                                     }
                                   "fmap")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 215 16 215 20
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 215 16 215 20
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 215 16 215 20
                                     , srcInfoPoints = []
                                     }
                                   "sinh")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 20
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 20
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 7
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 7
                            , srcInfoPoints = []
                            }
                          "cosh"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 216 9 216 20
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 216 9 216 10 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 20
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 15
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 15
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 15
                                     , srcInfoPoints = []
                                     }
                                   "fmap")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 216 16 216 20
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 216 16 216 20
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 216 16 216 20
                                     , srcInfoPoints = []
                                     }
                                   "cosh")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 21
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 21
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 8
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 8
                            , srcInfoPoints = []
                            }
                          "asinh"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 217 9 217 21
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 217 9 217 10 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 21
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 15
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 15
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 15
                                     , srcInfoPoints = []
                                     }
                                   "fmap")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 217 16 217 21
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 217 16 217 21
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 217 16 217 21
                                     , srcInfoPoints = []
                                     }
                                   "asinh")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 21
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 21
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 8
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 8
                            , srcInfoPoints = []
                            }
                          "atanh"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 218 9 218 21
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 218 9 218 10 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 21
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 15
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 15
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 15
                                     , srcInfoPoints = []
                                     }
                                   "fmap")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 218 16 218 21
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 218 16 218 21
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 218 16 218 21
                                     , srcInfoPoints = []
                                     }
                                   "atanh")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 21
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 21
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 8
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 8
                            , srcInfoPoints = []
                            }
                          "acosh"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 219 9 219 21
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 219 9 219 10 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 21
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 15
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 15
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 15
                                     , srcInfoPoints = []
                                     }
                                   "fmap")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 219 16 219 21
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 219 16 219 21
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 219 16 219 21
                                     , srcInfoPoints = []
                                     }
                                   "acosh")))))
                    Nothing)
             ])
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 221 1 224 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 221 1 221 9
                , SrcSpan "tests/examples/DerivingVia.hs" 221 74 221 79
                , SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 3
                , SrcSpan "tests/examples/DerivingVia.hs" 224 1 224 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 221 10 221 73
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxTuple
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 221 10 221 41
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 221 10 221 11
                         , SrcSpan "tests/examples/DerivingVia.hs" 221 24 221 25
                         , SrcSpan "tests/examples/DerivingVia.hs" 221 37 221 38
                         , SrcSpan "tests/examples/DerivingVia.hs" 221 39 221 41
                         ]
                     }
                   [ ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 24
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 22
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 22
                               , srcInfoPoints = []
                               }
                             "Applicative"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 221 23 221 24
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 221 23 221 24
                                , srcInfoPoints = []
                                }
                              "f")
                       ]
                   , ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 37
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 35
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 35
                               , srcInfoPoints = []
                               }
                             "Semigroup"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 221 36 221 37
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 221 36 221 37
                                , srcInfoPoints = []
                                }
                              "s")
                       ]
                   ]))
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 73
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 51
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 51
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 51
                           , srcInfoPoints = []
                           }
                         "Semigroup")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 221 52 221 73
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 221 52 221 53
                         , SrcSpan "tests/examples/DerivingVia.hs" 221 72 221 73
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 72
                        , srcInfoPoints = []
                        }
                      (TyApp
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 70
                           , srcInfoPoints = []
                           }
                         (TyCon
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 68
                              , srcInfoPoints = []
                              }
                            (UnQual
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 68
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 68
                                    , srcInfoPoints = []
                                    }
                                  "WrapApplicative")))
                         (TyVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 221 69 221 70
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 221 69 221 70
                                 , srcInfoPoints = []
                                 }
                               "f")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 221 71 221 72
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 221 71 221 72
                              , srcInfoPoints = []
                              }
                            "s"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 21
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 21
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 7
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 4
                             , SrcSpan "tests/examples/DerivingVia.hs" 222 4 222 6
                             , SrcSpan "tests/examples/DerivingVia.hs" 222 6 222 7
                             ]
                         }
                       (Symbol
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 222 4 222 6
                            , srcInfoPoints = []
                            }
                          "<>"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 222 8 222 21
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 222 8 222 9 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 21
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 16
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 16
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 16
                                     , srcInfoPoints = []
                                     }
                                   "liftA2")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 21
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 18
                                   , SrcSpan "tests/examples/DerivingVia.hs" 222 18 222 20
                                   , SrcSpan "tests/examples/DerivingVia.hs" 222 20 222 21
                                   ]
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 21
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 18
                                      , SrcSpan "tests/examples/DerivingVia.hs" 222 18 222 20
                                      , SrcSpan "tests/examples/DerivingVia.hs" 222 20 222 21
                                      ]
                                  }
                                (Symbol
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 222 18 222 20
                                     , srcInfoPoints = []
                                     }
                                   "<>")))))
                    Nothing)
             ])
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 224 1 230 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 224 1 224 9
                , SrcSpan "tests/examples/DerivingVia.hs" 224 68 224 73
                , SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 3
                , SrcSpan "tests/examples/DerivingVia.hs" 230 1 230 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 224 10 224 67
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxTuple
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 224 10 224 38
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 224 10 224 11
                         , SrcSpan "tests/examples/DerivingVia.hs" 224 24 224 25
                         , SrcSpan "tests/examples/DerivingVia.hs" 224 34 224 35
                         , SrcSpan "tests/examples/DerivingVia.hs" 224 36 224 38
                         ]
                     }
                   [ ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 24
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 22
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 22
                               , srcInfoPoints = []
                               }
                             "Applicative"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 224 23 224 24
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 224 23 224 24
                                , srcInfoPoints = []
                                }
                              "f")
                       ]
                   , ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 34
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 32
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 32
                               , srcInfoPoints = []
                               }
                             "Monoid"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 224 33 224 34
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 224 33 224 34
                                , srcInfoPoints = []
                                }
                              "m")
                       ]
                   ]))
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 67
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 45
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 45
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 45
                           , srcInfoPoints = []
                           }
                         "Monoid")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 224 46 224 67
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 224 46 224 47
                         , SrcSpan "tests/examples/DerivingVia.hs" 224 66 224 67
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 66
                        , srcInfoPoints = []
                        }
                      (TyApp
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 64
                           , srcInfoPoints = []
                           }
                         (TyCon
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 62
                              , srcInfoPoints = []
                              }
                            (UnQual
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 62
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 62
                                    , srcInfoPoints = []
                                    }
                                  "WrapApplicative")))
                         (TyVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 224 63 224 64
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 224 63 224 64
                                 , srcInfoPoints = []
                                 }
                               "f")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 224 65 224 66
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 224 65 224 66
                              , srcInfoPoints = []
                              }
                            "m"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 23
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 23
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 9
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 9
                            , srcInfoPoints = []
                            }
                          "mempty"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 225 10 225 23
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 225 10 225 11 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 23
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 16
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 16
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 16
                                     , srcInfoPoints = []
                                     }
                                   "pure")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 225 17 225 23
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 225 17 225 23
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 225 17 225 23
                                     , srcInfoPoints = []
                                     }
                                   "mempty")))))
                    Nothing)
             ])
      , ClassDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 230 1 231 22
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 230 1 230 6
                , SrcSpan "tests/examples/DerivingVia.hs" 230 17 230 22
                , SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 3
                , SrcSpan "tests/examples/DerivingVia.hs" 233 1 233 0
                ]
            }
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 230 7 230 16
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 230 7 230 14
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 230 7 230 14
                     , srcInfoPoints = []
                     }
                   "Pointed"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 230 15 230 16
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 230 15 230 16
                     , srcInfoPoints = []
                     }
                   "p")))
          []
          (Just
             [ ClsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 22
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 231 11 231 13 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 22
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 231 11 231 13 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 10
                          , srcInfoPoints = []
                          }
                        "pointed"
                    ]
                    (TyFun
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 231 14 231 22
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 231 16 231 18 ]
                         }
                       (TyVar
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 231 14 231 15
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 231 14 231 15
                               , srcInfoPoints = []
                               }
                             "a"))
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 231 19 231 22
                            , srcInfoPoints = []
                            }
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 231 19 231 20
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 231 19 231 20
                                  , srcInfoPoints = []
                                  }
                                "p"))
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 231 21 231 22
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 231 21 231 22
                                  , srcInfoPoints = []
                                  }
                                "a")))))
             ])
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 233 1 234 36
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 233 23 233 24 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 233 1 233 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 22
               , srcInfoPoints = []
               }
             (DHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 20
                  , srcInfoPoints = []
                  }
                (DHead
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 18
                     , srcInfoPoints = []
                     }
                   (Ident
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 18
                        , srcInfoPoints = []
                        }
                      "WrapMonad"))
                (UnkindedVar
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 233 19 233 20
                     , srcInfoPoints = []
                     }
                   (Ident
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 233 19 233 20
                        , srcInfoPoints = []
                        }
                      "f")))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 233 21 233 22
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 233 21 233 22
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 233 25 233 43
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 233 25 233 43
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 233 25 233 37
                      , srcInfoPoints = []
                      }
                    "WrappedMonad")
                 [ TyParen
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 233 38 233 43
                       , srcInfoPoints =
                           [ SrcSpan "tests/examples/DerivingVia.hs" 233 38 233 39
                           , SrcSpan "tests/examples/DerivingVia.hs" 233 42 233 43
                           ]
                       }
                     (TyApp
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 233 39 233 42
                          , srcInfoPoints = []
                          }
                        (TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 233 39 233 40
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 233 39 233 40
                                , srcInfoPoints = []
                                }
                              "f"))
                        (TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 233 41 233 42
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 233 41 233 42
                                , srcInfoPoints = []
                                }
                              "a")))
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 234 3 234 36
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 234 3 234 11
                    , SrcSpan "tests/examples/DerivingVia.hs" 234 20 234 21
                    , SrcSpan "tests/examples/DerivingVia.hs" 234 28 234 29
                    , SrcSpan "tests/examples/DerivingVia.hs" 234 35 234 36
                    ]
                }
              (Just
                 (DerivNewtype
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 234 12 234 19
                      , srcInfoPoints = []
                      }))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28
                             , srcInfoPoints = []
                             }
                           "Pointed")))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35
                             , srcInfoPoints = []
                             }
                           "Monad")))
              ]
          ]
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 236 1 239 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 236 1 236 9
                , SrcSpan "tests/examples/DerivingVia.hs" 236 56 236 61
                , SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 3
                , SrcSpan "tests/examples/DerivingVia.hs" 239 1 239 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 236 10 236 55
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxTuple
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 236 10 236 33
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 236 10 236 11
                         , SrcSpan "tests/examples/DerivingVia.hs" 236 18 236 19
                         , SrcSpan "tests/examples/DerivingVia.hs" 236 29 236 30
                         , SrcSpan "tests/examples/DerivingVia.hs" 236 31 236 33
                         ]
                     }
                   [ ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 18
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 16
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 16
                               , srcInfoPoints = []
                               }
                             "Monad"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 236 17 236 18
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 236 17 236 18
                                , srcInfoPoints = []
                                }
                              "m")
                       ]
                   , ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 29
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 27
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 27
                               , srcInfoPoints = []
                               }
                             "Pointed"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 236 28 236 29
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 236 28 236 29
                                , srcInfoPoints = []
                                }
                              "m")
                       ]
                   ]))
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 55
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 41
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 41
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 41
                           , srcInfoPoints = []
                           }
                         "Functor")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 236 42 236 55
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 236 42 236 43
                         , SrcSpan "tests/examples/DerivingVia.hs" 236 54 236 55
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 54
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 52
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 52
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 52
                                 , srcInfoPoints = []
                                 }
                               "WrapMonad")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 236 53 236 54
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 236 53 236 54
                              , srcInfoPoints = []
                              }
                            "m"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 15
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 15
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 7
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 7
                            , srcInfoPoints = []
                            }
                          "fmap"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 237 8 237 15
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 237 8 237 9 ]
                         }
                       (Var
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 237 10 237 15
                            , srcInfoPoints = []
                            }
                          (UnQual
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 237 10 237 15
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 237 10 237 15
                                  , srcInfoPoints = []
                                  }
                                "liftM"))))
                    Nothing)
             ])
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 239 1 244 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 239 1 239 9
                , SrcSpan "tests/examples/DerivingVia.hs" 239 60 239 65
                , SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 3
                , SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 3
                , SrcSpan "tests/examples/DerivingVia.hs" 244 1 244 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 239 10 239 59
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxTuple
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 239 10 239 33
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 239 10 239 11
                         , SrcSpan "tests/examples/DerivingVia.hs" 239 18 239 19
                         , SrcSpan "tests/examples/DerivingVia.hs" 239 29 239 30
                         , SrcSpan "tests/examples/DerivingVia.hs" 239 31 239 33
                         ]
                     }
                   [ ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 18
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 16
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 16
                               , srcInfoPoints = []
                               }
                             "Monad"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 239 17 239 18
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 239 17 239 18
                                , srcInfoPoints = []
                                }
                              "m")
                       ]
                   , ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 29
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 27
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 27
                               , srcInfoPoints = []
                               }
                             "Pointed"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 239 28 239 29
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 239 28 239 29
                                , srcInfoPoints = []
                                }
                              "m")
                       ]
                   ]))
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 59
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 45
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 45
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 45
                           , srcInfoPoints = []
                           }
                         "Applicative")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 239 46 239 59
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 239 46 239 47
                         , SrcSpan "tests/examples/DerivingVia.hs" 239 58 239 59
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 58
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 56
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 56
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 56
                                 , srcInfoPoints = []
                                 }
                               "WrapMonad")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 239 57 239 58
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 239 57 239 58
                              , srcInfoPoints = []
                              }
                            "m"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 18
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 18
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 7
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 7
                            , srcInfoPoints = []
                            }
                          "pure"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 240 9 240 18
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 240 9 240 10 ]
                         }
                       (Var
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 240 11 240 18
                            , srcInfoPoints = []
                            }
                          (UnQual
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 240 11 240 18
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 240 11 240 18
                                  , srcInfoPoints = []
                                  }
                                "pointed"))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 13
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 13
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 8
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 4
                             , SrcSpan "tests/examples/DerivingVia.hs" 241 4 241 7
                             , SrcSpan "tests/examples/DerivingVia.hs" 241 7 241 8
                             ]
                         }
                       (Symbol
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 241 4 241 7
                            , srcInfoPoints = []
                            }
                          "<*>"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 241 9 241 13
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 241 9 241 10 ]
                         }
                       (Var
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 241 11 241 13
                            , srcInfoPoints = []
                            }
                          (UnQual
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 241 11 241 13
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 241 11 241 13
                                  , srcInfoPoints = []
                                  }
                                "ap"))))
                    Nothing)
             ])
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 244 1 247 58
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 244 15 244 16 ]
            }
          (DataType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 244 1 244 5
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 244 6 244 14
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 244 6 244 12
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 244 6 244 12
                     , srcInfoPoints = []
                     }
                   "Sorted"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 244 13 244 14
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 244 13 244 14
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 244 17 244 29
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 244 17 244 29
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 244 17 244 23
                      , srcInfoPoints = []
                      }
                    "Sorted")
                 [ TyVar
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 244 24 244 25
                       , srcInfoPoints = []
                       }
                     (Ident
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 244 24 244 25
                          , srcInfoPoints = []
                          }
                        "a")
                 , TyVar
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 244 26 244 27
                       , srcInfoPoints = []
                       }
                     (Ident
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 244 26 244 27
                          , srcInfoPoints = []
                          }
                        "a")
                 , TyVar
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 244 28 244 29
                       , srcInfoPoints = []
                       }
                     (Ident
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 244 28 244 29
                          , srcInfoPoints = []
                          }
                        "a")
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 245 3 245 34
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 245 3 245 11
                    , SrcSpan "tests/examples/DerivingVia.hs" 245 12 245 13
                    , SrcSpan "tests/examples/DerivingVia.hs" 245 20 245 21
                    , SrcSpan "tests/examples/DerivingVia.hs" 245 33 245 34
                    ]
                }
              (Just
                 (DerivVia
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 246 5 246 8
                      , srcInfoPoints = []
                      }
                    (TyParen
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 246 9 246 27
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 246 9 246 10
                             , SrcSpan "tests/examples/DerivingVia.hs" 246 26 246 27
                             ]
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 26
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 19
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 19
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 19
                                     , srcInfoPoints = []
                                     }
                                   "WrapMonad")))
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 246 20 246 26
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 246 20 246 26
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 246 20 246 26
                                     , srcInfoPoints = []
                                     }
                                   "Sorted")))))))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20
                             , srcInfoPoints = []
                             }
                           "Functor")))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33
                             , srcInfoPoints = []
                             }
                           "Applicative")))
              ]
          , Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 247 3 247 58
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 247 3 247 11
                    , SrcSpan "tests/examples/DerivingVia.hs" 247 12 247 13
                    , SrcSpan "tests/examples/DerivingVia.hs" 247 16 247 17
                    , SrcSpan "tests/examples/DerivingVia.hs" 247 28 247 29
                    , SrcSpan "tests/examples/DerivingVia.hs" 247 38 247 39
                    , SrcSpan "tests/examples/DerivingVia.hs" 247 49 247 50
                    , SrcSpan "tests/examples/DerivingVia.hs" 247 57 247 58
                    ]
                }
              (Just
                 (DerivVia
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 248 5 248 8
                      , srcInfoPoints = []
                      }
                    (TyParen
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 248 9 248 35
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 248 9 248 10
                             , SrcSpan "tests/examples/DerivingVia.hs" 248 34 248 35
                             ]
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 34
                            , srcInfoPoints = []
                            }
                          (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 32
                               , srcInfoPoints = []
                               }
                             (TyCon
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 25
                                  , srcInfoPoints = []
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 25
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 25
                                        , srcInfoPoints = []
                                        }
                                      "WrapApplicative")))
                             (TyCon
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 248 26 248 32
                                  , srcInfoPoints = []
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 248 26 248 32
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 248 26 248 32
                                        , srcInfoPoints = []
                                        }
                                      "Sorted"))))
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 248 33 248 34
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 248 33 248 34
                                  , srcInfoPoints = []
                                  }
                                "a"))))))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16
                             , srcInfoPoints = []
                             }
                           "Num")))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28
                             , srcInfoPoints = []
                             }
                           "Fractional")))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38
                             , srcInfoPoints = []
                             }
                           "Floating")))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49
                             , srcInfoPoints = []
                             }
                           "Semigroup")))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57
                             , srcInfoPoints = []
                             }
                           "Monoid")))
              ]
          ]
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 251 1 258 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 251 1 251 9
                , SrcSpan "tests/examples/DerivingVia.hs" 251 23 251 28
                , SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 3
                , SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 3
                , SrcSpan "tests/examples/DerivingVia.hs" 258 1 258 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 22
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 22
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 15
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 15
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 15
                           , srcInfoPoints = []
                           }
                         "Monad")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 251 16 251 22
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 251 16 251 22
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 251 16 251 22
                           , srcInfoPoints = []
                           }
                         "Sorted")))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 51
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 252 9 252 11 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 51
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 252 9 252 11 ]
                      }
                    [ Symbol
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 8
                          , srcInfoPoints =
                              [ SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 4
                              , SrcSpan "tests/examples/DerivingVia.hs" 252 4 252 7
                              , SrcSpan "tests/examples/DerivingVia.hs" 252 7 252 8
                              ]
                          }
                        ">>="
                    ]
                    (TyFun
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 51
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 252 21 252 23 ]
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 20
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 18
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 18
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 18
                                     , srcInfoPoints = []
                                     }
                                   "Sorted")))
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 252 19 252 20
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 252 19 252 20
                                  , srcInfoPoints = []
                                  }
                                "a")))
                       (TyFun
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 252 24 252 51
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 252 40 252 42 ]
                            }
                          (TyParen
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 252 24 252 39
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 252 24 252 25
                                   , SrcSpan "tests/examples/DerivingVia.hs" 252 38 252 39
                                   ]
                               }
                             (TyFun
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 252 25 252 38
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 252 27 252 29 ]
                                  }
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 252 25 252 26
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 252 25 252 26
                                        , srcInfoPoints = []
                                        }
                                      "a"))
                                (TyApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 252 30 252 38
                                     , srcInfoPoints = []
                                     }
                                   (TyCon
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 252 30 252 36
                                        , srcInfoPoints = []
                                        }
                                      (UnQual
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 252 30 252 36
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 252 30 252 36
                                              , srcInfoPoints = []
                                              }
                                            "Sorted")))
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 252 37 252 38
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 252 37 252 38
                                           , srcInfoPoints = []
                                           }
                                         "b")))))
                          (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 51
                               , srcInfoPoints = []
                               }
                             (TyCon
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 49
                                  , srcInfoPoints = []
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 49
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 49
                                        , srcInfoPoints = []
                                        }
                                      "Sorted")))
                             (TyVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 252 50 252 51
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 252 50 252 51
                                     , srcInfoPoints = []
                                     }
                                   "b"))))))
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 253 3 256 26
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 253 40 253 45 ]
                   }
                 (FunBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 253 3 256 26
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 253 40 253 45 ]
                      }
                    [ InfixMatch
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 253 3 256 26
                          , srcInfoPoints =
                              [ SrcSpan "tests/examples/DerivingVia.hs" 253 40 253 45 ]
                          }
                        (PApp
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 15
                             , srcInfoPoints = []
                             }
                           (UnQual
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 9
                                , srcInfoPoints = []
                                }
                              (Ident
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 9
                                   , srcInfoPoints = []
                                   }
                                 "Sorted"))
                           [ PVar
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 253 10 253 11
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 253 10 253 11
                                    , srcInfoPoints = []
                                    }
                                  "a")
                           , PVar
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 253 12 253 13
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 253 12 253 13
                                    , srcInfoPoints = []
                                    }
                                  "b")
                           , PVar
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 253 14 253 15
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 253 14 253 15
                                    , srcInfoPoints = []
                                    }
                                  "c")
                           ])
                        (Symbol
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 253 16 253 19
                             , srcInfoPoints = []
                             }
                           ">>=")
                        [ PVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 253 20 253 21
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 253 20 253 21
                                 , srcInfoPoints = []
                                 }
                               "f")
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 253 22 253 39
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 253 22 253 23 ]
                             }
                           (App
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 39
                                , srcInfoPoints = []
                                }
                              (App
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 36
                                   , srcInfoPoints = []
                                   }
                                 (App
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 33
                                      , srcInfoPoints = []
                                      }
                                    (Con
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 30
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 253 24 253 30
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 253 24 253 30
                                               , srcInfoPoints = []
                                               }
                                             "Sorted")))
                                    (Var
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 253 31 253 33
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 253 31 253 33
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 253 31 253 33
                                               , srcInfoPoints = []
                                               }
                                             "a'"))))
                                 (Var
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 253 34 253 36
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 253 34 253 36
                                         , srcInfoPoints = []
                                         }
                                       (Ident
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 253 34 253 36
                                            , srcInfoPoints = []
                                            }
                                          "b'"))))
                              (Var
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 253 37 253 39
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 253 37 253 39
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 253 37 253 39
                                         , srcInfoPoints = []
                                         }
                                       "c'")))))
                        (Just
                           (BDecls
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 254 5 256 26
                                , srcInfoPoints =
                                    [ SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 5
                                    , SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 5
                                    , SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 5
                                    , SrcSpan "tests/examples/DerivingVia.hs" 258 1 258 0
                                    ]
                                }
                              [ PatBind
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 26
                                    , srcInfoPoints = []
                                    }
                                  (PApp
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 19
                                       , srcInfoPoints = []
                                       }
                                     (UnQual
                                        SrcSpanInfo
                                          { srcInfoSpan =
                                              SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 11
                                          , srcInfoPoints = []
                                          }
                                        (Ident
                                           SrcSpanInfo
                                             { srcInfoSpan =
                                                 SrcSpan
                                                   "tests/examples/DerivingVia.hs" 254 5 254 11
                                             , srcInfoPoints = []
                                             }
                                           "Sorted"))
                                     [ PVar
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 254 12 254 14
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 254 12 254 14
                                              , srcInfoPoints = []
                                              }
                                            "a'")
                                     , PWildCard
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 254 15 254 16
                                           , srcInfoPoints = []
                                           }
                                     , PWildCard
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 254 18 254 19
                                           , srcInfoPoints = []
                                           }
                                     ])
                                  (UnGuardedRhs
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia.hs" 254 21 254 26
                                       , srcInfoPoints =
                                           [ SrcSpan "tests/examples/DerivingVia.hs" 254 21 254 22 ]
                                       }
                                     (App
                                        SrcSpanInfo
                                          { srcInfoSpan =
                                              SrcSpan "tests/examples/DerivingVia.hs" 254 23 254 26
                                          , srcInfoPoints = []
                                          }
                                        (Var
                                           SrcSpanInfo
                                             { srcInfoSpan =
                                                 SrcSpan
                                                   "tests/examples/DerivingVia.hs" 254 23 254 24
                                             , srcInfoPoints = []
                                             }
                                           (UnQual
                                              SrcSpanInfo
                                                { srcInfoSpan =
                                                    SrcSpan
                                                      "tests/examples/DerivingVia.hs" 254 23 254 24
                                                , srcInfoPoints = []
                                                }
                                              (Ident
                                                 SrcSpanInfo
                                                   { srcInfoSpan =
                                                       SrcSpan
                                                         "tests/examples/DerivingVia.hs"
                                                         254
                                                         23
                                                         254
                                                         24
                                                   , srcInfoPoints = []
                                                   }
                                                 "f")))
                                        (Var
                                           SrcSpanInfo
                                             { srcInfoSpan =
                                                 SrcSpan
                                                   "tests/examples/DerivingVia.hs" 254 25 254 26
                                             , srcInfoPoints = []
                                             }
                                           (UnQual
                                              SrcSpanInfo
                                                { srcInfoSpan =
                                                    SrcSpan
                                                      "tests/examples/DerivingVia.hs" 254 25 254 26
                                                , srcInfoPoints = []
                                                }
                                              (Ident
                                                 SrcSpanInfo
                                                   { srcInfoSpan =
                                                       SrcSpan
                                                         "tests/examples/DerivingVia.hs"
                                                         254
                                                         25
                                                         254
                                                         26
                                                   , srcInfoPoints = []
                                                   }
                                                 "a")))))
                                  Nothing
                              , PatBind
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 26
                                    , srcInfoPoints = []
                                    }
                                  (PApp
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 19
                                       , srcInfoPoints = []
                                       }
                                     (UnQual
                                        SrcSpanInfo
                                          { srcInfoSpan =
                                              SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 11
                                          , srcInfoPoints = []
                                          }
                                        (Ident
                                           SrcSpanInfo
                                             { srcInfoSpan =
                                                 SrcSpan
                                                   "tests/examples/DerivingVia.hs" 255 5 255 11
                                             , srcInfoPoints = []
                                             }
                                           "Sorted"))
                                     [ PWildCard
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 255 12 255 13
                                           , srcInfoPoints = []
                                           }
                                     , PVar
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 255 15 255 17
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 255 15 255 17
                                              , srcInfoPoints = []
                                              }
                                            "b'")
                                     , PWildCard
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 255 18 255 19
                                           , srcInfoPoints = []
                                           }
                                     ])
                                  (UnGuardedRhs
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia.hs" 255 21 255 26
                                       , srcInfoPoints =
                                           [ SrcSpan "tests/examples/DerivingVia.hs" 255 21 255 22 ]
                                       }
                                     (App
                                        SrcSpanInfo
                                          { srcInfoSpan =
                                              SrcSpan "tests/examples/DerivingVia.hs" 255 23 255 26
                                          , srcInfoPoints = []
                                          }
                                        (Var
                                           SrcSpanInfo
                                             { srcInfoSpan =
                                                 SrcSpan
                                                   "tests/examples/DerivingVia.hs" 255 23 255 24
                                             , srcInfoPoints = []
                                             }
                                           (UnQual
                                              SrcSpanInfo
                                                { srcInfoSpan =
                                                    SrcSpan
                                                      "tests/examples/DerivingVia.hs" 255 23 255 24
                                                , srcInfoPoints = []
                                                }
                                              (Ident
                                                 SrcSpanInfo
                                                   { srcInfoSpan =
                                                       SrcSpan
                                                         "tests/examples/DerivingVia.hs"
                                                         255
                                                         23
                                                         255
                                                         24
                                                   , srcInfoPoints = []
                                                   }
                                                 "f")))
                                        (Var
                                           SrcSpanInfo
                                             { srcInfoSpan =
                                                 SrcSpan
                                                   "tests/examples/DerivingVia.hs" 255 25 255 26
                                             , srcInfoPoints = []
                                             }
                                           (UnQual
                                              SrcSpanInfo
                                                { srcInfoSpan =
                                                    SrcSpan
                                                      "tests/examples/DerivingVia.hs" 255 25 255 26
                                                , srcInfoPoints = []
                                                }
                                              (Ident
                                                 SrcSpanInfo
                                                   { srcInfoSpan =
                                                       SrcSpan
                                                         "tests/examples/DerivingVia.hs"
                                                         255
                                                         25
                                                         255
                                                         26
                                                   , srcInfoPoints = []
                                                   }
                                                 "b")))))
                                  Nothing
                              , PatBind
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 26
                                    , srcInfoPoints = []
                                    }
                                  (PApp
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 20
                                       , srcInfoPoints = []
                                       }
                                     (UnQual
                                        SrcSpanInfo
                                          { srcInfoSpan =
                                              SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 11
                                          , srcInfoPoints = []
                                          }
                                        (Ident
                                           SrcSpanInfo
                                             { srcInfoSpan =
                                                 SrcSpan
                                                   "tests/examples/DerivingVia.hs" 256 5 256 11
                                             , srcInfoPoints = []
                                             }
                                           "Sorted"))
                                     [ PWildCard
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 256 12 256 13
                                           , srcInfoPoints = []
                                           }
                                     , PWildCard
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 256 15 256 16
                                           , srcInfoPoints = []
                                           }
                                     , PVar
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 256 18 256 20
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 256 18 256 20
                                              , srcInfoPoints = []
                                              }
                                            "c'")
                                     ])
                                  (UnGuardedRhs
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia.hs" 256 21 256 26
                                       , srcInfoPoints =
                                           [ SrcSpan "tests/examples/DerivingVia.hs" 256 21 256 22 ]
                                       }
                                     (App
                                        SrcSpanInfo
                                          { srcInfoSpan =
                                              SrcSpan "tests/examples/DerivingVia.hs" 256 23 256 26
                                          , srcInfoPoints = []
                                          }
                                        (Var
                                           SrcSpanInfo
                                             { srcInfoSpan =
                                                 SrcSpan
                                                   "tests/examples/DerivingVia.hs" 256 23 256 24
                                             , srcInfoPoints = []
                                             }
                                           (UnQual
                                              SrcSpanInfo
                                                { srcInfoSpan =
                                                    SrcSpan
                                                      "tests/examples/DerivingVia.hs" 256 23 256 24
                                                , srcInfoPoints = []
                                                }
                                              (Ident
                                                 SrcSpanInfo
                                                   { srcInfoSpan =
                                                       SrcSpan
                                                         "tests/examples/DerivingVia.hs"
                                                         256
                                                         23
                                                         256
                                                         24
                                                   , srcInfoPoints = []
                                                   }
                                                 "f")))
                                        (Var
                                           SrcSpanInfo
                                             { srcInfoSpan =
                                                 SrcSpan
                                                   "tests/examples/DerivingVia.hs" 256 25 256 26
                                             , srcInfoPoints = []
                                             }
                                           (UnQual
                                              SrcSpanInfo
                                                { srcInfoSpan =
                                                    SrcSpan
                                                      "tests/examples/DerivingVia.hs" 256 25 256 26
                                                , srcInfoPoints = []
                                                }
                                              (Ident
                                                 SrcSpanInfo
                                                   { srcInfoSpan =
                                                       SrcSpan
                                                         "tests/examples/DerivingVia.hs"
                                                         256
                                                         25
                                                         256
                                                         26
                                                   , srcInfoPoints = []
                                                   }
                                                 "c")))))
                                  Nothing
                              ]))
                    ])
             ])
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 258 1 265 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 258 1 258 9
                , SrcSpan "tests/examples/DerivingVia.hs" 258 25 258 30
                , SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 3
                , SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 3
                , SrcSpan "tests/examples/DerivingVia.hs" 265 1 265 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 24
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 24
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 17
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 17
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 17
                           , srcInfoPoints = []
                           }
                         "Pointed")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 258 18 258 24
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 258 18 258 24
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 258 18 258 24
                           , srcInfoPoints = []
                           }
                         "Sorted")))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 27
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 259 11 259 13 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 27
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 259 11 259 13 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 10
                          , srcInfoPoints = []
                          }
                        "pointed"
                    ]
                    (TyFun
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 259 14 259 27
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 259 16 259 18 ]
                         }
                       (TyVar
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 259 14 259 15
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 259 14 259 15
                               , srcInfoPoints = []
                               }
                             "a"))
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 27
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 25
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 25
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 25
                                     , srcInfoPoints = []
                                     }
                                   "Sorted")))
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 259 26 259 27
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 259 26 259 27
                                  , srcInfoPoints = []
                                  }
                                "a")))))
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 27
                   , srcInfoPoints = []
                   }
                 (FunBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 27
                      , srcInfoPoints = []
                      }
                    [ Match
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 27
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 10
                             , srcInfoPoints = []
                             }
                           "pointed")
                        [ PVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 260 11 260 12
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 260 11 260 12
                                 , srcInfoPoints = []
                                 }
                               "a")
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 260 13 260 27
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 260 13 260 14 ]
                             }
                           (App
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 27
                                , srcInfoPoints = []
                                }
                              (App
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 25
                                   , srcInfoPoints = []
                                   }
                                 (App
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 23
                                      , srcInfoPoints = []
                                      }
                                    (Con
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 21
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 260 15 260 21
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 260 15 260 21
                                               , srcInfoPoints = []
                                               }
                                             "Sorted")))
                                    (Var
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 260 22 260 23
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 260 22 260 23
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 260 22 260 23
                                               , srcInfoPoints = []
                                               }
                                             "a"))))
                                 (Var
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 260 24 260 25
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 260 24 260 25
                                         , srcInfoPoints = []
                                         }
                                       (Ident
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 260 24 260 25
                                            , srcInfoPoints = []
                                            }
                                          "a"))))
                              (Var
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 260 26 260 27
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 260 26 260 27
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 260 26 260 27
                                         , srcInfoPoints = []
                                         }
                                       "a")))))
                        Nothing
                    ])
             ])
      , ClassDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 265 1 266 22
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 265 1 265 6
                , SrcSpan "tests/examples/DerivingVia.hs" 265 16 265 21
                , SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 3
                , SrcSpan "tests/examples/DerivingVia.hs" 268 1 268 0
                ]
            }
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 265 7 265 15
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 265 7 265 13
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 265 7 265 13
                     , srcInfoPoints = []
                     }
                   "IsZero"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 265 14 265 15
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 265 14 265 15
                     , srcInfoPoints = []
                     }
                   "a")))
          []
          (Just
             [ ClsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 22
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 266 10 266 12 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 22
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 266 10 266 12 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 9
                          , srcInfoPoints = []
                          }
                        "isZero"
                    ]
                    (TyFun
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 266 13 266 22
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 266 15 266 17 ]
                         }
                       (TyVar
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 266 13 266 14
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 266 13 266 14
                               , srcInfoPoints = []
                               }
                             "a"))
                       (TyCon
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 266 18 266 22
                            , srcInfoPoints = []
                            }
                          (UnQual
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 266 18 266 22
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 266 18 266 22
                                  , srcInfoPoints = []
                                  }
                                "Bool")))))
             ])
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 268 1 268 41
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 268 25 268 26 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 268 1 268 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 268 9 268 24
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 268 9 268 21
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 268 9 268 21
                     , srcInfoPoints = []
                     }
                   "WrappedNumEq"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 268 23 268 24
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 268 23 268 24
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 268 27 268 41
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 268 27 268 41
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 268 27 268 39
                      , srcInfoPoints = []
                      }
                    "WrappedNumEq")
                 [ TyVar
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 268 40 268 41
                       , srcInfoPoints = []
                       }
                     (Ident
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 268 40 268 41
                          , srcInfoPoints = []
                          }
                        "a")
                 ])
          ]
          []
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 269 1 269 41
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 269 25 269 26 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 269 1 269 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 269 9 269 24
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 269 9 269 20
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 269 9 269 20
                     , srcInfoPoints = []
                     }
                   "WrappedShow"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 269 23 269 24
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 269 23 269 24
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 269 27 269 41
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 269 27 269 41
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 269 27 269 38
                      , srcInfoPoints = []
                      }
                    "WrappedShow")
                 [ TyVar
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 269 40 269 41
                       , srcInfoPoints = []
                       }
                     (Ident
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 269 40 269 41
                          , srcInfoPoints = []
                          }
                        "a")
                 ])
          ]
          []
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 270 1 270 42
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 270 25 270 26 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 270 1 270 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 270 9 270 24
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 270 9 270 22
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 270 9 270 22
                     , srcInfoPoints = []
                     }
                   "WrappedNumEq2"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 270 23 270 24
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 270 23 270 24
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 270 27 270 42
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 270 27 270 42
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 270 27 270 40
                      , srcInfoPoints = []
                      }
                    "WrappedNumEq2")
                 [ TyVar
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 270 41 270 42
                       , srcInfoPoints = []
                       }
                     (Ident
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 270 41 270 42
                          , srcInfoPoints = []
                          }
                        "a")
                 ])
          ]
          []
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 272 1 276 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 272 1 272 9
                , SrcSpan "tests/examples/DerivingVia.hs" 272 51 272 56
                , SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 3
                , SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 3
                , SrcSpan "tests/examples/DerivingVia.hs" 276 1 276 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 272 10 272 50
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxTuple
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 272 10 272 26
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 272 10 272 11
                         , SrcSpan "tests/examples/DerivingVia.hs" 272 16 272 17
                         , SrcSpan "tests/examples/DerivingVia.hs" 272 22 272 23
                         , SrcSpan "tests/examples/DerivingVia.hs" 272 24 272 26
                         ]
                     }
                   [ ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 16
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 14
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 14
                               , srcInfoPoints = []
                               }
                             "Num"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 272 15 272 16
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 272 15 272 16
                                , srcInfoPoints = []
                                }
                              "a")
                       ]
                   , ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 22
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 20
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 20
                               , srcInfoPoints = []
                               }
                             "Eq"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 272 21 272 22
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 272 21 272 22
                                , srcInfoPoints = []
                                }
                              "a")
                       ]
                   ]))
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 50
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 33
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 33
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 33
                           , srcInfoPoints = []
                           }
                         "IsZero")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 272 34 272 50
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 272 34 272 35
                         , SrcSpan "tests/examples/DerivingVia.hs" 272 49 272 50
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 49
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 47
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 47
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 47
                                 , srcInfoPoints = []
                                 }
                               "WrappedNumEq")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 272 48 272 49
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 272 48 272 49
                              , srcInfoPoints = []
                              }
                            "a"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 35
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 273 10 273 12 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 35
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 273 10 273 12 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 9
                          , srcInfoPoints = []
                          }
                        "isZero"
                    ]
                    (TyFun
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 35
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 273 28 273 30 ]
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 27
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 25
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 25
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 25
                                     , srcInfoPoints = []
                                     }
                                   "WrappedNumEq")))
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 273 26 273 27
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 273 26 273 27
                                  , srcInfoPoints = []
                                  }
                                "a")))
                       (TyCon
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 273 31 273 35
                            , srcInfoPoints = []
                            }
                          (UnQual
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 273 31 273 35
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 273 31 273 35
                                  , srcInfoPoints = []
                                  }
                                "Bool")))))
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 35
                   , srcInfoPoints = []
                   }
                 (FunBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 35
                      , srcInfoPoints = []
                      }
                    [ Match
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 35
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 9
                             , srcInfoPoints = []
                             }
                           "isZero")
                        [ PParen
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 274 10 274 26
                              , srcInfoPoints =
                                  [ SrcSpan "tests/examples/DerivingVia.hs" 274 10 274 11
                                  , SrcSpan "tests/examples/DerivingVia.hs" 274 25 274 26
                                  ]
                              }
                            (PApp
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 274 11 274 25
                                 , srcInfoPoints = []
                                 }
                               (UnQual
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 274 11 274 23
                                    , srcInfoPoints = []
                                    }
                                  (Ident
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia.hs" 274 11 274 23
                                       , srcInfoPoints = []
                                       }
                                     "WrappedNumEq"))
                               [ PVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 274 24 274 25
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 274 24 274 25
                                        , srcInfoPoints = []
                                        }
                                      "a")
                               ])
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 274 27 274 35
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 274 27 274 28 ]
                             }
                           (InfixApp
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 274 29 274 35
                                , srcInfoPoints = []
                                }
                              (Lit
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 274 29 274 30
                                   , srcInfoPoints = []
                                   }
                                 (Int
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 274 29 274 30
                                      , srcInfoPoints = []
                                      }
                                    0
                                    "0"))
                              (QVarOp
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 274 31 274 33
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 274 31 274 33
                                      , srcInfoPoints = []
                                      }
                                    (Symbol
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 274 31 274 33
                                         , srcInfoPoints = []
                                         }
                                       "==")))
                              (Var
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 274 34 274 35
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 274 34 274 35
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 274 34 274 35
                                         , srcInfoPoints = []
                                         }
                                       "a")))))
                        Nothing
                    ])
             ])
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 276 1 280 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 276 1 276 9
                , SrcSpan "tests/examples/DerivingVia.hs" 276 43 276 48
                , SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 3
                , SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 3
                , SrcSpan "tests/examples/DerivingVia.hs" 280 1 280 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 42
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxSingle
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 19
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 276 17 276 19 ]
                     }
                   (ClassA
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 19
                        , srcInfoPoints =
                            [ SrcSpan "tests/examples/DerivingVia.hs" 276 17 276 19 ]
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 14
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 14
                              , srcInfoPoints = []
                              }
                            "Show"))
                      [ TyVar
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 276 15 276 16
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 276 15 276 16
                               , srcInfoPoints = []
                               }
                             "a")
                      ])))
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 42
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 26
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 26
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 26
                           , srcInfoPoints = []
                           }
                         "IsZero")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 276 27 276 42
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 276 27 276 28
                         , SrcSpan "tests/examples/DerivingVia.hs" 276 41 276 42
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 41
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 39
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 39
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 39
                                 , srcInfoPoints = []
                                 }
                               "WrappedShow")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 276 40 276 41
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 276 40 276 41
                              , srcInfoPoints = []
                              }
                            "a"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 34
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 277 10 277 12 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 34
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 277 10 277 12 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 9
                          , srcInfoPoints = []
                          }
                        "isZero"
                    ]
                    (TyFun
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 34
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 277 27 277 29 ]
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 26
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 24
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 24
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 24
                                     , srcInfoPoints = []
                                     }
                                   "WrappedShow")))
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 277 25 277 26
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 277 25 277 26
                                  , srcInfoPoints = []
                                  }
                                "a")))
                       (TyCon
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 277 30 277 34
                            , srcInfoPoints = []
                            }
                          (UnQual
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 277 30 277 34
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 277 30 277 34
                                  , srcInfoPoints = []
                                  }
                                "Bool")))))
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 41
                   , srcInfoPoints = []
                   }
                 (FunBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 41
                      , srcInfoPoints = []
                      }
                    [ Match
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 41
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 9
                             , srcInfoPoints = []
                             }
                           "isZero")
                        [ PParen
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 278 10 278 25
                              , srcInfoPoints =
                                  [ SrcSpan "tests/examples/DerivingVia.hs" 278 10 278 11
                                  , SrcSpan "tests/examples/DerivingVia.hs" 278 24 278 25
                                  ]
                              }
                            (PApp
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 278 11 278 24
                                 , srcInfoPoints = []
                                 }
                               (UnQual
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 278 11 278 22
                                    , srcInfoPoints = []
                                    }
                                  (Ident
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia.hs" 278 11 278 22
                                       , srcInfoPoints = []
                                       }
                                     "WrappedShow"))
                               [ PVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 278 23 278 24
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 278 23 278 24
                                        , srcInfoPoints = []
                                        }
                                      "a")
                               ])
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 278 26 278 41
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 278 26 278 27 ]
                             }
                           (InfixApp
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 278 28 278 41
                                , srcInfoPoints = []
                                }
                              (Lit
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 278 28 278 31
                                   , srcInfoPoints = []
                                   }
                                 (String
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 278 28 278 31
                                      , srcInfoPoints = []
                                      }
                                    "0"
                                    "0"))
                              (QVarOp
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 278 32 278 34
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 278 32 278 34
                                      , srcInfoPoints = []
                                      }
                                    (Symbol
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 278 32 278 34
                                         , srcInfoPoints = []
                                         }
                                       "==")))
                              (App
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 278 35 278 41
                                   , srcInfoPoints = []
                                   }
                                 (Var
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 278 35 278 39
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 278 35 278 39
                                         , srcInfoPoints = []
                                         }
                                       (Ident
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 278 35 278 39
                                            , srcInfoPoints = []
                                            }
                                          "show")))
                                 (Var
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 278 40 278 41
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 278 40 278 41
                                         , srcInfoPoints = []
                                         }
                                       (Ident
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 278 40 278 41
                                            , srcInfoPoints = []
                                            }
                                          "a"))))))
                        Nothing
                    ])
             ])
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 280 1 284 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 280 1 280 9
                , SrcSpan "tests/examples/DerivingVia.hs" 280 52 280 57
                , SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 3
                , SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 3
                , SrcSpan "tests/examples/DerivingVia.hs" 284 1 284 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 280 10 280 51
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxTuple
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 280 10 280 26
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 280 10 280 11
                         , SrcSpan "tests/examples/DerivingVia.hs" 280 16 280 17
                         , SrcSpan "tests/examples/DerivingVia.hs" 280 22 280 23
                         , SrcSpan "tests/examples/DerivingVia.hs" 280 24 280 26
                         ]
                     }
                   [ ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 16
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 14
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 14
                               , srcInfoPoints = []
                               }
                             "Num"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 280 15 280 16
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 280 15 280 16
                                , srcInfoPoints = []
                                }
                              "a")
                       ]
                   , ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 22
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 20
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 20
                               , srcInfoPoints = []
                               }
                             "Eq"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 280 21 280 22
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 280 21 280 22
                                , srcInfoPoints = []
                                }
                              "a")
                       ]
                   ]))
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 51
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 33
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 33
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 33
                           , srcInfoPoints = []
                           }
                         "IsZero")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 280 34 280 51
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 280 34 280 35
                         , SrcSpan "tests/examples/DerivingVia.hs" 280 50 280 51
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 50
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 48
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 48
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 48
                                 , srcInfoPoints = []
                                 }
                               "WrappedNumEq2")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 280 49 280 50
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 280 49 280 50
                              , srcInfoPoints = []
                              }
                            "a"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 36
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 281 10 281 12 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 36
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 281 10 281 12 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 9
                          , srcInfoPoints = []
                          }
                        "isZero"
                    ]
                    (TyFun
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 36
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 281 29 281 31 ]
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 28
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 26
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 26
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 26
                                     , srcInfoPoints = []
                                     }
                                   "WrappedNumEq2")))
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 281 27 281 28
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 281 27 281 28
                                  , srcInfoPoints = []
                                  }
                                "a")))
                       (TyCon
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 281 32 281 36
                            , srcInfoPoints = []
                            }
                          (UnQual
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 281 32 281 36
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 281 32 281 36
                                  , srcInfoPoints = []
                                  }
                                "Bool")))))
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 40
                   , srcInfoPoints = []
                   }
                 (FunBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 40
                      , srcInfoPoints = []
                      }
                    [ Match
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 40
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 9
                             , srcInfoPoints = []
                             }
                           "isZero")
                        [ PParen
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 282 10 282 27
                              , srcInfoPoints =
                                  [ SrcSpan "tests/examples/DerivingVia.hs" 282 10 282 11
                                  , SrcSpan "tests/examples/DerivingVia.hs" 282 26 282 27
                                  ]
                              }
                            (PApp
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 282 11 282 26
                                 , srcInfoPoints = []
                                 }
                               (UnQual
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 282 11 282 24
                                    , srcInfoPoints = []
                                    }
                                  (Ident
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia.hs" 282 11 282 24
                                       , srcInfoPoints = []
                                       }
                                     "WrappedNumEq2"))
                               [ PVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 282 25 282 26
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 282 25 282 26
                                        , srcInfoPoints = []
                                        }
                                      "a")
                               ])
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 282 28 282 40
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 282 28 282 29 ]
                             }
                           (InfixApp
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 40
                                , srcInfoPoints = []
                                }
                              (InfixApp
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 35
                                   , srcInfoPoints = []
                                   }
                                 (Var
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 31
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 31
                                         , srcInfoPoints = []
                                         }
                                       (Ident
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 282 30 282 31
                                            , srcInfoPoints = []
                                            }
                                          "a")))
                                 (QVarOp
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 282 32 282 33
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 282 32 282 33
                                         , srcInfoPoints = []
                                         }
                                       (Symbol
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 282 32 282 33
                                            , srcInfoPoints = []
                                            }
                                          "+")))
                                 (Var
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 282 34 282 35
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 282 34 282 35
                                         , srcInfoPoints = []
                                         }
                                       (Ident
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 282 34 282 35
                                            , srcInfoPoints = []
                                            }
                                          "a"))))
                              (QVarOp
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 282 36 282 38
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 282 36 282 38
                                      , srcInfoPoints = []
                                      }
                                    (Symbol
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 282 36 282 38
                                         , srcInfoPoints = []
                                         }
                                       "==")))
                              (Var
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 282 39 282 40
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 282 39 282 40
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 282 39 282 40
                                         , srcInfoPoints = []
                                         }
                                       "a")))))
                        Nothing
                    ])
             ])
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 284 1 286 18
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 284 13 284 14 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 284 1 284 8
               , srcInfoPoints = []
               })
          Nothing
          (DHead
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 284 9 284 12
               , srcInfoPoints = []
               }
             (Ident
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 284 9 284 12
                  , srcInfoPoints = []
                  }
                "INT"))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 284 15 284 22
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 284 15 284 22
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 284 15 284 18
                      , srcInfoPoints = []
                      }
                    "INT")
                 [ TyCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 284 19 284 22
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 284 19 284 22
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 284 19 284 22
                             , srcInfoPoints = []
                             }
                           "Int"))
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 285 3 285 24
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 285 3 285 11 ]
                }
              (Just
                 (DerivNewtype
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 285 12 285 19
                      , srcInfoPoints = []
                      }))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24
                             , srcInfoPoints = []
                             }
                           "Show")))
              ]
          , Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 286 3 286 18
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 286 3 286 11 ]
                }
              (Just
                 (DerivVia
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 286 19 286 22
                      , srcInfoPoints = []
                      }
                    (TyParen
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 286 23 286 41
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 286 23 286 24
                             , SrcSpan "tests/examples/DerivingVia.hs" 286 40 286 41
                             ]
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 40
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 36
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 36
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 36
                                     , srcInfoPoints = []
                                     }
                                   "WrappedNumEq")))
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 286 37 286 40
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 286 37 286 40
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 286 37 286 40
                                     , srcInfoPoints = []
                                     }
                                   "Int")))))))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18
                             , srcInfoPoints = []
                             }
                           "IsZero")))
              ]
          ]
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 288 1 288 41
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 288 14 288 15 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 288 1 288 8
               , srcInfoPoints = []
               })
          Nothing
          (DHead
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 288 9 288 13
               , srcInfoPoints = []
               }
             (Ident
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 288 9 288 13
                  , srcInfoPoints = []
                  }
                "VOID"))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 288 16 288 25
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 288 16 288 25
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 288 16 288 20
                      , srcInfoPoints = []
                      }
                    "VOID")
                 [ TyCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 288 21 288 25
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 288 21 288 25
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 288 21 288 25
                             , srcInfoPoints = []
                             }
                           "Void"))
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 288 26 288 41
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 288 26 288 34 ]
                }
              (Just
                 (DerivVia
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 288 42 288 45
                      , srcInfoPoints = []
                      }
                    (TyParen
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 288 46 288 64
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 288 46 288 47
                             , SrcSpan "tests/examples/DerivingVia.hs" 288 63 288 64
                             ]
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 63
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 58
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 58
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 58
                                     , srcInfoPoints = []
                                     }
                                   "WrappedShow")))
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 288 59 288 63
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 288 59 288 63
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 288 59 288 63
                                     , srcInfoPoints = []
                                     }
                                   "Void")))))))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41
                             , srcInfoPoints = []
                             }
                           "IsZero")))
              ]
          ]
      , ClassDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 293 1 301 14
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 293 1 293 6
                , SrcSpan "tests/examples/DerivingVia.hs" 293 38 293 43
                , SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 3
                , SrcSpan "tests/examples/DerivingVia.hs" 296 3 296 3
                , SrcSpan "tests/examples/DerivingVia.hs" 303 1 303 0
                ]
            }
          (Just
             (CxSingle
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 21
                  , srcInfoPoints =
                      [ SrcSpan "tests/examples/DerivingVia.hs" 293 19 293 21 ]
                  }
                (ClassA
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 21
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 293 19 293 21 ]
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 16
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 16
                           , srcInfoPoints = []
                           }
                         "Bifunctor"))
                   [ TyVar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 293 17 293 18
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 293 17 293 18
                            , srcInfoPoints = []
                            }
                          "p")
                   ])))
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 293 22 293 37
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 293 22 293 35
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 293 22 293 35
                     , srcInfoPoints = []
                     }
                   "Biapplicative"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 293 36 293 37
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 293 36 293 37
                     , srcInfoPoints = []
                     }
                   "p")))
          []
          (Just
             [ ClsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 28
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 294 10 294 12 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 28
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 294 10 294 12 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 9
                          , srcInfoPoints = []
                          }
                        "bipure"
                    ]
                    (TyFun
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 294 13 294 28
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 294 15 294 17 ]
                         }
                       (TyVar
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 294 13 294 14
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 294 13 294 14
                               , srcInfoPoints = []
                               }
                             "a"))
                       (TyFun
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 294 18 294 28
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 294 20 294 22 ]
                            }
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 294 18 294 19
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 294 18 294 19
                                  , srcInfoPoints = []
                                  }
                                "b"))
                          (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 28
                               , srcInfoPoints = []
                               }
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 26
                                  , srcInfoPoints = []
                                  }
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 24
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 24
                                        , srcInfoPoints = []
                                        }
                                      "p"))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 294 25 294 26
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 294 25 294 26
                                        , srcInfoPoints = []
                                        }
                                      "a")))
                             (TyVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 294 27 294 28
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 294 27 294 28
                                     , srcInfoPoints = []
                                     }
                                   "b"))))))
             , ClsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 296 3 301 14
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 297 5 297 7 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 296 3 301 14
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 297 5 297 7 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 296 3 296 11
                          , srcInfoPoints = []
                          }
                        "biliftA2"
                    ]
                    (TyFun
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 297 8 301 14
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 298 5 298 7 ]
                         }
                       (TyParen
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 297 8 297 23
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 297 8 297 9
                                , SrcSpan "tests/examples/DerivingVia.hs" 297 22 297 23
                                ]
                            }
                          (TyFun
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 297 9 297 22
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 297 12 297 14 ]
                               }
                             (TyVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 297 9 297 10
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 297 9 297 10
                                     , srcInfoPoints = []
                                     }
                                   "a"))
                             (TyFun
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 297 15 297 22
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 297 18 297 20 ]
                                  }
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 297 15 297 16
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 297 15 297 16
                                        , srcInfoPoints = []
                                        }
                                      "b"))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 297 21 297 22
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 297 21 297 22
                                        , srcInfoPoints = []
                                        }
                                      "c")))))
                       (TyFun
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 298 8 301 14
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 299 5 299 7 ]
                            }
                          (TyParen
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 298 8 298 24
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 298 8 298 9
                                   , SrcSpan "tests/examples/DerivingVia.hs" 298 23 298 24
                                   ]
                               }
                             (TyFun
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 298 9 298 23
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 298 12 298 14 ]
                                  }
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 298 9 298 11
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 298 9 298 11
                                        , srcInfoPoints = []
                                        }
                                      "a'"))
                                (TyFun
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 298 15 298 23
                                     , srcInfoPoints =
                                         [ SrcSpan "tests/examples/DerivingVia.hs" 298 18 298 20 ]
                                     }
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 298 15 298 17
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 298 15 298 17
                                           , srcInfoPoints = []
                                           }
                                         "b'"))
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 298 21 298 23
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 298 21 298 23
                                           , srcInfoPoints = []
                                           }
                                         "c'")))))
                          (TyFun
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 299 8 301 14
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 300 5 300 7 ]
                               }
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 14
                                  , srcInfoPoints = []
                                  }
                                (TyApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 11
                                     , srcInfoPoints = []
                                     }
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 9
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 9
                                           , srcInfoPoints = []
                                           }
                                         "p"))
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 299 10 299 11
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 299 10 299 11
                                           , srcInfoPoints = []
                                           }
                                         "a")))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 299 12 299 14
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 299 12 299 14
                                        , srcInfoPoints = []
                                        }
                                      "a'")))
                             (TyFun
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 300 8 301 14
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 301 5 301 7 ]
                                  }
                                (TyApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 300 8 300 14
                                     , srcInfoPoints = []
                                     }
                                   (TyApp
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 300 8 300 11
                                        , srcInfoPoints = []
                                        }
                                      (TyVar
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 300 8 300 9
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 300 8 300 9
                                              , srcInfoPoints = []
                                              }
                                            "p"))
                                      (TyVar
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 300 10 300 11
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 300 10 300 11
                                              , srcInfoPoints = []
                                              }
                                            "b")))
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 300 12 300 14
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 300 12 300 14
                                           , srcInfoPoints = []
                                           }
                                         "b'")))
                                (TyApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 301 8 301 14
                                     , srcInfoPoints = []
                                     }
                                   (TyApp
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 301 8 301 11
                                        , srcInfoPoints = []
                                        }
                                      (TyVar
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 301 8 301 9
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 301 8 301 9
                                              , srcInfoPoints = []
                                              }
                                            "p"))
                                      (TyVar
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 301 10 301 11
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 301 10 301 11
                                              , srcInfoPoints = []
                                              }
                                            "c")))
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 301 12 301 14
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 301 12 301 14
                                           , srcInfoPoints = []
                                           }
                                         "c'"))))))))
             ])
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 303 1 309 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 303 1 303 9
                , SrcSpan "tests/examples/DerivingVia.hs" 303 28 303 33
                , SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 3
                , SrcSpan "tests/examples/DerivingVia.hs" 306 3 306 3
                , SrcSpan "tests/examples/DerivingVia.hs" 309 1 309 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 27
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 27
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 23
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 23
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 23
                           , srcInfoPoints = []
                           }
                         "Biapplicative")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 27
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 25
                         , SrcSpan "tests/examples/DerivingVia.hs" 303 25 303 26
                         , SrcSpan "tests/examples/DerivingVia.hs" 303 26 303 27
                         ]
                     }
                   (Special
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 27
                        , srcInfoPoints =
                            [ SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 25
                            , SrcSpan "tests/examples/DerivingVia.hs" 303 25 303 26
                            , SrcSpan "tests/examples/DerivingVia.hs" 303 26 303 27
                            ]
                        }
                      (TupleCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 27
                           , srcInfoPoints =
                               [ SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 25
                               , SrcSpan "tests/examples/DerivingVia.hs" 303 25 303 26
                               , SrcSpan "tests/examples/DerivingVia.hs" 303 26 303 27
                               ]
                           }
                         Boxed
                         2)))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 15
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 15
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 9
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 9
                            , srcInfoPoints = []
                            }
                          "bipure"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 304 10 304 15
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 304 10 304 11 ]
                         }
                       (Con
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 15
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 13
                                , SrcSpan "tests/examples/DerivingVia.hs" 304 13 304 14
                                , SrcSpan "tests/examples/DerivingVia.hs" 304 14 304 15
                                ]
                            }
                          (Special
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 15
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 13
                                   , SrcSpan "tests/examples/DerivingVia.hs" 304 13 304 14
                                   , SrcSpan "tests/examples/DerivingVia.hs" 304 14 304 15
                                   ]
                               }
                             (TupleCon
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 15
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 13
                                      , SrcSpan "tests/examples/DerivingVia.hs" 304 13 304 14
                                      , SrcSpan "tests/examples/DerivingVia.hs" 304 14 304 15
                                      ]
                                  }
                                Boxed
                                2))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 306 3 307 22
                   , srcInfoPoints = []
                   }
                 (FunBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 306 3 307 22
                      , srcInfoPoints = []
                      }
                    [ Match
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 306 3 307 22
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 306 3 306 11
                             , srcInfoPoints = []
                             }
                           "biliftA2")
                        [ PVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 306 12 306 13
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 306 12 306 13
                                 , srcInfoPoints = []
                                 }
                               "f")
                        , PVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 306 14 306 16
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 306 14 306 16
                                 , srcInfoPoints = []
                                 }
                               "f'")
                        , PTuple
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 306 17 306 24
                              , srcInfoPoints =
                                  [ SrcSpan "tests/examples/DerivingVia.hs" 306 17 306 18
                                  , SrcSpan "tests/examples/DerivingVia.hs" 306 19 306 20
                                  , SrcSpan "tests/examples/DerivingVia.hs" 306 23 306 24
                                  ]
                              }
                            Boxed
                            [ PVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 306 18 306 19
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 306 18 306 19
                                     , srcInfoPoints = []
                                     }
                                   "a")
                            , PVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 306 21 306 23
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 306 21 306 23
                                     , srcInfoPoints = []
                                     }
                                   "a'")
                            ]
                        , PTuple
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 306 25 306 32
                              , srcInfoPoints =
                                  [ SrcSpan "tests/examples/DerivingVia.hs" 306 25 306 26
                                  , SrcSpan "tests/examples/DerivingVia.hs" 306 27 306 28
                                  , SrcSpan "tests/examples/DerivingVia.hs" 306 31 306 32
                                  ]
                              }
                            Boxed
                            [ PVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 306 26 306 27
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 306 26 306 27
                                     , srcInfoPoints = []
                                     }
                                   "b")
                            , PVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 306 29 306 31
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 306 29 306 31
                                     , srcInfoPoints = []
                                     }
                                   "b'")
                            ]
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 306 33 307 22
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 306 33 306 34 ]
                             }
                           (Tuple
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 307 5 307 22
                                , srcInfoPoints =
                                    [ SrcSpan "tests/examples/DerivingVia.hs" 307 5 307 6
                                    , SrcSpan "tests/examples/DerivingVia.hs" 307 11 307 12
                                    , SrcSpan "tests/examples/DerivingVia.hs" 307 21 307 22
                                    ]
                                }
                              Boxed
                              [ App
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 11
                                    , srcInfoPoints = []
                                    }
                                  (App
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 9
                                       , srcInfoPoints = []
                                       }
                                     (Var
                                        SrcSpanInfo
                                          { srcInfoSpan =
                                              SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 7
                                          , srcInfoPoints = []
                                          }
                                        (UnQual
                                           SrcSpanInfo
                                             { srcInfoSpan =
                                                 SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 7
                                             , srcInfoPoints = []
                                             }
                                           (Ident
                                              SrcSpanInfo
                                                { srcInfoSpan =
                                                    SrcSpan
                                                      "tests/examples/DerivingVia.hs" 307 6 307 7
                                                , srcInfoPoints = []
                                                }
                                              "f")))
                                     (Var
                                        SrcSpanInfo
                                          { srcInfoSpan =
                                              SrcSpan "tests/examples/DerivingVia.hs" 307 8 307 9
                                          , srcInfoPoints = []
                                          }
                                        (UnQual
                                           SrcSpanInfo
                                             { srcInfoSpan =
                                                 SrcSpan "tests/examples/DerivingVia.hs" 307 8 307 9
                                             , srcInfoPoints = []
                                             }
                                           (Ident
                                              SrcSpanInfo
                                                { srcInfoSpan =
                                                    SrcSpan
                                                      "tests/examples/DerivingVia.hs" 307 8 307 9
                                                , srcInfoPoints = []
                                                }
                                              "a"))))
                                  (Var
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia.hs" 307 10 307 11
                                       , srcInfoPoints = []
                                       }
                                     (UnQual
                                        SrcSpanInfo
                                          { srcInfoSpan =
                                              SrcSpan "tests/examples/DerivingVia.hs" 307 10 307 11
                                          , srcInfoPoints = []
                                          }
                                        (Ident
                                           SrcSpanInfo
                                             { srcInfoSpan =
                                                 SrcSpan
                                                   "tests/examples/DerivingVia.hs" 307 10 307 11
                                             , srcInfoPoints = []
                                             }
                                           "b")))
                              , App
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 307 13 307 21
                                    , srcInfoPoints = []
                                    }
                                  (App
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia.hs" 307 13 307 18
                                       , srcInfoPoints = []
                                       }
                                     (Var
                                        SrcSpanInfo
                                          { srcInfoSpan =
                                              SrcSpan "tests/examples/DerivingVia.hs" 307 13 307 15
                                          , srcInfoPoints = []
                                          }
                                        (UnQual
                                           SrcSpanInfo
                                             { srcInfoSpan =
                                                 SrcSpan
                                                   "tests/examples/DerivingVia.hs" 307 13 307 15
                                             , srcInfoPoints = []
                                             }
                                           (Ident
                                              SrcSpanInfo
                                                { srcInfoSpan =
                                                    SrcSpan
                                                      "tests/examples/DerivingVia.hs" 307 13 307 15
                                                , srcInfoPoints = []
                                                }
                                              "f'")))
                                     (Var
                                        SrcSpanInfo
                                          { srcInfoSpan =
                                              SrcSpan "tests/examples/DerivingVia.hs" 307 16 307 18
                                          , srcInfoPoints = []
                                          }
                                        (UnQual
                                           SrcSpanInfo
                                             { srcInfoSpan =
                                                 SrcSpan
                                                   "tests/examples/DerivingVia.hs" 307 16 307 18
                                             , srcInfoPoints = []
                                             }
                                           (Ident
                                              SrcSpanInfo
                                                { srcInfoSpan =
                                                    SrcSpan
                                                      "tests/examples/DerivingVia.hs" 307 16 307 18
                                                , srcInfoPoints = []
                                                }
                                              "a'"))))
                                  (Var
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia.hs" 307 19 307 21
                                       , srcInfoPoints = []
                                       }
                                     (UnQual
                                        SrcSpanInfo
                                          { srcInfoSpan =
                                              SrcSpan "tests/examples/DerivingVia.hs" 307 19 307 21
                                          , srcInfoPoints = []
                                          }
                                        (Ident
                                           SrcSpanInfo
                                             { srcInfoSpan =
                                                 SrcSpan
                                                   "tests/examples/DerivingVia.hs" 307 19 307 21
                                             , srcInfoPoints = []
                                             }
                                           "b'")))
                              ]))
                        Nothing
                    ])
             ])
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 309 1 310 50
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 309 25 309 26 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 309 1 309 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 24
               , srcInfoPoints = []
               }
             (DHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 22
                  , srcInfoPoints = []
                  }
                (DHApp
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 20
                     , srcInfoPoints = []
                     }
                   (DHead
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 18
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 18
                           , srcInfoPoints = []
                           }
                         "WrapBiapp"))
                   (UnkindedVar
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 309 19 309 20
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 309 19 309 20
                           , srcInfoPoints = []
                           }
                         "p")))
                (UnkindedVar
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 309 21 309 22
                     , srcInfoPoints = []
                     }
                   (Ident
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 309 21 309 22
                        , srcInfoPoints = []
                        }
                      "a")))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 309 23 309 24
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 309 23 309 24
                     , srcInfoPoints = []
                     }
                   "b")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 309 27 309 43
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 309 27 309 43
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 309 27 309 35
                      , srcInfoPoints = []
                      }
                    "WrapBiap")
                 [ TyParen
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 309 36 309 43
                       , srcInfoPoints =
                           [ SrcSpan "tests/examples/DerivingVia.hs" 309 36 309 37
                           , SrcSpan "tests/examples/DerivingVia.hs" 309 42 309 43
                           ]
                       }
                     (TyApp
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 42
                          , srcInfoPoints = []
                          }
                        (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 40
                             , srcInfoPoints = []
                             }
                           (TyVar
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 38
                                , srcInfoPoints = []
                                }
                              (Ident
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 38
                                   , srcInfoPoints = []
                                   }
                                 "p"))
                           (TyVar
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 309 39 309 40
                                , srcInfoPoints = []
                                }
                              (Ident
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 309 39 309 40
                                   , srcInfoPoints = []
                                   }
                                 "a")))
                        (TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 309 41 309 42
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 309 41 309 42
                                , srcInfoPoints = []
                                }
                              "b")))
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 310 3 310 50
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 310 3 310 11
                    , SrcSpan "tests/examples/DerivingVia.hs" 310 20 310 21
                    , SrcSpan "tests/examples/DerivingVia.hs" 310 30 310 31
                    , SrcSpan "tests/examples/DerivingVia.hs" 310 45 310 46
                    , SrcSpan "tests/examples/DerivingVia.hs" 310 49 310 50
                    ]
                }
              (Just
                 (DerivNewtype
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 310 12 310 19
                      , srcInfoPoints = []
                      }))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30
                             , srcInfoPoints = []
                             }
                           "Bifunctor")))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45
                             , srcInfoPoints = []
                             }
                           "Biapplicative")))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49
                             , srcInfoPoints = []
                             }
                           "Eq")))
              ]
          ]
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 312 1 321 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 312 1 312 9
                , SrcSpan "tests/examples/DerivingVia.hs" 312 67 312 72
                , SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 3
                , SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 3
                , SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 3
                , SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 3
                , SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 3
                , SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 3
                , SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 3
                , SrcSpan "tests/examples/DerivingVia.hs" 321 1 321 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 312 10 312 66
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxTuple
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 312 10 312 44
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 312 10 312 11
                         , SrcSpan "tests/examples/DerivingVia.hs" 312 26 312 27
                         , SrcSpan "tests/examples/DerivingVia.hs" 312 33 312 34
                         , SrcSpan "tests/examples/DerivingVia.hs" 312 40 312 41
                         , SrcSpan "tests/examples/DerivingVia.hs" 312 42 312 44
                         ]
                     }
                   [ ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 26
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 24
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 24
                               , srcInfoPoints = []
                               }
                             "Biapplicative"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 312 25 312 26
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 312 25 312 26
                                , srcInfoPoints = []
                                }
                              "p")
                       ]
                   , ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 33
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 31
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 31
                               , srcInfoPoints = []
                               }
                             "Num"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 312 32 312 33
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 312 32 312 33
                                , srcInfoPoints = []
                                }
                              "a")
                       ]
                   , ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 40
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 38
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 38
                               , srcInfoPoints = []
                               }
                             "Num"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 312 39 312 40
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 312 39 312 40
                                , srcInfoPoints = []
                                }
                              "b")
                       ]
                   ]))
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 66
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 48
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 48
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 48
                           , srcInfoPoints = []
                           }
                         "Num")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 312 49 312 66
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 312 49 312 50
                         , SrcSpan "tests/examples/DerivingVia.hs" 312 65 312 66
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 65
                        , srcInfoPoints = []
                        }
                      (TyApp
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 63
                           , srcInfoPoints = []
                           }
                         (TyApp
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 61
                              , srcInfoPoints = []
                              }
                            (TyCon
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 59
                                 , srcInfoPoints = []
                                 }
                               (UnQual
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 59
                                    , srcInfoPoints = []
                                    }
                                  (Ident
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 59
                                       , srcInfoPoints = []
                                       }
                                     "WrapBiapp")))
                            (TyVar
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 312 60 312 61
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 312 60 312 61
                                    , srcInfoPoints = []
                                    }
                                  "p")))
                         (TyVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 312 62 312 63
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 312 62 312 63
                                 , srcInfoPoints = []
                                 }
                               "a")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 312 64 312 65
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 312 64 312 65
                              , srcInfoPoints = []
                              }
                            "b"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 25
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 25
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 6
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 4
                             , SrcSpan "tests/examples/DerivingVia.hs" 313 4 313 5
                             , SrcSpan "tests/examples/DerivingVia.hs" 313 5 313 6
                             ]
                         }
                       (Symbol
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 313 4 313 5
                            , srcInfoPoints = []
                            }
                          "+"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 313 7 313 25
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 313 7 313 8 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 25
                            , srcInfoPoints = []
                            }
                          (App
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 21
                               , srcInfoPoints = []
                               }
                             (Var
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 17
                                  , srcInfoPoints = []
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 17
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 17
                                        , srcInfoPoints = []
                                        }
                                      "biliftA2")))
                             (Var
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 21
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 19
                                      , SrcSpan "tests/examples/DerivingVia.hs" 313 19 313 20
                                      , SrcSpan "tests/examples/DerivingVia.hs" 313 20 313 21
                                      ]
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 21
                                     , srcInfoPoints =
                                         [ SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 19
                                         , SrcSpan "tests/examples/DerivingVia.hs" 313 19 313 20
                                         , SrcSpan "tests/examples/DerivingVia.hs" 313 20 313 21
                                         ]
                                     }
                                   (Symbol
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 313 19 313 20
                                        , srcInfoPoints = []
                                        }
                                      "+"))))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 25
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 23
                                   , SrcSpan "tests/examples/DerivingVia.hs" 313 23 313 24
                                   , SrcSpan "tests/examples/DerivingVia.hs" 313 24 313 25
                                   ]
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 25
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 23
                                      , SrcSpan "tests/examples/DerivingVia.hs" 313 23 313 24
                                      , SrcSpan "tests/examples/DerivingVia.hs" 313 24 313 25
                                      ]
                                  }
                                (Symbol
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 313 23 313 24
                                     , srcInfoPoints = []
                                     }
                                   "+")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 25
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 25
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 6
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 4
                             , SrcSpan "tests/examples/DerivingVia.hs" 314 4 314 5
                             , SrcSpan "tests/examples/DerivingVia.hs" 314 5 314 6
                             ]
                         }
                       (Symbol
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 314 4 314 5
                            , srcInfoPoints = []
                            }
                          "-"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 314 7 314 25
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 314 7 314 8 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 25
                            , srcInfoPoints = []
                            }
                          (App
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 21
                               , srcInfoPoints = []
                               }
                             (Var
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 17
                                  , srcInfoPoints = []
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 17
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 17
                                        , srcInfoPoints = []
                                        }
                                      "biliftA2")))
                             (Var
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 21
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 19
                                      , SrcSpan "tests/examples/DerivingVia.hs" 314 19 314 20
                                      , SrcSpan "tests/examples/DerivingVia.hs" 314 20 314 21
                                      ]
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 21
                                     , srcInfoPoints =
                                         [ SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 19
                                         , SrcSpan "tests/examples/DerivingVia.hs" 314 19 314 20
                                         , SrcSpan "tests/examples/DerivingVia.hs" 314 20 314 21
                                         ]
                                     }
                                   (Symbol
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 314 19 314 20
                                        , srcInfoPoints = []
                                        }
                                      "*"))))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 25
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 23
                                   , SrcSpan "tests/examples/DerivingVia.hs" 314 23 314 24
                                   , SrcSpan "tests/examples/DerivingVia.hs" 314 24 314 25
                                   ]
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 25
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 23
                                      , SrcSpan "tests/examples/DerivingVia.hs" 314 23 314 24
                                      , SrcSpan "tests/examples/DerivingVia.hs" 314 24 314 25
                                      ]
                                  }
                                (Symbol
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 314 23 314 24
                                     , srcInfoPoints = []
                                     }
                                   "*")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 25
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 25
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 6
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 4
                             , SrcSpan "tests/examples/DerivingVia.hs" 315 4 315 5
                             , SrcSpan "tests/examples/DerivingVia.hs" 315 5 315 6
                             ]
                         }
                       (Symbol
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 315 4 315 5
                            , srcInfoPoints = []
                            }
                          "*"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 315 7 315 25
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 315 7 315 8 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 25
                            , srcInfoPoints = []
                            }
                          (App
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 21
                               , srcInfoPoints = []
                               }
                             (Var
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 17
                                  , srcInfoPoints = []
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 17
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 17
                                        , srcInfoPoints = []
                                        }
                                      "biliftA2")))
                             (Var
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 21
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 19
                                      , SrcSpan "tests/examples/DerivingVia.hs" 315 19 315 20
                                      , SrcSpan "tests/examples/DerivingVia.hs" 315 20 315 21
                                      ]
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 21
                                     , srcInfoPoints =
                                         [ SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 19
                                         , SrcSpan "tests/examples/DerivingVia.hs" 315 19 315 20
                                         , SrcSpan "tests/examples/DerivingVia.hs" 315 20 315 21
                                         ]
                                     }
                                   (Symbol
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 315 19 315 20
                                        , srcInfoPoints = []
                                        }
                                      "*"))))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 25
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 23
                                   , SrcSpan "tests/examples/DerivingVia.hs" 315 23 315 24
                                   , SrcSpan "tests/examples/DerivingVia.hs" 315 24 315 25
                                   ]
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 25
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 23
                                      , SrcSpan "tests/examples/DerivingVia.hs" 315 23 315 24
                                      , SrcSpan "tests/examples/DerivingVia.hs" 315 24 315 25
                                      ]
                                  }
                                (Symbol
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 315 23 315 24
                                     , srcInfoPoints = []
                                     }
                                   "*")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 31
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 31
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 9
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 9
                            , srcInfoPoints = []
                            }
                          "negate"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 316 10 316 31
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 316 10 316 11 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 31
                            , srcInfoPoints = []
                            }
                          (App
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 24
                               , srcInfoPoints = []
                               }
                             (Var
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 17
                                  , srcInfoPoints = []
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 17
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 17
                                        , srcInfoPoints = []
                                        }
                                      "bimap")))
                             (Var
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 316 18 316 24
                                  , srcInfoPoints = []
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 316 18 316 24
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 316 18 316 24
                                        , srcInfoPoints = []
                                        }
                                      "negate"))))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 316 25 316 31
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 316 25 316 31
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 316 25 316 31
                                     , srcInfoPoints = []
                                     }
                                   "negate")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 22
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 22
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 6
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 6
                            , srcInfoPoints = []
                            }
                          "abs"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 317 7 317 22
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 317 7 317 8 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 22
                            , srcInfoPoints = []
                            }
                          (App
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 18
                               , srcInfoPoints = []
                               }
                             (Var
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 14
                                  , srcInfoPoints = []
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 14
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 14
                                        , srcInfoPoints = []
                                        }
                                      "bimap")))
                             (Var
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 317 15 317 18
                                  , srcInfoPoints = []
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 317 15 317 18
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 317 15 317 18
                                        , srcInfoPoints = []
                                        }
                                      "abs"))))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 317 19 317 22
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 317 19 317 22
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 317 19 317 22
                                     , srcInfoPoints = []
                                     }
                                   "abs")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 31
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 31
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 9
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 9
                            , srcInfoPoints = []
                            }
                          "signum"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 318 10 318 31
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 318 10 318 11 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 31
                            , srcInfoPoints = []
                            }
                          (App
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 24
                               , srcInfoPoints = []
                               }
                             (Var
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 17
                                  , srcInfoPoints = []
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 17
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 17
                                        , srcInfoPoints = []
                                        }
                                      "bimap")))
                             (Var
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 318 18 318 24
                                  , srcInfoPoints = []
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 318 18 318 24
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 318 18 318 24
                                        , srcInfoPoints = []
                                        }
                                      "signum"))))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 318 25 318 31
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 318 25 318 31
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 318 25 318 31
                                     , srcInfoPoints = []
                                     }
                                   "signum")))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 55
                   , srcInfoPoints = []
                   }
                 (FunBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 55
                      , srcInfoPoints = []
                      }
                    [ Match
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 55
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 14
                             , srcInfoPoints = []
                             }
                           "fromInteger")
                        [ PVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 319 15 319 16
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 319 15 319 16
                                 , srcInfoPoints = []
                                 }
                               "n")
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 319 17 319 55
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 319 17 319 18 ]
                             }
                           (InfixApp
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 55
                                , srcInfoPoints = []
                                }
                              (App
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 32
                                   , srcInfoPoints = []
                                   }
                                 (Var
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 30
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 30
                                         , srcInfoPoints = []
                                         }
                                       (Ident
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 319 19 319 30
                                            , srcInfoPoints = []
                                            }
                                          "fromInteger")))
                                 (Var
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 319 31 319 32
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 319 31 319 32
                                         , srcInfoPoints = []
                                         }
                                       (Ident
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 319 31 319 32
                                            , srcInfoPoints = []
                                            }
                                          "n"))))
                              (QVarOp
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 41
                                   , srcInfoPoints =
                                       [ SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 34
                                       , SrcSpan "tests/examples/DerivingVia.hs" 319 34 319 40
                                       , SrcSpan "tests/examples/DerivingVia.hs" 319 40 319 41
                                       ]
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 41
                                      , srcInfoPoints =
                                          [ SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 34
                                          , SrcSpan "tests/examples/DerivingVia.hs" 319 34 319 40
                                          , SrcSpan "tests/examples/DerivingVia.hs" 319 40 319 41
                                          ]
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 319 34 319 40
                                         , srcInfoPoints = []
                                         }
                                       "bipure")))
                              (App
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 319 42 319 55
                                   , srcInfoPoints = []
                                   }
                                 (Var
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 319 42 319 53
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 319 42 319 53
                                         , srcInfoPoints = []
                                         }
                                       (Ident
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 319 42 319 53
                                            , srcInfoPoints = []
                                            }
                                          "fromInteger")))
                                 (Var
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 319 54 319 55
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 319 54 319 55
                                         , srcInfoPoints = []
                                         }
                                       (Ident
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 319 54 319 55
                                            , srcInfoPoints = []
                                            }
                                          "n"))))))
                        Nothing
                    ])
             ])
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 321 1 322 18
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 321 14 321 15 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 321 1 321 8
               , srcInfoPoints = []
               })
          Nothing
          (DHead
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 321 9 321 13
               , srcInfoPoints = []
               }
             (Ident
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 321 9 321 13
                  , srcInfoPoints = []
                  }
                "INT2"))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 321 16 321 31
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 321 16 321 31
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 321 16 321 20
                      , srcInfoPoints = []
                      }
                    "INT2")
                 [ TyTuple
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 321 21 321 31
                       , srcInfoPoints =
                           [ SrcSpan "tests/examples/DerivingVia.hs" 321 21 321 22
                           , SrcSpan "tests/examples/DerivingVia.hs" 321 25 321 26
                           , SrcSpan "tests/examples/DerivingVia.hs" 321 30 321 31
                           ]
                       }
                     Boxed
                     [ TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 321 22 321 25
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 321 22 321 25
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 321 22 321 25
                                 , srcInfoPoints = []
                                 }
                               "Int"))
                     , TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 321 27 321 30
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 321 27 321 30
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 321 27 321 30
                                 , srcInfoPoints = []
                                 }
                               "Int"))
                     ]
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 322 3 322 18
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 322 3 322 11 ]
                }
              (Just
                 (DerivVia
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 322 19 322 22
                      , srcInfoPoints = []
                      }
                    (TyParen
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 322 23 322 62
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 322 23 322 24
                             , SrcSpan "tests/examples/DerivingVia.hs" 322 61 322 62
                             ]
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 61
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 37
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 37
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 37
                                     , srcInfoPoints = []
                                     }
                                   "WrappedNumEq2")))
                          (TyParen
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 322 38 322 61
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 322 38 322 39
                                   , SrcSpan "tests/examples/DerivingVia.hs" 322 60 322 61
                                   ]
                               }
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 60
                                  , srcInfoPoints = []
                                  }
                                (TyApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 56
                                     , srcInfoPoints = []
                                     }
                                   (TyApp
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 52
                                        , srcInfoPoints = []
                                        }
                                      (TyCon
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 48
                                           , srcInfoPoints = []
                                           }
                                         (UnQual
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 322 39 322 48
                                              , srcInfoPoints = []
                                              }
                                            (Ident
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 322 39 322 48
                                                 , srcInfoPoints = []
                                                 }
                                               "WrapBiapp")))
                                      (TyCon
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 322 49 322 52
                                           , srcInfoPoints =
                                               [ SrcSpan
                                                   "tests/examples/DerivingVia.hs" 322 49 322 50
                                               , SrcSpan
                                                   "tests/examples/DerivingVia.hs" 322 50 322 51
                                               , SrcSpan
                                                   "tests/examples/DerivingVia.hs" 322 51 322 52
                                               ]
                                           }
                                         (Special
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 322 49 322 52
                                              , srcInfoPoints =
                                                  [ SrcSpan
                                                      "tests/examples/DerivingVia.hs" 322 49 322 50
                                                  , SrcSpan
                                                      "tests/examples/DerivingVia.hs" 322 50 322 51
                                                  , SrcSpan
                                                      "tests/examples/DerivingVia.hs" 322 51 322 52
                                                  ]
                                              }
                                            (TupleCon
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 322 49 322 52
                                                 , srcInfoPoints =
                                                     [ SrcSpan
                                                         "tests/examples/DerivingVia.hs"
                                                         322
                                                         49
                                                         322
                                                         50
                                                     , SrcSpan
                                                         "tests/examples/DerivingVia.hs"
                                                         322
                                                         50
                                                         322
                                                         51
                                                     , SrcSpan
                                                         "tests/examples/DerivingVia.hs"
                                                         322
                                                         51
                                                         322
                                                         52
                                                     ]
                                                 }
                                               Boxed
                                               2))))
                                   (TyCon
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 322 53 322 56
                                        , srcInfoPoints = []
                                        }
                                      (UnQual
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 322 53 322 56
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 322 53 322 56
                                              , srcInfoPoints = []
                                              }
                                            "Int"))))
                                (TyCon
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 322 57 322 60
                                     , srcInfoPoints = []
                                     }
                                   (UnQual
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 322 57 322 60
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 322 57 322 60
                                           , srcInfoPoints = []
                                           }
                                         "Int")))))))))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18
                             , srcInfoPoints = []
                             }
                           "IsZero")))
              ]
          ]
      , ClassDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 327 1 328 20
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 327 1 327 6
                , SrcSpan "tests/examples/DerivingVia.hs" 327 32 327 37
                , SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 3
                , SrcSpan "tests/examples/DerivingVia.hs" 330 1 330 0
                ]
            }
          (Just
             (CxSingle
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 18
                  , srcInfoPoints =
                      [ SrcSpan "tests/examples/DerivingVia.hs" 327 16 327 18 ]
                  }
                (ClassA
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 18
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 327 16 327 18 ]
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 13
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 13
                           , srcInfoPoints = []
                           }
                         "Monoid"))
                   [ TyVar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 327 14 327 15
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 327 14 327 15
                            , srcInfoPoints = []
                            }
                          "a")
                   ])))
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 327 19 327 31
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 327 19 327 29
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 327 19 327 29
                     , srcInfoPoints = []
                     }
                   "MonoidNull"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 327 30 327 31
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 327 30 327 31
                     , srcInfoPoints = []
                     }
                   "a")))
          []
          (Just
             [ ClsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 20
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 328 8 328 10 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 20
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 328 8 328 10 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 7
                          , srcInfoPoints = []
                          }
                        "null"
                    ]
                    (TyFun
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 328 11 328 20
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 328 13 328 15 ]
                         }
                       (TyVar
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 328 11 328 12
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 328 11 328 12
                               , srcInfoPoints = []
                               }
                             "a"))
                       (TyCon
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 328 16 328 20
                            , srcInfoPoints = []
                            }
                          (UnQual
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 328 16 328 20
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 328 16 328 20
                                  , srcInfoPoints = []
                                  }
                                "Bool")))))
             ])
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 330 1 330 62
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 330 22 330 23 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 330 1 330 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 330 9 330 21
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 330 9 330 19
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 330 9 330 19
                     , srcInfoPoints = []
                     }
                   "WrpMonNull"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 330 20 330 21
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 330 20 330 21
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 330 24 330 29
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 330 24 330 29
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 330 24 330 27
                      , srcInfoPoints = []
                      }
                    "WRM")
                 [ TyVar
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 330 28 330 29
                       , srcInfoPoints = []
                       }
                     (Ident
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 330 28 330 29
                          , srcInfoPoints = []
                          }
                        "a")
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 330 30 330 62
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 330 30 330 38
                    , SrcSpan "tests/examples/DerivingVia.hs" 330 39 330 40
                    , SrcSpan "tests/examples/DerivingVia.hs" 330 42 330 43
                    , SrcSpan "tests/examples/DerivingVia.hs" 330 53 330 54
                    , SrcSpan "tests/examples/DerivingVia.hs" 330 61 330 62
                    ]
                }
              Nothing
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42
                             , srcInfoPoints = []
                             }
                           "Eq")))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53
                             , srcInfoPoints = []
                             }
                           "Semigroup")))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61
                             , srcInfoPoints = []
                             }
                           "Monoid")))
              ]
          ]
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 332 1 336 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 332 1 332 9
                , SrcSpan "tests/examples/DerivingVia.hs" 332 56 332 61
                , SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 3
                , SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 3
                , SrcSpan "tests/examples/DerivingVia.hs" 336 1 336 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 332 10 332 55
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxTuple
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 332 10 332 29
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 332 10 332 11
                         , SrcSpan "tests/examples/DerivingVia.hs" 332 15 332 16
                         , SrcSpan "tests/examples/DerivingVia.hs" 332 25 332 26
                         , SrcSpan "tests/examples/DerivingVia.hs" 332 27 332 29
                         ]
                     }
                   [ ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 15
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 13
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 13
                               , srcInfoPoints = []
                               }
                             "Eq"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 332 14 332 15
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 332 14 332 15
                                , srcInfoPoints = []
                                }
                              "a")
                       ]
                   , ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 25
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 23
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 23
                               , srcInfoPoints = []
                               }
                             "Monoid"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 332 24 332 25
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 332 24 332 25
                                , srcInfoPoints = []
                                }
                              "a")
                       ]
                   ]))
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 55
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 40
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 40
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 40
                           , srcInfoPoints = []
                           }
                         "MonoidNull")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 332 41 332 55
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 332 41 332 42
                         , SrcSpan "tests/examples/DerivingVia.hs" 332 54 332 55
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 54
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 52
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 52
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 52
                                 , srcInfoPoints = []
                                 }
                               "WrpMonNull")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 332 53 332 54
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 332 53 332 54
                              , srcInfoPoints = []
                              }
                            "a"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 31
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 333 8 333 10 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 31
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 333 8 333 10 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 7
                          , srcInfoPoints = []
                          }
                        "null"
                    ]
                    (TyFun
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 31
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 333 24 333 26 ]
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 23
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 21
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 21
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 21
                                     , srcInfoPoints = []
                                     }
                                   "WrpMonNull")))
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 333 22 333 23
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 333 22 333 23
                                  , srcInfoPoints = []
                                  }
                                "a")))
                       (TyCon
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 333 27 333 31
                            , srcInfoPoints = []
                            }
                          (UnQual
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 333 27 333 31
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 333 27 333 31
                                  , srcInfoPoints = []
                                  }
                                "Bool")))))
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 21
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 21
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 7
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 7
                            , srcInfoPoints = []
                            }
                          "null"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 334 8 334 21
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 334 8 334 9 ]
                         }
                       (RightSection
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 334 10 334 21
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 334 10 334 11
                                , SrcSpan "tests/examples/DerivingVia.hs" 334 20 334 21
                                ]
                            }
                          (QVarOp
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 334 11 334 13
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 334 11 334 13
                                  , srcInfoPoints = []
                                  }
                                (Symbol
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 334 11 334 13
                                     , srcInfoPoints = []
                                     }
                                   "==")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 334 14 334 20
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 334 14 334 20
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 334 14 334 20
                                     , srcInfoPoints = []
                                     }
                                   "mempty")))))
                    Nothing)
             ])
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 336 1 336 54
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 336 1 336 9
                , SrcSpan "tests/examples/DerivingVia.hs" 336 31 336 39
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 336 10 336 13
                  , srcInfoPoints = []
                  }
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 336 14 336 30
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 336 14 336 15
                         , SrcSpan "tests/examples/DerivingVia.hs" 336 29 336 30
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 29
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 25
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 25
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 25
                                 , srcInfoPoints = []
                                 }
                               "WrpMonNull")))
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 336 26 336 29
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 336 26 336 29
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 336 26 336 29
                                 , srcInfoPoints = []
                                 }
                               "Any")))))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 54
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 54
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 50
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 50
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 50
                           , srcInfoPoints = []
                           }
                         "MonoidNull")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 336 51 336 54
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 336 51 336 54
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 336 51 336 54
                           , srcInfoPoints = []
                           }
                         "Any")))))
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 337 1 337 53
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 337 1 337 9
                , SrcSpan "tests/examples/DerivingVia.hs" 337 31 337 39
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 337 10 337 13
                  , srcInfoPoints = []
                  }
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 16
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 15
                         , SrcSpan "tests/examples/DerivingVia.hs" 337 15 337 16
                         ]
                     }
                   (Special
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 16
                        , srcInfoPoints =
                            [ SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 15
                            , SrcSpan "tests/examples/DerivingVia.hs" 337 15 337 16
                            ]
                        }
                      (UnitCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 16
                           , srcInfoPoints =
                               [ SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 15
                               , SrcSpan "tests/examples/DerivingVia.hs" 337 15 337 16
                               ]
                           })))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 53
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 53
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 50
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 50
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 50
                           , srcInfoPoints = []
                           }
                         "MonoidNull")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 53
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 52
                         , SrcSpan "tests/examples/DerivingVia.hs" 337 52 337 53
                         ]
                     }
                   (Special
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 53
                        , srcInfoPoints =
                            [ SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 52
                            , SrcSpan "tests/examples/DerivingVia.hs" 337 52 337 53
                            ]
                        }
                      (UnitCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 53
                           , srcInfoPoints =
                               [ SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 52
                               , SrcSpan "tests/examples/DerivingVia.hs" 337 52 337 53
                               ]
                           })))))
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 338 1 338 59
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 338 1 338 9
                , SrcSpan "tests/examples/DerivingVia.hs" 338 31 338 39
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 338 10 338 13
                  , srcInfoPoints = []
                  }
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 338 14 338 22
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 338 14 338 22
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 338 14 338 22
                           , srcInfoPoints = []
                           }
                         "Ordering")))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 59
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 59
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 50
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 50
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 50
                           , srcInfoPoints = []
                           }
                         "MonoidNull")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 338 51 338 59
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 338 51 338 59
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 338 51 338 59
                           , srcInfoPoints = []
                           }
                         "Ordering")))))
      , ClassDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 345 1 348 26
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 345 1 345 6
                , SrcSpan "tests/examples/DerivingVia.hs" 345 17 345 22
                , SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 3
                , SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 3
                , SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 3
                , SrcSpan "tests/examples/DerivingVia.hs" 350 1 350 0
                ]
            }
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 345 7 345 16
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 345 7 345 14
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 345 7 345 14
                     , srcInfoPoints = []
                     }
                   "Lattice"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 345 15 345 16
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 345 15 345 16
                     , srcInfoPoints = []
                     }
                   "a")))
          []
          (Just
             [ ClsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 23
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 346 9 346 11 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 23
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 346 9 346 11 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 6
                          , srcInfoPoints = []
                          }
                        "sup"
                    ]
                    (TyFun
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 346 12 346 23
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 346 14 346 16 ]
                         }
                       (TyVar
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 346 12 346 13
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 346 12 346 13
                               , srcInfoPoints = []
                               }
                             "a"))
                       (TyFun
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 346 17 346 23
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 346 19 346 21 ]
                            }
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 346 17 346 18
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 346 17 346 18
                                  , srcInfoPoints = []
                                  }
                                "a"))
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 346 22 346 23
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 346 22 346 23
                                  , srcInfoPoints = []
                                  }
                                "a")))))
             , ClsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 26
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 347 9 347 11 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 26
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 347 9 347 11 ]
                      }
                    [ Symbol
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 8
                          , srcInfoPoints =
                              [ SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 4
                              , SrcSpan "tests/examples/DerivingVia.hs" 347 4 347 7
                              , SrcSpan "tests/examples/DerivingVia.hs" 347 7 347 8
                              ]
                          }
                        ".>="
                    ]
                    (TyFun
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 347 12 347 26
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 347 14 347 16 ]
                         }
                       (TyVar
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 347 12 347 13
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 347 12 347 13
                               , srcInfoPoints = []
                               }
                             "a"))
                       (TyFun
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 347 17 347 26
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 347 19 347 21 ]
                            }
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 347 17 347 18
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 347 17 347 18
                                  , srcInfoPoints = []
                                  }
                                "a"))
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 347 22 347 26
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 347 22 347 26
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 347 22 347 26
                                     , srcInfoPoints = []
                                     }
                                   "Bool"))))))
             , ClsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 26
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 348 9 348 11 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 26
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 348 9 348 11 ]
                      }
                    [ Symbol
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 7
                          , srcInfoPoints =
                              [ SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 4
                              , SrcSpan "tests/examples/DerivingVia.hs" 348 4 348 6
                              , SrcSpan "tests/examples/DerivingVia.hs" 348 6 348 7
                              ]
                          }
                        ".>"
                    ]
                    (TyFun
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 348 12 348 26
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 348 14 348 16 ]
                         }
                       (TyVar
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 348 12 348 13
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 348 12 348 13
                               , srcInfoPoints = []
                               }
                             "a"))
                       (TyFun
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 348 17 348 26
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 348 19 348 21 ]
                            }
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 348 17 348 18
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 348 17 348 18
                                  , srcInfoPoints = []
                                  }
                                "a"))
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 348 22 348 26
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 348 22 348 26
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 348 22 348 26
                                     , srcInfoPoints = []
                                     }
                                   "Bool"))))))
             ])
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 350 1 351 29
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 350 19 350 20 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 350 1 350 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 350 9 350 18
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 350 9 350 16
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 350 9 350 16
                     , srcInfoPoints = []
                     }
                   "WrapOrd"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 350 17 350 18
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 350 17 350 18
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 350 21 350 33
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 350 21 350 33
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 350 21 350 31
                      , srcInfoPoints = []
                      }
                    "WrappedOrd")
                 [ TyVar
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 350 32 350 33
                       , srcInfoPoints = []
                       }
                     (Ident
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 350 32 350 33
                          , srcInfoPoints = []
                          }
                        "a")
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 351 3 351 29
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 351 3 351 11
                    , SrcSpan "tests/examples/DerivingVia.hs" 351 20 351 21
                    , SrcSpan "tests/examples/DerivingVia.hs" 351 23 351 24
                    , SrcSpan "tests/examples/DerivingVia.hs" 351 28 351 29
                    ]
                }
              (Just
                 (DerivNewtype
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 351 12 351 19
                      , srcInfoPoints = []
                      }))
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23
                             , srcInfoPoints = []
                             }
                           "Eq")))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28
                             , srcInfoPoints = []
                             }
                           "Ord")))
              ]
          ]
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 353 1 358 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 353 1 353 9
                , SrcSpan "tests/examples/DerivingVia.hs" 353 39 353 44
                , SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 3
                , SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 3
                , SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 3
                , SrcSpan "tests/examples/DerivingVia.hs" 358 1 358 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 38
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxSingle
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 18
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 353 16 353 18 ]
                     }
                   (ClassA
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 18
                        , srcInfoPoints =
                            [ SrcSpan "tests/examples/DerivingVia.hs" 353 16 353 18 ]
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 13
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 13
                              , srcInfoPoints = []
                              }
                            "Ord"))
                      [ TyVar
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 353 14 353 15
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 353 14 353 15
                               , srcInfoPoints = []
                               }
                             "a")
                      ])))
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 38
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 26
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 26
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 26
                           , srcInfoPoints = []
                           }
                         "Lattice")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 353 27 353 38
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 353 27 353 28
                         , SrcSpan "tests/examples/DerivingVia.hs" 353 37 353 38
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 37
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 35
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 35
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 35
                                 , srcInfoPoints = []
                                 }
                               "WrapOrd")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 353 36 353 37
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 353 36 353 37
                              , srcInfoPoints = []
                              }
                            "a"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 14
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 14
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 6
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 6
                            , srcInfoPoints = []
                            }
                          "sup"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 354 9 354 14
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 354 9 354 10 ]
                         }
                       (Var
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 354 11 354 14
                            , srcInfoPoints = []
                            }
                          (UnQual
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 354 11 354 14
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 354 11 354 14
                                  , srcInfoPoints = []
                                  }
                                "max"))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 15
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 15
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 8
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 4
                             , SrcSpan "tests/examples/DerivingVia.hs" 355 4 355 7
                             , SrcSpan "tests/examples/DerivingVia.hs" 355 7 355 8
                             ]
                         }
                       (Symbol
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 355 4 355 7
                            , srcInfoPoints = []
                            }
                          ".>="))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 355 9 355 15
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 355 9 355 10 ]
                         }
                       (Var
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 15
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 12
                                , SrcSpan "tests/examples/DerivingVia.hs" 355 12 355 14
                                , SrcSpan "tests/examples/DerivingVia.hs" 355 14 355 15
                                ]
                            }
                          (UnQual
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 15
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 12
                                   , SrcSpan "tests/examples/DerivingVia.hs" 355 12 355 14
                                   , SrcSpan "tests/examples/DerivingVia.hs" 355 14 355 15
                                   ]
                               }
                             (Symbol
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 355 12 355 14
                                  , srcInfoPoints = []
                                  }
                                ">="))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 14
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 14
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 7
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 4
                             , SrcSpan "tests/examples/DerivingVia.hs" 356 4 356 6
                             , SrcSpan "tests/examples/DerivingVia.hs" 356 6 356 7
                             ]
                         }
                       (Symbol
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 356 4 356 6
                            , srcInfoPoints = []
                            }
                          ".>"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 356 9 356 14
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 356 9 356 10 ]
                         }
                       (Var
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 14
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 12
                                , SrcSpan "tests/examples/DerivingVia.hs" 356 12 356 13
                                , SrcSpan "tests/examples/DerivingVia.hs" 356 13 356 14
                                ]
                            }
                          (UnQual
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 14
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 12
                                   , SrcSpan "tests/examples/DerivingVia.hs" 356 12 356 13
                                   , SrcSpan "tests/examples/DerivingVia.hs" 356 13 356 14
                                   ]
                               }
                             (Symbol
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 356 12 356 13
                                  , srcInfoPoints = []
                                  }
                                ">"))))
                    Nothing)
             ])
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 358 1 358 59
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 358 1 358 9
                , SrcSpan "tests/examples/DerivingVia.hs" 358 21 358 29
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 358 10 358 13
                  , srcInfoPoints = []
                  }
                (TyList
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 358 14 358 17
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 358 14 358 15
                         , SrcSpan "tests/examples/DerivingVia.hs" 358 16 358 17
                         ]
                     }
                   (TyVar
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 358 15 358 16
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 358 15 358 16
                           , srcInfoPoints = []
                           }
                         "a")))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 59
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxSingle
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 47
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 358 45 358 47 ]
                     }
                   (ClassA
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 47
                        , srcInfoPoints =
                            [ SrcSpan "tests/examples/DerivingVia.hs" 358 45 358 47 ]
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 33
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 33
                              , srcInfoPoints = []
                              }
                            "Ord"))
                      [ TyVar
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 358 34 358 35
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 358 34 358 35
                               , srcInfoPoints = []
                               }
                             "a")
                      ])))
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 59
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 55
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 55
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 55
                           , srcInfoPoints = []
                           }
                         "Lattice")))
                (TyList
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 358 56 358 59
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 358 56 358 57
                         , SrcSpan "tests/examples/DerivingVia.hs" 358 58 358 59
                         ]
                     }
                   (TyVar
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 358 57 358 58
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 358 57 358 58
                           , srcInfoPoints = []
                           }
                         "a")))))
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 359 1 359 62
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 359 1 359 9
                , SrcSpan "tests/examples/DerivingVia.hs" 359 21 359 29
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 359 10 359 13
                  , srcInfoPoints = []
                  }
                (TyTuple
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 359 14 359 20
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 359 14 359 15
                         , SrcSpan "tests/examples/DerivingVia.hs" 359 16 359 17
                         , SrcSpan "tests/examples/DerivingVia.hs" 359 19 359 20
                         ]
                     }
                   Boxed
                   [ TyVar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 359 15 359 16
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 359 15 359 16
                            , srcInfoPoints = []
                            }
                          "a")
                   , TyVar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 359 18 359 19
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 359 18 359 19
                            , srcInfoPoints = []
                            }
                          "b")
                   ])))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 359 30 359 62
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxTuple
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 359 30 359 47
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 359 30 359 31
                         , SrcSpan "tests/examples/DerivingVia.hs" 359 36 359 37
                         , SrcSpan "tests/examples/DerivingVia.hs" 359 43 359 44
                         , SrcSpan "tests/examples/DerivingVia.hs" 359 45 359 47
                         ]
                     }
                   [ ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 36
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 34
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 34
                               , srcInfoPoints = []
                               }
                             "Ord"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 359 35 359 36
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 359 35 359 36
                                , srcInfoPoints = []
                                }
                              "a")
                       ]
                   , ClassA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 43
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 41
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 41
                               , srcInfoPoints = []
                               }
                             "Ord"))
                       [ TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 359 42 359 43
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 359 42 359 43
                                , srcInfoPoints = []
                                }
                              "b")
                       ]
                   ]))
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 62
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 55
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 55
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 55
                           , srcInfoPoints = []
                           }
                         "Lattice")))
                (TyTuple
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 359 56 359 62
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 359 56 359 57
                         , SrcSpan "tests/examples/DerivingVia.hs" 359 58 359 59
                         , SrcSpan "tests/examples/DerivingVia.hs" 359 61 359 62
                         ]
                     }
                   Boxed
                   [ TyVar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 359 57 359 58
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 359 57 359 58
                            , srcInfoPoints = []
                            }
                          "a")
                   , TyVar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 359 60 359 61
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 359 60 359 61
                            , srcInfoPoints = []
                            }
                          "b")
                   ])))
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 361 1 361 40
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 361 1 361 9
                , SrcSpan "tests/examples/DerivingVia.hs" 361 19 361 27
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 361 10 361 13
                  , srcInfoPoints = []
                  }
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 361 14 361 18
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 361 14 361 18
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 361 14 361 18
                           , srcInfoPoints = []
                           }
                         "Bool")))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 40
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 40
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 35
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 35
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 35
                           , srcInfoPoints = []
                           }
                         "Lattice")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 361 36 361 40
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 361 36 361 40
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 361 36 361 40
                           , srcInfoPoints = []
                           }
                         "Bool")))))
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 363 1 363 40
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 363 1 363 9
                , SrcSpan "tests/examples/DerivingVia.hs" 363 19 363 27
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 363 10 363 13
                  , srcInfoPoints = []
                  }
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 363 14 363 18
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 363 14 363 18
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 363 14 363 18
                           , srcInfoPoints = []
                           }
                         "Char")))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 40
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 40
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 35
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 35
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 35
                           , srcInfoPoints = []
                           }
                         "Lattice")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 363 36 363 40
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 363 36 363 40
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 363 36 363 40
                           , srcInfoPoints = []
                           }
                         "Char")))))
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 365 1 365 38
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 365 1 365 9
                , SrcSpan "tests/examples/DerivingVia.hs" 365 18 365 26
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 365 10 365 13
                  , srcInfoPoints = []
                  }
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 365 14 365 17
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 365 14 365 17
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 365 14 365 17
                           , srcInfoPoints = []
                           }
                         "Int")))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 38
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 38
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 34
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 34
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 34
                           , srcInfoPoints = []
                           }
                         "Lattice")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 365 35 365 38
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 365 35 365 38
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 365 35 365 38
                           , srcInfoPoints = []
                           }
                         "Int")))))
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 367 1 367 46
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 367 1 367 9
                , SrcSpan "tests/examples/DerivingVia.hs" 367 22 367 30
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 367 10 367 13
                  , srcInfoPoints = []
                  }
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 367 14 367 21
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 367 14 367 21
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 367 14 367 21
                           , srcInfoPoints = []
                           }
                         "Integer")))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 46
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 46
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 38
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 38
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 38
                           , srcInfoPoints = []
                           }
                         "Lattice")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 367 39 367 46
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 367 39 367 46
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 367 39 367 46
                           , srcInfoPoints = []
                           }
                         "Integer")))))
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 369 1 369 42
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 369 1 369 9
                , SrcSpan "tests/examples/DerivingVia.hs" 369 20 369 28
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 369 10 369 13
                  , srcInfoPoints = []
                  }
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 369 14 369 19
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 369 14 369 19
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 369 14 369 19
                           , srcInfoPoints = []
                           }
                         "Float")))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 42
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 42
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 36
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 36
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 36
                           , srcInfoPoints = []
                           }
                         "Lattice")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 369 37 369 42
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 369 37 369 42
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 369 37 369 42
                           , srcInfoPoints = []
                           }
                         "Float")))))
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 371 1 371 44
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 371 1 371 9
                , SrcSpan "tests/examples/DerivingVia.hs" 371 21 371 29
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 371 10 371 13
                  , srcInfoPoints = []
                  }
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 371 14 371 20
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 371 14 371 20
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 371 14 371 20
                           , srcInfoPoints = []
                           }
                         "Double")))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 44
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 44
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 37
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 37
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 37
                           , srcInfoPoints = []
                           }
                         "Lattice")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 371 38 371 44
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 371 38 371 44
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 371 38 371 44
                           , srcInfoPoints = []
                           }
                         "Double")))))
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 373 1 373 48
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 373 1 373 9
                , SrcSpan "tests/examples/DerivingVia.hs" 373 23 373 31
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 373 10 373 13
                  , srcInfoPoints = []
                  }
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 373 14 373 22
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 373 14 373 22
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 373 14 373 22
                           , srcInfoPoints = []
                           }
                         "Rational")))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 48
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 48
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 39
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 39
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 39
                           , srcInfoPoints = []
                           }
                         "Lattice")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 373 40 373 48
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 373 40 373 48
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 373 40 373 48
                           , srcInfoPoints = []
                           }
                         "Rational")))))
      , ClassDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 380 1 386 47
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 380 1 380 6
                , SrcSpan "tests/examples/DerivingVia.hs" 380 31 380 36
                , SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 3
                , SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 3
                , SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 3
                , SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 3
                , SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 3
                , SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 3
                , SrcSpan "tests/examples/DerivingVia.hs" 388 1 388 0
                ]
            }
          (Just
             (CxSingle
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 19
                  , srcInfoPoints =
                      [ SrcSpan "tests/examples/DerivingVia.hs" 380 17 380 19 ]
                  }
                (ClassA
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 19
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 380 17 380 19 ]
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 14
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 14
                           , srcInfoPoints = []
                           }
                         "Functor"))
                   [ TyVar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 380 15 380 16
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 380 15 380 16
                            , srcInfoPoints = []
                            }
                          "f")
                   ])))
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 380 20 380 30
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 380 20 380 28
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 380 20 380 28
                     , srcInfoPoints = []
                     }
                   "Additive"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 380 29 380 30
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 380 29 380 30
                     , srcInfoPoints = []
                     }
                   "f")))
          []
          (Just
             [ ClsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 23
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 381 8 381 10 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 23
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 381 8 381 10 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 7
                          , srcInfoPoints = []
                          }
                        "zero"
                    ]
                    (TyForall
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 23
                         , srcInfoPoints = []
                         }
                       Nothing
                       (Just
                          (CxSingle
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 19
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 381 17 381 19 ]
                               }
                             (ClassA
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 19
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 381 17 381 19 ]
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 14
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 14
                                        , srcInfoPoints = []
                                        }
                                      "Num"))
                                [ TyVar
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 381 15 381 16
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 381 15 381 16
                                         , srcInfoPoints = []
                                         }
                                       "a")
                                ])))
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 381 20 381 23
                            , srcInfoPoints = []
                            }
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 381 20 381 21
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 381 20 381 21
                                  , srcInfoPoints = []
                                  }
                                "f"))
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 381 22 381 23
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 381 22 381 23
                                  , srcInfoPoints = []
                                  }
                                "a")))))
             , ClsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 38
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 382 9 382 11 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 38
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 382 9 382 11 ]
                      }
                    [ Symbol
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 8
                          , srcInfoPoints =
                              [ SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 4
                              , SrcSpan "tests/examples/DerivingVia.hs" 382 4 382 7
                              , SrcSpan "tests/examples/DerivingVia.hs" 382 7 382 8
                              ]
                          }
                        "^+^"
                    ]
                    (TyForall
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 38
                         , srcInfoPoints = []
                         }
                       Nothing
                       (Just
                          (CxSingle
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 20
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 382 18 382 20 ]
                               }
                             (ClassA
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 20
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 382 18 382 20 ]
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 15
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 15
                                        , srcInfoPoints = []
                                        }
                                      "Num"))
                                [ TyVar
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 382 16 382 17
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 382 16 382 17
                                         , srcInfoPoints = []
                                         }
                                       "a")
                                ])))
                       (TyFun
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 38
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 382 25 382 27 ]
                            }
                          (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 24
                               , srcInfoPoints = []
                               }
                             (TyVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 22
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 22
                                     , srcInfoPoints = []
                                     }
                                   "f"))
                             (TyVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 382 23 382 24
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 382 23 382 24
                                     , srcInfoPoints = []
                                     }
                                   "a")))
                          (TyFun
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 38
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 382 32 382 34 ]
                               }
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 31
                                  , srcInfoPoints = []
                                  }
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 29
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 29
                                        , srcInfoPoints = []
                                        }
                                      "f"))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 382 30 382 31
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 382 30 382 31
                                        , srcInfoPoints = []
                                        }
                                      "a")))
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 382 35 382 38
                                  , srcInfoPoints = []
                                  }
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 382 35 382 36
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 382 35 382 36
                                        , srcInfoPoints = []
                                        }
                                      "f"))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 382 37 382 38
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 382 37 382 38
                                        , srcInfoPoints = []
                                        }
                                      "a")))))))
             , ClsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 21
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 21
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 8
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 4
                             , SrcSpan "tests/examples/DerivingVia.hs" 383 4 383 7
                             , SrcSpan "tests/examples/DerivingVia.hs" 383 7 383 8
                             ]
                         }
                       (Symbol
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 383 4 383 7
                            , srcInfoPoints = []
                            }
                          "^+^"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 383 9 383 21
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 383 9 383 10 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 21
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 17
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 17
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 17
                                     , srcInfoPoints = []
                                     }
                                   "liftU2")))
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 21
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 19
                                   , SrcSpan "tests/examples/DerivingVia.hs" 383 19 383 20
                                   , SrcSpan "tests/examples/DerivingVia.hs" 383 20 383 21
                                   ]
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 21
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 19
                                      , SrcSpan "tests/examples/DerivingVia.hs" 383 19 383 20
                                      , SrcSpan "tests/examples/DerivingVia.hs" 383 20 383 21
                                      ]
                                  }
                                (Symbol
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 383 19 383 20
                                     , srcInfoPoints = []
                                     }
                                   "+")))))
                    Nothing)
             , ClsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 38
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 384 9 384 11 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 38
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 384 9 384 11 ]
                      }
                    [ Symbol
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 8
                          , srcInfoPoints =
                              [ SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 4
                              , SrcSpan "tests/examples/DerivingVia.hs" 384 4 384 7
                              , SrcSpan "tests/examples/DerivingVia.hs" 384 7 384 8
                              ]
                          }
                        "^-^"
                    ]
                    (TyForall
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 38
                         , srcInfoPoints = []
                         }
                       Nothing
                       (Just
                          (CxSingle
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 20
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 384 18 384 20 ]
                               }
                             (ClassA
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 20
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 384 18 384 20 ]
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 15
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 15
                                        , srcInfoPoints = []
                                        }
                                      "Num"))
                                [ TyVar
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 384 16 384 17
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 384 16 384 17
                                         , srcInfoPoints = []
                                         }
                                       "a")
                                ])))
                       (TyFun
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 38
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 384 25 384 27 ]
                            }
                          (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 24
                               , srcInfoPoints = []
                               }
                             (TyVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 22
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 22
                                     , srcInfoPoints = []
                                     }
                                   "f"))
                             (TyVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 384 23 384 24
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 384 23 384 24
                                     , srcInfoPoints = []
                                     }
                                   "a")))
                          (TyFun
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 38
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 384 32 384 34 ]
                               }
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 31
                                  , srcInfoPoints = []
                                  }
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 29
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 29
                                        , srcInfoPoints = []
                                        }
                                      "f"))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 384 30 384 31
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 384 30 384 31
                                        , srcInfoPoints = []
                                        }
                                      "a")))
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 384 35 384 38
                                  , srcInfoPoints = []
                                  }
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 384 35 384 36
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 384 35 384 36
                                        , srcInfoPoints = []
                                        }
                                      "f"))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 384 37 384 38
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 384 37 384 38
                                        , srcInfoPoints = []
                                        }
                                      "a")))))))
             , ClsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 32
                   , srcInfoPoints = []
                   }
                 (FunBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 32
                      , srcInfoPoints = []
                      }
                    [ InfixMatch
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 32
                          , srcInfoPoints = []
                          }
                        (PVar
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 4
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 4
                                , srcInfoPoints = []
                                }
                              "x"))
                        (Symbol
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 385 5 385 8
                             , srcInfoPoints = []
                             }
                           "^-^")
                        [ PVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 385 9 385 10
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 385 9 385 10
                                 , srcInfoPoints = []
                                 }
                               "y")
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 385 11 385 32
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 385 11 385 12 ]
                             }
                           (InfixApp
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 32
                                , srcInfoPoints = []
                                }
                              (Var
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 14
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 14
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 14
                                         , srcInfoPoints = []
                                         }
                                       "x")))
                              (QVarOp
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 385 15 385 18
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 385 15 385 18
                                      , srcInfoPoints = []
                                      }
                                    (Symbol
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 385 15 385 18
                                         , srcInfoPoints = []
                                         }
                                       "^+^")))
                              (App
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 385 19 385 32
                                   , srcInfoPoints = []
                                   }
                                 (App
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 385 19 385 30
                                      , srcInfoPoints = []
                                      }
                                    (Var
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 385 19 385 23
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 385 19 385 23
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 385 19 385 23
                                               , srcInfoPoints = []
                                               }
                                             "fmap")))
                                    (Var
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 385 24 385 30
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 385 24 385 30
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 385 24 385 30
                                               , srcInfoPoints = []
                                               }
                                             "negate"))))
                                 (Var
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 385 31 385 32
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 385 31 385 32
                                         , srcInfoPoints = []
                                         }
                                       (Ident
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 385 31 385 32
                                            , srcInfoPoints = []
                                            }
                                          "y"))))))
                        Nothing
                    ])
             , ClsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 47
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 386 10 386 12 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 47
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 386 10 386 12 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 9
                          , srcInfoPoints = []
                          }
                        "liftU2"
                    ]
                    (TyFun
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 386 13 386 47
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 386 27 386 29 ]
                         }
                       (TyParen
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 386 13 386 26
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 386 13 386 14
                                , SrcSpan "tests/examples/DerivingVia.hs" 386 25 386 26
                                ]
                            }
                          (TyFun
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 386 14 386 25
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 386 16 386 18 ]
                               }
                             (TyVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 386 14 386 15
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 386 14 386 15
                                     , srcInfoPoints = []
                                     }
                                   "a"))
                             (TyFun
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 386 19 386 25
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 386 21 386 23 ]
                                  }
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 386 19 386 20
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 386 19 386 20
                                        , srcInfoPoints = []
                                        }
                                      "a"))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 386 24 386 25
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 386 24 386 25
                                        , srcInfoPoints = []
                                        }
                                      "a")))))
                       (TyFun
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 47
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 386 34 386 36 ]
                            }
                          (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 33
                               , srcInfoPoints = []
                               }
                             (TyVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 31
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 31
                                     , srcInfoPoints = []
                                     }
                                   "f"))
                             (TyVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 386 32 386 33
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 386 32 386 33
                                     , srcInfoPoints = []
                                     }
                                   "a")))
                          (TyFun
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 47
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 386 41 386 43 ]
                               }
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 40
                                  , srcInfoPoints = []
                                  }
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 38
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 38
                                        , srcInfoPoints = []
                                        }
                                      "f"))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 386 39 386 40
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 386 39 386 40
                                        , srcInfoPoints = []
                                        }
                                      "a")))
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 386 44 386 47
                                  , srcInfoPoints = []
                                  }
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 386 44 386 45
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 386 44 386 45
                                        , srcInfoPoints = []
                                        }
                                      "f"))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 386 46 386 47
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 386 46 386 47
                                        , srcInfoPoints = []
                                        }
                                      "a")))))))
             ])
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 388 1 395 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 388 1 388 9
                , SrcSpan "tests/examples/DerivingVia.hs" 388 22 388 27
                , SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 3
                , SrcSpan "tests/examples/DerivingVia.hs" 390 3 390 3
                , SrcSpan "tests/examples/DerivingVia.hs" 395 1 395 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 21
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 21
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 18
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 18
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 18
                           , srcInfoPoints = []
                           }
                         "Additive")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 21
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 20
                         , SrcSpan "tests/examples/DerivingVia.hs" 388 20 388 21
                         ]
                     }
                   (Special
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 21
                        , srcInfoPoints =
                            [ SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 20
                            , SrcSpan "tests/examples/DerivingVia.hs" 388 20 388 21
                            ]
                        }
                      (ListCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 21
                           , srcInfoPoints =
                               [ SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 20
                               , SrcSpan "tests/examples/DerivingVia.hs" 388 20 388 21
                               ]
                           })))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 12
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 12
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 7
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 7
                            , srcInfoPoints = []
                            }
                          "zero"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 389 8 389 12
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 389 8 389 9 ]
                         }
                       (List
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 389 10 389 12
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 389 10 389 11
                                , SrcSpan "tests/examples/DerivingVia.hs" 389 11 389 12
                                ]
                            }
                          []))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 390 3 393 18
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 390 17 390 22 ]
                   }
                 (FunBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 390 3 393 18
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 390 17 390 22 ]
                      }
                    [ Match
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 390 3 393 18
                          , srcInfoPoints =
                              [ SrcSpan "tests/examples/DerivingVia.hs" 390 17 390 22 ]
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 390 3 390 9
                             , srcInfoPoints = []
                             }
                           "liftU2")
                        [ PVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 390 10 390 11
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 390 10 390 11
                                 , srcInfoPoints = []
                                 }
                               "f")
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 390 12 390 16
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 390 12 390 13 ]
                             }
                           (Var
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 390 14 390 16
                                , srcInfoPoints = []
                                }
                              (UnQual
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 390 14 390 16
                                   , srcInfoPoints = []
                                   }
                                 (Ident
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 390 14 390 16
                                      , srcInfoPoints = []
                                      }
                                    "go"))))
                        (Just
                           (BDecls
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 391 5 393 18
                                , srcInfoPoints =
                                    [ SrcSpan "tests/examples/DerivingVia.hs" 391 5 391 5
                                    , SrcSpan "tests/examples/DerivingVia.hs" 392 5 392 5
                                    , SrcSpan "tests/examples/DerivingVia.hs" 393 5 393 5
                                    , SrcSpan "tests/examples/DerivingVia.hs" 395 1 395 0
                                    ]
                                }
                              [ FunBind
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 391 5 393 18
                                    , srcInfoPoints = []
                                    }
                                  [ Match
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 391 5 391 40
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 391 5 391 7
                                           , srcInfoPoints = []
                                           }
                                         "go")
                                      [ PParen
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/DerivingVia.hs" 391 8 391 14
                                            , srcInfoPoints =
                                                [ SrcSpan
                                                    "tests/examples/DerivingVia.hs" 391 8 391 9
                                                , SrcSpan
                                                    "tests/examples/DerivingVia.hs" 391 13 391 14
                                                ]
                                            }
                                          (PInfixApp
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 391 9 391 13
                                               , srcInfoPoints = []
                                               }
                                             (PVar
                                                SrcSpanInfo
                                                  { srcInfoSpan =
                                                      SrcSpan
                                                        "tests/examples/DerivingVia.hs" 391 9 391 10
                                                  , srcInfoPoints = []
                                                  }
                                                (Ident
                                                   SrcSpanInfo
                                                     { srcInfoSpan =
                                                         SrcSpan
                                                           "tests/examples/DerivingVia.hs"
                                                           391
                                                           9
                                                           391
                                                           10
                                                     , srcInfoPoints = []
                                                     }
                                                   "x"))
                                             (Special
                                                SrcSpanInfo
                                                  { srcInfoSpan =
                                                      SrcSpan
                                                        "tests/examples/DerivingVia.hs"
                                                        391
                                                        10
                                                        391
                                                        11
                                                  , srcInfoPoints = []
                                                  }
                                                (Cons
                                                   SrcSpanInfo
                                                     { srcInfoSpan =
                                                         SrcSpan
                                                           "tests/examples/DerivingVia.hs"
                                                           391
                                                           10
                                                           391
                                                           11
                                                     , srcInfoPoints = []
                                                     }))
                                             (PVar
                                                SrcSpanInfo
                                                  { srcInfoSpan =
                                                      SrcSpan
                                                        "tests/examples/DerivingVia.hs"
                                                        391
                                                        11
                                                        391
                                                        13
                                                  , srcInfoPoints = []
                                                  }
                                                (Ident
                                                   SrcSpanInfo
                                                     { srcInfoSpan =
                                                         SrcSpan
                                                           "tests/examples/DerivingVia.hs"
                                                           391
                                                           11
                                                           391
                                                           13
                                                     , srcInfoPoints = []
                                                     }
                                                   "xs")))
                                      , PParen
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 391 15 391 21
                                            , srcInfoPoints =
                                                [ SrcSpan
                                                    "tests/examples/DerivingVia.hs" 391 15 391 16
                                                , SrcSpan
                                                    "tests/examples/DerivingVia.hs" 391 20 391 21
                                                ]
                                            }
                                          (PInfixApp
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 391 16 391 20
                                               , srcInfoPoints = []
                                               }
                                             (PVar
                                                SrcSpanInfo
                                                  { srcInfoSpan =
                                                      SrcSpan
                                                        "tests/examples/DerivingVia.hs"
                                                        391
                                                        16
                                                        391
                                                        17
                                                  , srcInfoPoints = []
                                                  }
                                                (Ident
                                                   SrcSpanInfo
                                                     { srcInfoSpan =
                                                         SrcSpan
                                                           "tests/examples/DerivingVia.hs"
                                                           391
                                                           16
                                                           391
                                                           17
                                                     , srcInfoPoints = []
                                                     }
                                                   "y"))
                                             (Special
                                                SrcSpanInfo
                                                  { srcInfoSpan =
                                                      SrcSpan
                                                        "tests/examples/DerivingVia.hs"
                                                        391
                                                        17
                                                        391
                                                        18
                                                  , srcInfoPoints = []
                                                  }
                                                (Cons
                                                   SrcSpanInfo
                                                     { srcInfoSpan =
                                                         SrcSpan
                                                           "tests/examples/DerivingVia.hs"
                                                           391
                                                           17
                                                           391
                                                           18
                                                     , srcInfoPoints = []
                                                     }))
                                             (PVar
                                                SrcSpanInfo
                                                  { srcInfoSpan =
                                                      SrcSpan
                                                        "tests/examples/DerivingVia.hs"
                                                        391
                                                        18
                                                        391
                                                        20
                                                  , srcInfoPoints = []
                                                  }
                                                (Ident
                                                   SrcSpanInfo
                                                     { srcInfoSpan =
                                                         SrcSpan
                                                           "tests/examples/DerivingVia.hs"
                                                           391
                                                           18
                                                           391
                                                           20
                                                     , srcInfoPoints = []
                                                     }
                                                   "ys")))
                                      ]
                                      (UnGuardedRhs
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 391 22 391 40
                                           , srcInfoPoints =
                                               [ SrcSpan
                                                   "tests/examples/DerivingVia.hs" 391 22 391 23
                                               ]
                                           }
                                         (InfixApp
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 391 24 391 40
                                              , srcInfoPoints = []
                                              }
                                            (App
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 391 24 391 29
                                                 , srcInfoPoints = []
                                                 }
                                               (App
                                                  SrcSpanInfo
                                                    { srcInfoSpan =
                                                        SrcSpan
                                                          "tests/examples/DerivingVia.hs"
                                                          391
                                                          24
                                                          391
                                                          27
                                                    , srcInfoPoints = []
                                                    }
                                                  (Var
                                                     SrcSpanInfo
                                                       { srcInfoSpan =
                                                           SrcSpan
                                                             "tests/examples/DerivingVia.hs"
                                                             391
                                                             24
                                                             391
                                                             25
                                                       , srcInfoPoints = []
                                                       }
                                                     (UnQual
                                                        SrcSpanInfo
                                                          { srcInfoSpan =
                                                              SrcSpan
                                                                "tests/examples/DerivingVia.hs"
                                                                391
                                                                24
                                                                391
                                                                25
                                                          , srcInfoPoints = []
                                                          }
                                                        (Ident
                                                           SrcSpanInfo
                                                             { srcInfoSpan =
                                                                 SrcSpan
                                                                   "tests/examples/DerivingVia.hs"
                                                                   391
                                                                   24
                                                                   391
                                                                   25
                                                             , srcInfoPoints = []
                                                             }
                                                           "f")))
                                                  (Var
                                                     SrcSpanInfo
                                                       { srcInfoSpan =
                                                           SrcSpan
                                                             "tests/examples/DerivingVia.hs"
                                                             391
                                                             26
                                                             391
                                                             27
                                                       , srcInfoPoints = []
                                                       }
                                                     (UnQual
                                                        SrcSpanInfo
                                                          { srcInfoSpan =
                                                              SrcSpan
                                                                "tests/examples/DerivingVia.hs"
                                                                391
                                                                26
                                                                391
                                                                27
                                                          , srcInfoPoints = []
                                                          }
                                                        (Ident
                                                           SrcSpanInfo
                                                             { srcInfoSpan =
                                                                 SrcSpan
                                                                   "tests/examples/DerivingVia.hs"
                                                                   391
                                                                   26
                                                                   391
                                                                   27
                                                             , srcInfoPoints = []
                                                             }
                                                           "x"))))
                                               (Var
                                                  SrcSpanInfo
                                                    { srcInfoSpan =
                                                        SrcSpan
                                                          "tests/examples/DerivingVia.hs"
                                                          391
                                                          28
                                                          391
                                                          29
                                                    , srcInfoPoints = []
                                                    }
                                                  (UnQual
                                                     SrcSpanInfo
                                                       { srcInfoSpan =
                                                           SrcSpan
                                                             "tests/examples/DerivingVia.hs"
                                                             391
                                                             28
                                                             391
                                                             29
                                                       , srcInfoPoints = []
                                                       }
                                                     (Ident
                                                        SrcSpanInfo
                                                          { srcInfoSpan =
                                                              SrcSpan
                                                                "tests/examples/DerivingVia.hs"
                                                                391
                                                                28
                                                                391
                                                                29
                                                          , srcInfoPoints = []
                                                          }
                                                        "y"))))
                                            (QConOp
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 391 30 391 31
                                                 , srcInfoPoints = []
                                                 }
                                               (Special
                                                  SrcSpanInfo
                                                    { srcInfoSpan =
                                                        SrcSpan
                                                          "tests/examples/DerivingVia.hs"
                                                          391
                                                          30
                                                          391
                                                          31
                                                    , srcInfoPoints = []
                                                    }
                                                  (Cons
                                                     SrcSpanInfo
                                                       { srcInfoSpan =
                                                           SrcSpan
                                                             "tests/examples/DerivingVia.hs"
                                                             391
                                                             30
                                                             391
                                                             31
                                                       , srcInfoPoints = []
                                                       })))
                                            (App
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 391 32 391 40
                                                 , srcInfoPoints = []
                                                 }
                                               (App
                                                  SrcSpanInfo
                                                    { srcInfoSpan =
                                                        SrcSpan
                                                          "tests/examples/DerivingVia.hs"
                                                          391
                                                          32
                                                          391
                                                          37
                                                    , srcInfoPoints = []
                                                    }
                                                  (Var
                                                     SrcSpanInfo
                                                       { srcInfoSpan =
                                                           SrcSpan
                                                             "tests/examples/DerivingVia.hs"
                                                             391
                                                             32
                                                             391
                                                             34
                                                       , srcInfoPoints = []
                                                       }
                                                     (UnQual
                                                        SrcSpanInfo
                                                          { srcInfoSpan =
                                                              SrcSpan
                                                                "tests/examples/DerivingVia.hs"
                                                                391
                                                                32
                                                                391
                                                                34
                                                          , srcInfoPoints = []
                                                          }
                                                        (Ident
                                                           SrcSpanInfo
                                                             { srcInfoSpan =
                                                                 SrcSpan
                                                                   "tests/examples/DerivingVia.hs"
                                                                   391
                                                                   32
                                                                   391
                                                                   34
                                                             , srcInfoPoints = []
                                                             }
                                                           "go")))
                                                  (Var
                                                     SrcSpanInfo
                                                       { srcInfoSpan =
                                                           SrcSpan
                                                             "tests/examples/DerivingVia.hs"
                                                             391
                                                             35
                                                             391
                                                             37
                                                       , srcInfoPoints = []
                                                       }
                                                     (UnQual
                                                        SrcSpanInfo
                                                          { srcInfoSpan =
                                                              SrcSpan
                                                                "tests/examples/DerivingVia.hs"
                                                                391
                                                                35
                                                                391
                                                                37
                                                          , srcInfoPoints = []
                                                          }
                                                        (Ident
                                                           SrcSpanInfo
                                                             { srcInfoSpan =
                                                                 SrcSpan
                                                                   "tests/examples/DerivingVia.hs"
                                                                   391
                                                                   35
                                                                   391
                                                                   37
                                                             , srcInfoPoints = []
                                                             }
                                                           "xs"))))
                                               (Var
                                                  SrcSpanInfo
                                                    { srcInfoSpan =
                                                        SrcSpan
                                                          "tests/examples/DerivingVia.hs"
                                                          391
                                                          38
                                                          391
                                                          40
                                                    , srcInfoPoints = []
                                                    }
                                                  (UnQual
                                                     SrcSpanInfo
                                                       { srcInfoSpan =
                                                           SrcSpan
                                                             "tests/examples/DerivingVia.hs"
                                                             391
                                                             38
                                                             391
                                                             40
                                                       , srcInfoPoints = []
                                                       }
                                                     (Ident
                                                        SrcSpanInfo
                                                          { srcInfoSpan =
                                                              SrcSpan
                                                                "tests/examples/DerivingVia.hs"
                                                                391
                                                                38
                                                                391
                                                                40
                                                          , srcInfoPoints = []
                                                          }
                                                        "ys"))))))
                                      Nothing
                                  , Match
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 392 5 392 18
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 392 5 392 7
                                           , srcInfoPoints = []
                                           }
                                         "go")
                                      [ PList
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/DerivingVia.hs" 392 8 392 10
                                            , srcInfoPoints =
                                                [ SrcSpan
                                                    "tests/examples/DerivingVia.hs" 392 8 392 9
                                                , SrcSpan
                                                    "tests/examples/DerivingVia.hs" 392 9 392 10
                                                ]
                                            }
                                          []
                                      , PVar
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 392 11 392 13
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 392 11 392 13
                                               , srcInfoPoints = []
                                               }
                                             "ys")
                                      ]
                                      (UnGuardedRhs
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 392 14 392 18
                                           , srcInfoPoints =
                                               [ SrcSpan
                                                   "tests/examples/DerivingVia.hs" 392 14 392 15
                                               ]
                                           }
                                         (Var
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 392 16 392 18
                                              , srcInfoPoints = []
                                              }
                                            (UnQual
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 392 16 392 18
                                                 , srcInfoPoints = []
                                                 }
                                               (Ident
                                                  SrcSpanInfo
                                                    { srcInfoSpan =
                                                        SrcSpan
                                                          "tests/examples/DerivingVia.hs"
                                                          392
                                                          16
                                                          392
                                                          18
                                                    , srcInfoPoints = []
                                                    }
                                                  "ys"))))
                                      Nothing
                                  , Match
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 393 5 393 18
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 393 5 393 7
                                           , srcInfoPoints = []
                                           }
                                         "go")
                                      [ PVar
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/DerivingVia.hs" 393 8 393 10
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 393 8 393 10
                                               , srcInfoPoints = []
                                               }
                                             "xs")
                                      , PList
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 393 11 393 13
                                            , srcInfoPoints =
                                                [ SrcSpan
                                                    "tests/examples/DerivingVia.hs" 393 11 393 12
                                                , SrcSpan
                                                    "tests/examples/DerivingVia.hs" 393 12 393 13
                                                ]
                                            }
                                          []
                                      ]
                                      (UnGuardedRhs
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 393 14 393 18
                                           , srcInfoPoints =
                                               [ SrcSpan
                                                   "tests/examples/DerivingVia.hs" 393 14 393 15
                                               ]
                                           }
                                         (Var
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 393 16 393 18
                                              , srcInfoPoints = []
                                              }
                                            (UnQual
                                               SrcSpanInfo
                                                 { srcInfoSpan =
                                                     SrcSpan
                                                       "tests/examples/DerivingVia.hs" 393 16 393 18
                                                 , srcInfoPoints = []
                                                 }
                                               (Ident
                                                  SrcSpanInfo
                                                    { srcInfoSpan =
                                                        SrcSpan
                                                          "tests/examples/DerivingVia.hs"
                                                          393
                                                          16
                                                          393
                                                          18
                                                    , srcInfoPoints = []
                                                    }
                                                  "xs"))))
                                      Nothing
                                  ]
                              ]))
                    ])
             ])
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 395 1 401 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 395 1 395 9
                , SrcSpan "tests/examples/DerivingVia.hs" 395 25 395 30
                , SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 3
                , SrcSpan "tests/examples/DerivingVia.hs" 397 3 397 3
                , SrcSpan "tests/examples/DerivingVia.hs" 398 3 398 3
                , SrcSpan "tests/examples/DerivingVia.hs" 399 3 399 3
                , SrcSpan "tests/examples/DerivingVia.hs" 401 1 401 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 24
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 24
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 18
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 18
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 18
                           , srcInfoPoints = []
                           }
                         "Additive")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 395 19 395 24
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 395 19 395 24
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 395 19 395 24
                           , srcInfoPoints = []
                           }
                         "Maybe")))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 17
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 17
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 7
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 7
                            , srcInfoPoints = []
                            }
                          "zero"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 396 8 396 17
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 396 8 396 9 ]
                         }
                       (Con
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 396 10 396 17
                            , srcInfoPoints = []
                            }
                          (UnQual
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 396 10 396 17
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 396 10 396 17
                                  , srcInfoPoints = []
                                  }
                                "Nothing"))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 397 3 399 27
                   , srcInfoPoints = []
                   }
                 (FunBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 397 3 399 27
                      , srcInfoPoints = []
                      }
                    [ Match
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 397 3 397 44
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 397 3 397 9
                             , srcInfoPoints = []
                             }
                           "liftU2")
                        [ PVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 397 10 397 11
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 397 10 397 11
                                 , srcInfoPoints = []
                                 }
                               "f")
                        , PParen
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 397 12 397 20
                              , srcInfoPoints =
                                  [ SrcSpan "tests/examples/DerivingVia.hs" 397 12 397 13
                                  , SrcSpan "tests/examples/DerivingVia.hs" 397 19 397 20
                                  ]
                              }
                            (PApp
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 397 13 397 19
                                 , srcInfoPoints = []
                                 }
                               (UnQual
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 397 13 397 17
                                    , srcInfoPoints = []
                                    }
                                  (Ident
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia.hs" 397 13 397 17
                                       , srcInfoPoints = []
                                       }
                                     "Just"))
                               [ PVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 397 18 397 19
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 397 18 397 19
                                        , srcInfoPoints = []
                                        }
                                      "a")
                               ])
                        , PParen
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 397 21 397 29
                              , srcInfoPoints =
                                  [ SrcSpan "tests/examples/DerivingVia.hs" 397 21 397 22
                                  , SrcSpan "tests/examples/DerivingVia.hs" 397 28 397 29
                                  ]
                              }
                            (PApp
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 397 22 397 28
                                 , srcInfoPoints = []
                                 }
                               (UnQual
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 397 22 397 26
                                    , srcInfoPoints = []
                                    }
                                  (Ident
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia.hs" 397 22 397 26
                                       , srcInfoPoints = []
                                       }
                                     "Just"))
                               [ PVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 397 27 397 28
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 397 27 397 28
                                        , srcInfoPoints = []
                                        }
                                      "b")
                               ])
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 397 30 397 44
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 397 30 397 31 ]
                             }
                           (App
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 44
                                , srcInfoPoints = []
                                }
                              (Con
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 36
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 36
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 36
                                         , srcInfoPoints = []
                                         }
                                       "Just")))
                              (Paren
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 397 37 397 44
                                   , srcInfoPoints =
                                       [ SrcSpan "tests/examples/DerivingVia.hs" 397 37 397 38
                                       , SrcSpan "tests/examples/DerivingVia.hs" 397 43 397 44
                                       ]
                                   }
                                 (App
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 397 38 397 43
                                      , srcInfoPoints = []
                                      }
                                    (App
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 397 38 397 41
                                         , srcInfoPoints = []
                                         }
                                       (Var
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 397 38 397 39
                                            , srcInfoPoints = []
                                            }
                                          (UnQual
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 397 38 397 39
                                               , srcInfoPoints = []
                                               }
                                             (Ident
                                                SrcSpanInfo
                                                  { srcInfoSpan =
                                                      SrcSpan
                                                        "tests/examples/DerivingVia.hs"
                                                        397
                                                        38
                                                        397
                                                        39
                                                  , srcInfoPoints = []
                                                  }
                                                "f")))
                                       (Var
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 397 40 397 41
                                            , srcInfoPoints = []
                                            }
                                          (UnQual
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 397 40 397 41
                                               , srcInfoPoints = []
                                               }
                                             (Ident
                                                SrcSpanInfo
                                                  { srcInfoSpan =
                                                      SrcSpan
                                                        "tests/examples/DerivingVia.hs"
                                                        397
                                                        40
                                                        397
                                                        41
                                                  , srcInfoPoints = []
                                                  }
                                                "a"))))
                                    (Var
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 397 42 397 43
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 397 42 397 43
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 397 42 397 43
                                               , srcInfoPoints = []
                                               }
                                             "b")))))))
                        Nothing
                    , Match
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 398 3 398 27
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 398 3 398 9
                             , srcInfoPoints = []
                             }
                           "liftU2")
                        [ PWildCard
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 398 10 398 11
                              , srcInfoPoints = []
                              }
                        , PApp
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 398 12 398 19
                              , srcInfoPoints = []
                              }
                            (UnQual
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 398 12 398 19
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 398 12 398 19
                                    , srcInfoPoints = []
                                    }
                                  "Nothing"))
                            []
                        , PVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 398 20 398 22
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 398 20 398 22
                                 , srcInfoPoints = []
                                 }
                               "ys")
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 398 23 398 27
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 398 23 398 24 ]
                             }
                           (Var
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 398 25 398 27
                                , srcInfoPoints = []
                                }
                              (UnQual
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 398 25 398 27
                                   , srcInfoPoints = []
                                   }
                                 (Ident
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 398 25 398 27
                                      , srcInfoPoints = []
                                      }
                                    "ys"))))
                        Nothing
                    , Match
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 399 3 399 27
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 399 3 399 9
                             , srcInfoPoints = []
                             }
                           "liftU2")
                        [ PWildCard
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 399 10 399 11
                              , srcInfoPoints = []
                              }
                        , PVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 399 12 399 14
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 399 12 399 14
                                 , srcInfoPoints = []
                                 }
                               "xs")
                        , PApp
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 399 15 399 22
                              , srcInfoPoints = []
                              }
                            (UnQual
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 399 15 399 22
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 399 15 399 22
                                    , srcInfoPoints = []
                                    }
                                  "Nothing"))
                            []
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 399 23 399 27
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 399 23 399 24 ]
                             }
                           (Var
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 399 25 399 27
                                , srcInfoPoints = []
                                }
                              (UnQual
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 399 25 399 27
                                   , srcInfoPoints = []
                                   }
                                 (Ident
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 399 25 399 27
                                      , srcInfoPoints = []
                                      }
                                    "xs"))))
                        Nothing
                    ])
             ])
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 401 1 405 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 401 1 401 9
                , SrcSpan "tests/examples/DerivingVia.hs" 401 56 401 61
                , SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 3
                , SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 3
                , SrcSpan "tests/examples/DerivingVia.hs" 405 1 405 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 55
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxSingle
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 26
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 401 24 401 26 ]
                     }
                   (ClassA
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 26
                        , srcInfoPoints =
                            [ SrcSpan "tests/examples/DerivingVia.hs" 401 24 401 26 ]
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 21
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 21
                              , srcInfoPoints = []
                              }
                            "Applicative"))
                      [ TyVar
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 401 22 401 23
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 401 22 401 23
                               , srcInfoPoints = []
                               }
                             "f")
                      ])))
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 55
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 35
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 35
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 35
                           , srcInfoPoints = []
                           }
                         "Additive")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 401 36 401 55
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 401 36 401 37
                         , SrcSpan "tests/examples/DerivingVia.hs" 401 54 401 55
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 54
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 52
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 52
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 52
                                 , srcInfoPoints = []
                                 }
                               "WrapApplicative")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 401 53 401 54
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 401 53 401 54
                              , srcInfoPoints = []
                              }
                            "f"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 18
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 18
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 7
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 7
                            , srcInfoPoints = []
                            }
                          "zero"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 402 10 402 18
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 402 10 402 11 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 18
                            , srcInfoPoints = []
                            }
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 16
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 16
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 16
                                     , srcInfoPoints = []
                                     }
                                   "pure")))
                          (Lit
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 402 17 402 18
                               , srcInfoPoints = []
                               }
                             (Int
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 402 17 402 18
                                  , srcInfoPoints = []
                                  }
                                0
                                "0"))))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 18
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 18
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 9
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 9
                            , srcInfoPoints = []
                            }
                          "liftU2"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 403 10 403 18
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 403 10 403 11 ]
                         }
                       (Var
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 403 12 403 18
                            , srcInfoPoints = []
                            }
                          (UnQual
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 403 12 403 18
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 403 12 403 18
                                  , srcInfoPoints = []
                                  }
                                "liftA2"))))
                    Nothing)
             ])
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 405 1 405 67
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 405 1 405 9
                , SrcSpan "tests/examples/DerivingVia.hs" 405 41 405 49
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 405 10 405 13
                  , srcInfoPoints = []
                  }
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 405 14 405 40
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 405 14 405 15
                         , SrcSpan "tests/examples/DerivingVia.hs" 405 39 405 40
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 39
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 30
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 30
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 30
                                 , srcInfoPoints = []
                                 }
                               "WrapApplicative")))
                      (TyParen
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 405 31 405 39
                           , srcInfoPoints =
                               [ SrcSpan "tests/examples/DerivingVia.hs" 405 31 405 32
                               , SrcSpan "tests/examples/DerivingVia.hs" 405 38 405 39
                               ]
                           }
                         (TyApp
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 38
                              , srcInfoPoints = []
                              }
                            (TyCon
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 36
                                 , srcInfoPoints =
                                     [ SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 33
                                     , SrcSpan "tests/examples/DerivingVia.hs" 405 33 405 35
                                     , SrcSpan "tests/examples/DerivingVia.hs" 405 35 405 36
                                     ]
                                 }
                               (Special
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 36
                                    , srcInfoPoints =
                                        [ SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 33
                                        , SrcSpan "tests/examples/DerivingVia.hs" 405 33 405 35
                                        , SrcSpan "tests/examples/DerivingVia.hs" 405 35 405 36
                                        ]
                                    }
                                  (FunCon
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 36
                                       , srcInfoPoints =
                                           [ SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 33
                                           , SrcSpan "tests/examples/DerivingVia.hs" 405 33 405 35
                                           , SrcSpan "tests/examples/DerivingVia.hs" 405 35 405 36
                                           ]
                                       })))
                            (TyVar
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 405 37 405 38
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 405 37 405 38
                                    , srcInfoPoints = []
                                    }
                                  "a"))))))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 67
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 67
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 58
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 58
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 58
                           , srcInfoPoints = []
                           }
                         "Additive")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 405 59 405 67
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 405 59 405 60
                         , SrcSpan "tests/examples/DerivingVia.hs" 405 66 405 67
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 66
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 64
                           , srcInfoPoints =
                               [ SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 61
                               , SrcSpan "tests/examples/DerivingVia.hs" 405 61 405 63
                               , SrcSpan "tests/examples/DerivingVia.hs" 405 63 405 64
                               ]
                           }
                         (Special
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 64
                              , srcInfoPoints =
                                  [ SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 61
                                  , SrcSpan "tests/examples/DerivingVia.hs" 405 61 405 63
                                  , SrcSpan "tests/examples/DerivingVia.hs" 405 63 405 64
                                  ]
                              }
                            (FunCon
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 64
                                 , srcInfoPoints =
                                     [ SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 61
                                     , SrcSpan "tests/examples/DerivingVia.hs" 405 61 405 63
                                     , SrcSpan "tests/examples/DerivingVia.hs" 405 63 405 64
                                     ]
                                 })))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 405 65 405 66
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 405 65 405 66
                              , srcInfoPoints = []
                              }
                            "a"))))))
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 406 1 406 66
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 406 1 406 9
                , SrcSpan "tests/examples/DerivingVia.hs" 406 41 406 49
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 406 10 406 13
                  , srcInfoPoints = []
                  }
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 406 14 406 39
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 406 14 406 15
                         , SrcSpan "tests/examples/DerivingVia.hs" 406 38 406 39
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 38
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 30
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 30
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 30
                                 , srcInfoPoints = []
                                 }
                               "WrapApplicative")))
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 406 31 406 38
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 406 31 406 38
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 406 31 406 38
                                 , srcInfoPoints = []
                                 }
                               "Complex")))))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 66
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 66
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 58
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 58
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 58
                           , srcInfoPoints = []
                           }
                         "Additive")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 406 59 406 66
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 406 59 406 66
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 406 59 406 66
                           , srcInfoPoints = []
                           }
                         "Complex")))))
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 407 1 407 67
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 407 1 407 9
                , SrcSpan "tests/examples/DerivingVia.hs" 407 41 407 49
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 407 10 407 13
                  , srcInfoPoints = []
                  }
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 407 14 407 40
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 407 14 407 15
                         , SrcSpan "tests/examples/DerivingVia.hs" 407 39 407 40
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 39
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 30
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 30
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 30
                                 , srcInfoPoints = []
                                 }
                               "WrapApplicative")))
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 407 31 407 39
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 407 31 407 39
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 407 31 407 39
                                 , srcInfoPoints = []
                                 }
                               "Identity")))))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 67
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 67
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 58
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 58
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 58
                           , srcInfoPoints = []
                           }
                         "Additive")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 407 59 407 67
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 407 59 407 67
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 407 59 407 67
                           , srcInfoPoints = []
                           }
                         "Identity")))))
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 409 1 413 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 409 1 409 9
                , SrcSpan "tests/examples/DerivingVia.hs" 409 27 409 32
                , SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 3
                , SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 3
                , SrcSpan "tests/examples/DerivingVia.hs" 413 1 413 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 26
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 26
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 18
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 18
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 18
                           , srcInfoPoints = []
                           }
                         "Additive")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 409 19 409 26
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 409 19 409 26
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 409 19 409 26
                           , srcInfoPoints = []
                           }
                         "ZipList")))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 20
                   , srcInfoPoints = []
                   }
                 (PatBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 20
                      , srcInfoPoints = []
                      }
                    (PVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 7
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 7
                            , srcInfoPoints = []
                            }
                          "zero"))
                    (UnGuardedRhs
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 410 8 410 20
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 410 8 410 9 ]
                         }
                       (App
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 20
                            , srcInfoPoints = []
                            }
                          (Con
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 17
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 17
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 17
                                     , srcInfoPoints = []
                                     }
                                   "ZipList")))
                          (List
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 410 18 410 20
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 410 18 410 19
                                   , SrcSpan "tests/examples/DerivingVia.hs" 410 19 410 20
                                   ]
                               }
                             [])))
                    Nothing)
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 64
                   , srcInfoPoints = []
                   }
                 (FunBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 64
                      , srcInfoPoints = []
                      }
                    [ Match
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 64
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 9
                             , srcInfoPoints = []
                             }
                           "liftU2")
                        [ PVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 411 10 411 11
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 411 10 411 11
                                 , srcInfoPoints = []
                                 }
                               "f")
                        , PParen
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 411 12 411 24
                              , srcInfoPoints =
                                  [ SrcSpan "tests/examples/DerivingVia.hs" 411 12 411 13
                                  , SrcSpan "tests/examples/DerivingVia.hs" 411 23 411 24
                                  ]
                              }
                            (PApp
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 411 13 411 23
                                 , srcInfoPoints = []
                                 }
                               (UnQual
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 411 13 411 20
                                    , srcInfoPoints = []
                                    }
                                  (Ident
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia.hs" 411 13 411 20
                                       , srcInfoPoints = []
                                       }
                                     "ZipList"))
                               [ PVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 411 21 411 23
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 411 21 411 23
                                        , srcInfoPoints = []
                                        }
                                      "xs")
                               ])
                        , PParen
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 411 25 411 37
                              , srcInfoPoints =
                                  [ SrcSpan "tests/examples/DerivingVia.hs" 411 25 411 26
                                  , SrcSpan "tests/examples/DerivingVia.hs" 411 36 411 37
                                  ]
                              }
                            (PApp
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 411 26 411 36
                                 , srcInfoPoints = []
                                 }
                               (UnQual
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 411 26 411 33
                                    , srcInfoPoints = []
                                    }
                                  (Ident
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia.hs" 411 26 411 33
                                       , srcInfoPoints = []
                                       }
                                     "ZipList"))
                               [ PVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 411 34 411 36
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 411 34 411 36
                                        , srcInfoPoints = []
                                        }
                                      "ys")
                               ])
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 411 38 411 64
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 411 38 411 39 ]
                             }
                           (App
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 64
                                , srcInfoPoints = []
                                }
                              (Con
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 47
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 47
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 47
                                         , srcInfoPoints = []
                                         }
                                       "ZipList")))
                              (Paren
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 411 48 411 64
                                   , srcInfoPoints =
                                       [ SrcSpan "tests/examples/DerivingVia.hs" 411 48 411 49
                                       , SrcSpan "tests/examples/DerivingVia.hs" 411 63 411 64
                                       ]
                                   }
                                 (App
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 411 49 411 63
                                      , srcInfoPoints = []
                                      }
                                    (App
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 411 49 411 60
                                         , srcInfoPoints = []
                                         }
                                       (App
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 411 49 411 57
                                            , srcInfoPoints = []
                                            }
                                          (Var
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 411 49 411 55
                                               , srcInfoPoints = []
                                               }
                                             (UnQual
                                                SrcSpanInfo
                                                  { srcInfoSpan =
                                                      SrcSpan
                                                        "tests/examples/DerivingVia.hs"
                                                        411
                                                        49
                                                        411
                                                        55
                                                  , srcInfoPoints = []
                                                  }
                                                (Ident
                                                   SrcSpanInfo
                                                     { srcInfoSpan =
                                                         SrcSpan
                                                           "tests/examples/DerivingVia.hs"
                                                           411
                                                           49
                                                           411
                                                           55
                                                     , srcInfoPoints = []
                                                     }
                                                   "liftU2")))
                                          (Var
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 411 56 411 57
                                               , srcInfoPoints = []
                                               }
                                             (UnQual
                                                SrcSpanInfo
                                                  { srcInfoSpan =
                                                      SrcSpan
                                                        "tests/examples/DerivingVia.hs"
                                                        411
                                                        56
                                                        411
                                                        57
                                                  , srcInfoPoints = []
                                                  }
                                                (Ident
                                                   SrcSpanInfo
                                                     { srcInfoSpan =
                                                         SrcSpan
                                                           "tests/examples/DerivingVia.hs"
                                                           411
                                                           56
                                                           411
                                                           57
                                                     , srcInfoPoints = []
                                                     }
                                                   "f"))))
                                       (Var
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 411 58 411 60
                                            , srcInfoPoints = []
                                            }
                                          (UnQual
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 411 58 411 60
                                               , srcInfoPoints = []
                                               }
                                             (Ident
                                                SrcSpanInfo
                                                  { srcInfoSpan =
                                                      SrcSpan
                                                        "tests/examples/DerivingVia.hs"
                                                        411
                                                        58
                                                        411
                                                        60
                                                  , srcInfoPoints = []
                                                  }
                                                "xs"))))
                                    (Var
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 411 61 411 63
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 411 61 411 63
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 411 61 411 63
                                               , srcInfoPoints = []
                                               }
                                             "ys")))))))
                        Nothing
                    ])
             ])
      , ClassDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 413 1 419 32
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 413 1 413 6
                , SrcSpan "tests/examples/DerivingVia.hs" 413 37 413 42
                , SrcSpan "tests/examples/DerivingVia.hs" 414 3 414 3
                , SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 3
                , SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 3
                , SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 3
                , SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 3
                , SrcSpan "tests/examples/DerivingVia.hs" 425 1 425 0
                ]
            }
          (Just
             (CxSingle
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 27
                  , srcInfoPoints =
                      [ SrcSpan "tests/examples/DerivingVia.hs" 413 25 413 27 ]
                  }
                (ClassA
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 27
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 413 25 413 27 ]
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 15
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 15
                           , srcInfoPoints = []
                           }
                         "Additive"))
                   [ TyParen
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 413 16 413 24
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 413 16 413 17
                             , SrcSpan "tests/examples/DerivingVia.hs" 413 23 413 24
                             ]
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 23
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 21
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 21
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 21
                                     , srcInfoPoints = []
                                     }
                                   "Diff")))
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 413 22 413 23
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 413 22 413 23
                                  , srcInfoPoints = []
                                  }
                                "p")))
                   ])))
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 413 28 413 36
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 413 28 413 34
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 413 28 413 34
                     , srcInfoPoints = []
                     }
                   "Affine"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 413 35 413 36
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 413 35 413 36
                     , srcInfoPoints = []
                     }
                   "p")))
          []
          (Just
             [ ClsTyFam
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 414 3 414 30
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 414 3 414 7 ]
                   }
                 (DHApp
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 414 8 414 14
                      , srcInfoPoints = []
                      }
                    (DHead
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 414 8 414 12
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 414 8 414 12
                            , srcInfoPoints = []
                            }
                          "Diff"))
                    (UnkindedVar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 414 13 414 14
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 414 13 414 14
                            , srcInfoPoints = []
                            }
                          "p")))
                 (Just
                    (KindSig
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 414 15 414 30
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 414 15 414 17 ]
                         }
                       (TyFun
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 30
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 414 23 414 25 ]
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 22
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 22
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 22
                                     , srcInfoPoints = []
                                     }
                                   "Type")))
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 414 26 414 30
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 414 26 414 30
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 414 26 414 30
                                     , srcInfoPoints = []
                                     }
                                   "Type"))))))
                 Nothing
             , ClsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 43
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 416 9 416 11 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 43
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 416 9 416 11 ]
                      }
                    [ Symbol
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 8
                          , srcInfoPoints =
                              [ SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 4
                              , SrcSpan "tests/examples/DerivingVia.hs" 416 4 416 7
                              , SrcSpan "tests/examples/DerivingVia.hs" 416 7 416 8
                              ]
                          }
                        ".-."
                    ]
                    (TyForall
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 43
                         , srcInfoPoints = []
                         }
                       Nothing
                       (Just
                          (CxSingle
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 20
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 416 18 416 20 ]
                               }
                             (ClassA
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 20
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 416 18 416 20 ]
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 15
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 15
                                        , srcInfoPoints = []
                                        }
                                      "Num"))
                                [ TyVar
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 416 16 416 17
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 416 16 416 17
                                         , srcInfoPoints = []
                                         }
                                       "a")
                                ])))
                       (TyFun
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 43
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 416 25 416 27 ]
                            }
                          (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 24
                               , srcInfoPoints = []
                               }
                             (TyVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 22
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 22
                                     , srcInfoPoints = []
                                     }
                                   "p"))
                             (TyVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 416 23 416 24
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 416 23 416 24
                                     , srcInfoPoints = []
                                     }
                                   "a")))
                          (TyFun
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 43
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 416 32 416 34 ]
                               }
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 31
                                  , srcInfoPoints = []
                                  }
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 29
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 29
                                        , srcInfoPoints = []
                                        }
                                      "p"))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 416 30 416 31
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 416 30 416 31
                                        , srcInfoPoints = []
                                        }
                                      "a")))
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 43
                                  , srcInfoPoints = []
                                  }
                                (TyApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 41
                                     , srcInfoPoints = []
                                     }
                                   (TyCon
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 39
                                        , srcInfoPoints = []
                                        }
                                      (UnQual
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 39
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 416 35 416 39
                                              , srcInfoPoints = []
                                              }
                                            "Diff")))
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 416 40 416 41
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 416 40 416 41
                                           , srcInfoPoints = []
                                           }
                                         "p")))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 416 42 416 43
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 416 42 416 43
                                        , srcInfoPoints = []
                                        }
                                      "a")))))))
             , ClsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 43
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 417 9 417 11 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 43
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 417 9 417 11 ]
                      }
                    [ Symbol
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 8
                          , srcInfoPoints =
                              [ SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 4
                              , SrcSpan "tests/examples/DerivingVia.hs" 417 4 417 7
                              , SrcSpan "tests/examples/DerivingVia.hs" 417 7 417 8
                              ]
                          }
                        ".+^"
                    ]
                    (TyForall
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 43
                         , srcInfoPoints = []
                         }
                       Nothing
                       (Just
                          (CxSingle
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 20
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 417 18 417 20 ]
                               }
                             (ClassA
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 20
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 417 18 417 20 ]
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 15
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 15
                                        , srcInfoPoints = []
                                        }
                                      "Num"))
                                [ TyVar
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 417 16 417 17
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 417 16 417 17
                                         , srcInfoPoints = []
                                         }
                                       "a")
                                ])))
                       (TyFun
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 43
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 417 25 417 27 ]
                            }
                          (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 24
                               , srcInfoPoints = []
                               }
                             (TyVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 22
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 22
                                     , srcInfoPoints = []
                                     }
                                   "p"))
                             (TyVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 417 23 417 24
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 417 23 417 24
                                     , srcInfoPoints = []
                                     }
                                   "a")))
                          (TyFun
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 43
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 417 37 417 39 ]
                               }
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 36
                                  , srcInfoPoints = []
                                  }
                                (TyApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 34
                                     , srcInfoPoints = []
                                     }
                                   (TyCon
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 32
                                        , srcInfoPoints = []
                                        }
                                      (UnQual
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 32
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 417 28 417 32
                                              , srcInfoPoints = []
                                              }
                                            "Diff")))
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 417 33 417 34
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 417 33 417 34
                                           , srcInfoPoints = []
                                           }
                                         "p")))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 417 35 417 36
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 417 35 417 36
                                        , srcInfoPoints = []
                                        }
                                      "a")))
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 417 40 417 43
                                  , srcInfoPoints = []
                                  }
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 417 40 417 41
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 417 40 417 41
                                        , srcInfoPoints = []
                                        }
                                      "p"))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 417 42 417 43
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 417 42 417 43
                                        , srcInfoPoints = []
                                        }
                                      "a")))))))
             , ClsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 43
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 418 9 418 11 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 43
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 418 9 418 11 ]
                      }
                    [ Symbol
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 8
                          , srcInfoPoints =
                              [ SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 4
                              , SrcSpan "tests/examples/DerivingVia.hs" 418 4 418 7
                              , SrcSpan "tests/examples/DerivingVia.hs" 418 7 418 8
                              ]
                          }
                        ".-^"
                    ]
                    (TyForall
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 43
                         , srcInfoPoints = []
                         }
                       Nothing
                       (Just
                          (CxSingle
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 20
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 418 18 418 20 ]
                               }
                             (ClassA
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 20
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/DerivingVia.hs" 418 18 418 20 ]
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 15
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 15
                                        , srcInfoPoints = []
                                        }
                                      "Num"))
                                [ TyVar
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 418 16 418 17
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 418 16 418 17
                                         , srcInfoPoints = []
                                         }
                                       "a")
                                ])))
                       (TyFun
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 43
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 418 25 418 27 ]
                            }
                          (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 24
                               , srcInfoPoints = []
                               }
                             (TyVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 22
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 22
                                     , srcInfoPoints = []
                                     }
                                   "p"))
                             (TyVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 418 23 418 24
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 418 23 418 24
                                     , srcInfoPoints = []
                                     }
                                   "a")))
                          (TyFun
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 43
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 418 37 418 39 ]
                               }
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 36
                                  , srcInfoPoints = []
                                  }
                                (TyApp
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 34
                                     , srcInfoPoints = []
                                     }
                                   (TyCon
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 32
                                        , srcInfoPoints = []
                                        }
                                      (UnQual
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 32
                                           , srcInfoPoints = []
                                           }
                                         (Ident
                                            SrcSpanInfo
                                              { srcInfoSpan =
                                                  SrcSpan
                                                    "tests/examples/DerivingVia.hs" 418 28 418 32
                                              , srcInfoPoints = []
                                              }
                                            "Diff")))
                                   (TyVar
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 418 33 418 34
                                        , srcInfoPoints = []
                                        }
                                      (Ident
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/DerivingVia.hs" 418 33 418 34
                                           , srcInfoPoints = []
                                           }
                                         "p")))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 418 35 418 36
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 418 35 418 36
                                        , srcInfoPoints = []
                                        }
                                      "a")))
                             (TyApp
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 418 40 418 43
                                  , srcInfoPoints = []
                                  }
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 418 40 418 41
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 418 40 418 41
                                        , srcInfoPoints = []
                                        }
                                      "p"))
                                (TyVar
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 418 42 418 43
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 418 42 418 43
                                        , srcInfoPoints = []
                                        }
                                      "a")))))))
             , ClsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 32
                   , srcInfoPoints = []
                   }
                 (FunBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 32
                      , srcInfoPoints = []
                      }
                    [ InfixMatch
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 32
                          , srcInfoPoints = []
                          }
                        (PVar
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 4
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 4
                                , srcInfoPoints = []
                                }
                              "p"))
                        (Symbol
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 419 5 419 8
                             , srcInfoPoints = []
                             }
                           ".-^")
                        [ PVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 419 9 419 10
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 419 9 419 10
                                 , srcInfoPoints = []
                                 }
                               "v")
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 419 11 419 32
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 419 11 419 12 ]
                             }
                           (InfixApp
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 32
                                , srcInfoPoints = []
                                }
                              (Var
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 14
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 14
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 14
                                         , srcInfoPoints = []
                                         }
                                       "p")))
                              (QVarOp
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 419 15 419 18
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 419 15 419 18
                                      , srcInfoPoints = []
                                      }
                                    (Symbol
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 419 15 419 18
                                         , srcInfoPoints = []
                                         }
                                       ".+^")))
                              (App
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 419 19 419 32
                                   , srcInfoPoints = []
                                   }
                                 (App
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 419 19 419 30
                                      , srcInfoPoints = []
                                      }
                                    (Var
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 419 19 419 23
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 419 19 419 23
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 419 19 419 23
                                               , srcInfoPoints = []
                                               }
                                             "fmap")))
                                    (Var
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 419 24 419 30
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 419 24 419 30
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 419 24 419 30
                                               , srcInfoPoints = []
                                               }
                                             "negate"))))
                                 (Var
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 419 31 419 32
                                      , srcInfoPoints = []
                                      }
                                    (UnQual
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 419 31 419 32
                                         , srcInfoPoints = []
                                         }
                                       (Ident
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 419 31 419 32
                                            , srcInfoPoints = []
                                            }
                                          "v"))))))
                        Nothing
                    ])
             ])
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 425 1 425 49
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 425 26 425 27 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 425 1 425 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 25
               , srcInfoPoints = []
               }
             (DHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 23
                  , srcInfoPoints = []
                  }
                (DHead
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 21
                     , srcInfoPoints = []
                     }
                   (Ident
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 21
                        , srcInfoPoints = []
                        }
                      "WrapAdditive"))
                (UnkindedVar
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 425 22 425 23
                     , srcInfoPoints = []
                     }
                   (Ident
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 425 22 425 23
                        , srcInfoPoints = []
                        }
                      "f")))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 425 24 425 25
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 425 24 425 25
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 425 28 425 49
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 425 28 425 49
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 425 28 425 43
                      , srcInfoPoints = []
                      }
                    "WrappedAdditive")
                 [ TyParen
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 425 44 425 49
                       , srcInfoPoints =
                           [ SrcSpan "tests/examples/DerivingVia.hs" 425 44 425 45
                           , SrcSpan "tests/examples/DerivingVia.hs" 425 48 425 49
                           ]
                       }
                     (TyApp
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 425 45 425 48
                          , srcInfoPoints = []
                          }
                        (TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 425 45 425 46
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 425 45 425 46
                                , srcInfoPoints = []
                                }
                              "f"))
                        (TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 425 47 425 48
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 425 47 425 48
                                , srcInfoPoints = []
                                }
                              "a")))
                 ])
          ]
          []
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 427 1 435 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 427 1 427 9
                , SrcSpan "tests/examples/DerivingVia.hs" 427 48 427 53
                , SrcSpan "tests/examples/DerivingVia.hs" 428 3 428 3
                , SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 3
                , SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 3
                , SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 3
                , SrcSpan "tests/examples/DerivingVia.hs" 435 1 435 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 47
               , srcInfoPoints = []
               }
             Nothing
             (Just
                (CxSingle
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 23
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 427 21 427 23 ]
                     }
                   (ClassA
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 23
                        , srcInfoPoints =
                            [ SrcSpan "tests/examples/DerivingVia.hs" 427 21 427 23 ]
                        }
                      (UnQual
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 18
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 18
                              , srcInfoPoints = []
                              }
                            "Additive"))
                      [ TyVar
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 427 19 427 20
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 427 19 427 20
                               , srcInfoPoints = []
                               }
                             "f")
                      ])))
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 427 24 427 47
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 427 24 427 30
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 427 24 427 30
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 427 24 427 30
                           , srcInfoPoints = []
                           }
                         "Affine")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 427 31 427 47
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 427 31 427 32
                         , SrcSpan "tests/examples/DerivingVia.hs" 427 46 427 47
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 427 32 427 46
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 427 32 427 44
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 427 32 427 44
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 427 32 427 44
                                 , srcInfoPoints = []
                                 }
                               "WrapAdditive")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 427 45 427 46
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 427 45 427 46
                              , srcInfoPoints = []
                              }
                            "f"))))))
          (Just
             [ InsType
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 428 3 428 33
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 428 3 428 7
                       , SrcSpan "tests/examples/DerivingVia.hs" 428 30 428 31
                       ]
                   }
                 (TyApp
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 428 8 428 29
                      , srcInfoPoints = []
                      }
                    (TyCon
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 428 8 428 12
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 428 8 428 12
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 428 8 428 12
                               , srcInfoPoints = []
                               }
                             "Diff")))
                    (TyParen
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 428 13 428 29
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 428 13 428 14
                             , SrcSpan "tests/examples/DerivingVia.hs" 428 28 428 29
                             ]
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 428 14 428 28
                            , srcInfoPoints = []
                            }
                          (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 428 14 428 26
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 428 14 428 26
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 428 14 428 26
                                     , srcInfoPoints = []
                                     }
                                   "WrapAdditive")))
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 428 27 428 28
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 428 27 428 28
                                  , srcInfoPoints = []
                                  }
                                "f")))))
                 (TyVar
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 428 32 428 33
                      , srcInfoPoints = []
                      }
                    (Ident
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 428 32 428 33
                         , srcInfoPoints = []
                         }
                       "f"))
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 52
                   , srcInfoPoints = []
                   }
                 (FunBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 52
                      , srcInfoPoints = []
                      }
                    [ InfixMatch
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 52
                          , srcInfoPoints = []
                          }
                        (PApp
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 20
                             , srcInfoPoints = []
                             }
                           (UnQual
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 18
                                , srcInfoPoints = []
                                }
                              (Ident
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 18
                                   , srcInfoPoints = []
                                   }
                                 "WrappedAdditive"))
                           [ PVar
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 430 19 430 20
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 430 19 430 20
                                    , srcInfoPoints = []
                                    }
                                  "a")
                           ])
                        (Symbol
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 430 21 430 24
                             , srcInfoPoints = []
                             }
                           ".-.")
                        [ PApp
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 430 25 430 42
                              , srcInfoPoints = []
                              }
                            (UnQual
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 430 25 430 40
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 430 25 430 40
                                    , srcInfoPoints = []
                                    }
                                  "WrappedAdditive"))
                            [ PVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 430 41 430 42
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 430 41 430 42
                                     , srcInfoPoints = []
                                     }
                                   "b")
                            ]
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 430 43 430 52
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 430 43 430 44 ]
                             }
                           (InfixApp
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 430 45 430 52
                                , srcInfoPoints = []
                                }
                              (Var
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 430 45 430 46
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 430 45 430 46
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 430 45 430 46
                                         , srcInfoPoints = []
                                         }
                                       "a")))
                              (QVarOp
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 430 47 430 50
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 430 47 430 50
                                      , srcInfoPoints = []
                                      }
                                    (Symbol
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 430 47 430 50
                                         , srcInfoPoints = []
                                         }
                                       "^-^")))
                              (Var
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 430 51 430 52
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 430 51 430 52
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 430 51 430 52
                                         , srcInfoPoints = []
                                         }
                                       "b")))))
                        Nothing
                    ])
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 54
                   , srcInfoPoints = []
                   }
                 (FunBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 54
                      , srcInfoPoints = []
                      }
                    [ InfixMatch
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 54
                          , srcInfoPoints = []
                          }
                        (PApp
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 20
                             , srcInfoPoints = []
                             }
                           (UnQual
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 18
                                , srcInfoPoints = []
                                }
                              (Ident
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 18
                                   , srcInfoPoints = []
                                   }
                                 "WrappedAdditive"))
                           [ PVar
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 431 19 431 20
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 431 19 431 20
                                    , srcInfoPoints = []
                                    }
                                  "a")
                           ])
                        (Symbol
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 431 21 431 24
                             , srcInfoPoints = []
                             }
                           ".+^")
                        [ PVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 431 25 431 26
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 431 25 431 26
                                 , srcInfoPoints = []
                                 }
                               "b")
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 431 27 431 54
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 431 27 431 28 ]
                             }
                           (App
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 431 29 431 54
                                , srcInfoPoints = []
                                }
                              (Con
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 431 29 431 44
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 431 29 431 44
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 431 29 431 44
                                         , srcInfoPoints = []
                                         }
                                       "WrappedAdditive")))
                              (Paren
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 431 45 431 54
                                   , srcInfoPoints =
                                       [ SrcSpan "tests/examples/DerivingVia.hs" 431 45 431 46
                                       , SrcSpan "tests/examples/DerivingVia.hs" 431 53 431 54
                                       ]
                                   }
                                 (InfixApp
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 431 46 431 53
                                      , srcInfoPoints = []
                                      }
                                    (Var
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 431 46 431 47
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 431 46 431 47
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 431 46 431 47
                                               , srcInfoPoints = []
                                               }
                                             "a")))
                                    (QVarOp
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 431 48 431 51
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 431 48 431 51
                                            , srcInfoPoints = []
                                            }
                                          (Symbol
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 431 48 431 51
                                               , srcInfoPoints = []
                                               }
                                             "^+^")))
                                    (Var
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 431 52 431 53
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 431 52 431 53
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 431 52 431 53
                                               , srcInfoPoints = []
                                               }
                                             "b")))))))
                        Nothing
                    ])
             , InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 54
                   , srcInfoPoints = []
                   }
                 (FunBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 54
                      , srcInfoPoints = []
                      }
                    [ InfixMatch
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 54
                          , srcInfoPoints = []
                          }
                        (PApp
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 20
                             , srcInfoPoints = []
                             }
                           (UnQual
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 18
                                , srcInfoPoints = []
                                }
                              (Ident
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 18
                                   , srcInfoPoints = []
                                   }
                                 "WrappedAdditive"))
                           [ PVar
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 432 19 432 20
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 432 19 432 20
                                    , srcInfoPoints = []
                                    }
                                  "a")
                           ])
                        (Symbol
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 432 21 432 24
                             , srcInfoPoints = []
                             }
                           ".-^")
                        [ PVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 432 25 432 26
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 432 25 432 26
                                 , srcInfoPoints = []
                                 }
                               "b")
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 432 27 432 54
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 432 27 432 28 ]
                             }
                           (App
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 432 29 432 54
                                , srcInfoPoints = []
                                }
                              (Con
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 432 29 432 44
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 432 29 432 44
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 432 29 432 44
                                         , srcInfoPoints = []
                                         }
                                       "WrappedAdditive")))
                              (Paren
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 432 45 432 54
                                   , srcInfoPoints =
                                       [ SrcSpan "tests/examples/DerivingVia.hs" 432 45 432 46
                                       , SrcSpan "tests/examples/DerivingVia.hs" 432 53 432 54
                                       ]
                                   }
                                 (InfixApp
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 432 46 432 53
                                      , srcInfoPoints = []
                                      }
                                    (Var
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 432 46 432 47
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 432 46 432 47
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 432 46 432 47
                                               , srcInfoPoints = []
                                               }
                                             "a")))
                                    (QVarOp
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 432 48 432 51
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 432 48 432 51
                                            , srcInfoPoints = []
                                            }
                                          (Symbol
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 432 48 432 51
                                               , srcInfoPoints = []
                                               }
                                             "^-^")))
                                    (Var
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 432 52 432 53
                                         , srcInfoPoints = []
                                         }
                                       (UnQual
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/DerivingVia.hs" 432 52 432 53
                                            , srcInfoPoints = []
                                            }
                                          (Ident
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/DerivingVia.hs" 432 52 432 53
                                               , srcInfoPoints = []
                                               }
                                             "b")))))))
                        Nothing
                    ])
             ])
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 435 1 435 62
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 435 1 435 9
                , SrcSpan "tests/examples/DerivingVia.hs" 435 38 435 46
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 435 10 435 13
                  , srcInfoPoints = []
                  }
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 435 14 435 37
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 435 14 435 15
                         , SrcSpan "tests/examples/DerivingVia.hs" 435 36 435 37
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 435 15 435 36
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 435 15 435 27
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 435 15 435 27
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 435 15 435 27
                                 , srcInfoPoints = []
                                 }
                               "WrapAdditive")))
                      (TyParen
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 435 28 435 36
                           , srcInfoPoints =
                               [ SrcSpan "tests/examples/DerivingVia.hs" 435 28 435 29
                               , SrcSpan "tests/examples/DerivingVia.hs" 435 35 435 36
                               ]
                           }
                         (TyApp
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 35
                              , srcInfoPoints = []
                              }
                            (TyCon
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 33
                                 , srcInfoPoints =
                                     [ SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 30
                                     , SrcSpan "tests/examples/DerivingVia.hs" 435 30 435 32
                                     , SrcSpan "tests/examples/DerivingVia.hs" 435 32 435 33
                                     ]
                                 }
                               (Special
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 33
                                    , srcInfoPoints =
                                        [ SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 30
                                        , SrcSpan "tests/examples/DerivingVia.hs" 435 30 435 32
                                        , SrcSpan "tests/examples/DerivingVia.hs" 435 32 435 33
                                        ]
                                    }
                                  (FunCon
                                     SrcSpanInfo
                                       { srcInfoSpan =
                                           SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 33
                                       , srcInfoPoints =
                                           [ SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 30
                                           , SrcSpan "tests/examples/DerivingVia.hs" 435 30 435 32
                                           , SrcSpan "tests/examples/DerivingVia.hs" 435 32 435 33
                                           ]
                                       })))
                            (TyVar
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 435 34 435 35
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 435 34 435 35
                                    , srcInfoPoints = []
                                    }
                                  "a"))))))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 435 47 435 62
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 435 47 435 62
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 435 47 435 53
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 435 47 435 53
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 435 47 435 53
                           , srcInfoPoints = []
                           }
                         "Affine")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 435 54 435 62
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 435 54 435 55
                         , SrcSpan "tests/examples/DerivingVia.hs" 435 61 435 62
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 61
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 59
                           , srcInfoPoints =
                               [ SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 56
                               , SrcSpan "tests/examples/DerivingVia.hs" 435 56 435 58
                               , SrcSpan "tests/examples/DerivingVia.hs" 435 58 435 59
                               ]
                           }
                         (Special
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 59
                              , srcInfoPoints =
                                  [ SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 56
                                  , SrcSpan "tests/examples/DerivingVia.hs" 435 56 435 58
                                  , SrcSpan "tests/examples/DerivingVia.hs" 435 58 435 59
                                  ]
                              }
                            (FunCon
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 59
                                 , srcInfoPoints =
                                     [ SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 56
                                     , SrcSpan "tests/examples/DerivingVia.hs" 435 56 435 58
                                     , SrcSpan "tests/examples/DerivingVia.hs" 435 58 435 59
                                     ]
                                 })))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 435 60 435 61
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 435 60 435 61
                              , srcInfoPoints = []
                              }
                            "a"))))))
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 437 1 437 56
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 437 1 437 9
                , SrcSpan "tests/examples/DerivingVia.hs" 437 38 437 46
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 437 10 437 13
                  , srcInfoPoints = []
                  }
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 437 14 437 31
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 437 14 437 15
                         , SrcSpan "tests/examples/DerivingVia.hs" 437 30 437 31
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 437 15 437 30
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 437 15 437 27
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 437 15 437 27
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 437 15 437 27
                                 , srcInfoPoints = []
                                 }
                               "WrapAdditive")))
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 30
                           , srcInfoPoints =
                               [ SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 29
                               , SrcSpan "tests/examples/DerivingVia.hs" 437 29 437 30
                               ]
                           }
                         (Special
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 30
                              , srcInfoPoints =
                                  [ SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 29
                                  , SrcSpan "tests/examples/DerivingVia.hs" 437 29 437 30
                                  ]
                              }
                            (ListCon
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 30
                                 , srcInfoPoints =
                                     [ SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 29
                                     , SrcSpan "tests/examples/DerivingVia.hs" 437 29 437 30
                                     ]
                                 })))))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 437 47 437 56
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 437 47 437 56
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 437 47 437 53
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 437 47 437 53
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 437 47 437 53
                           , srcInfoPoints = []
                           }
                         "Affine")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 56
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 55
                         , SrcSpan "tests/examples/DerivingVia.hs" 437 55 437 56
                         ]
                     }
                   (Special
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 56
                        , srcInfoPoints =
                            [ SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 55
                            , SrcSpan "tests/examples/DerivingVia.hs" 437 55 437 56
                            ]
                        }
                      (ListCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 56
                           , srcInfoPoints =
                               [ SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 55
                               , SrcSpan "tests/examples/DerivingVia.hs" 437 55 437 56
                               ]
                           })))))
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 439 1 439 61
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 439 1 439 9
                , SrcSpan "tests/examples/DerivingVia.hs" 439 38 439 46
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 439 10 439 13
                  , srcInfoPoints = []
                  }
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 439 14 439 36
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 439 14 439 15
                         , SrcSpan "tests/examples/DerivingVia.hs" 439 35 439 36
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 439 15 439 35
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 439 15 439 27
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 439 15 439 27
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 439 15 439 27
                                 , srcInfoPoints = []
                                 }
                               "WrapAdditive")))
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 439 28 439 35
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 439 28 439 35
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 439 28 439 35
                                 , srcInfoPoints = []
                                 }
                               "Complex")))))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 439 47 439 61
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 439 47 439 61
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 439 47 439 53
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 439 47 439 53
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 439 47 439 53
                           , srcInfoPoints = []
                           }
                         "Affine")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 439 54 439 61
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 439 54 439 61
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 439 54 439 61
                           , srcInfoPoints = []
                           }
                         "Complex")))))
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 441 1 441 59
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 441 1 441 9
                , SrcSpan "tests/examples/DerivingVia.hs" 441 38 441 46
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 441 10 441 13
                  , srcInfoPoints = []
                  }
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 441 14 441 34
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 441 14 441 15
                         , SrcSpan "tests/examples/DerivingVia.hs" 441 33 441 34
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 441 15 441 33
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 441 15 441 27
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 441 15 441 27
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 441 15 441 27
                                 , srcInfoPoints = []
                                 }
                               "WrapAdditive")))
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 441 28 441 33
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 441 28 441 33
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 441 28 441 33
                                 , srcInfoPoints = []
                                 }
                               "Maybe")))))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 441 47 441 59
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 441 47 441 59
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 441 47 441 53
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 441 47 441 53
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 441 47 441 53
                           , srcInfoPoints = []
                           }
                         "Affine")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 441 54 441 59
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 441 54 441 59
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 441 54 441 59
                           , srcInfoPoints = []
                           }
                         "Maybe")))))
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 443 1 443 61
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 443 1 443 9
                , SrcSpan "tests/examples/DerivingVia.hs" 443 38 443 46
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 443 10 443 13
                  , srcInfoPoints = []
                  }
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 443 14 443 36
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 443 14 443 15
                         , SrcSpan "tests/examples/DerivingVia.hs" 443 35 443 36
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 443 15 443 35
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 443 15 443 27
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 443 15 443 27
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 443 15 443 27
                                 , srcInfoPoints = []
                                 }
                               "WrapAdditive")))
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 443 28 443 35
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 443 28 443 35
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 443 28 443 35
                                 , srcInfoPoints = []
                                 }
                               "ZipList")))))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 443 47 443 61
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 443 47 443 61
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 443 47 443 53
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 443 47 443 53
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 443 47 443 53
                           , srcInfoPoints = []
                           }
                         "Affine")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 443 54 443 61
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 443 54 443 61
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 443 54 443 61
                           , srcInfoPoints = []
                           }
                         "ZipList")))))
      , DerivDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 445 1 445 62
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 445 1 445 9
                , SrcSpan "tests/examples/DerivingVia.hs" 445 38 445 46
                ]
            }
          (Just
             (DerivVia
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 445 10 445 13
                  , srcInfoPoints = []
                  }
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 445 14 445 37
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 445 14 445 15
                         , SrcSpan "tests/examples/DerivingVia.hs" 445 36 445 37
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 445 15 445 36
                        , srcInfoPoints = []
                        }
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 445 15 445 27
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 445 15 445 27
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 445 15 445 27
                                 , srcInfoPoints = []
                                 }
                               "WrapAdditive")))
                      (TyCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 445 28 445 36
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 445 28 445 36
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 445 28 445 36
                                 , srcInfoPoints = []
                                 }
                               "Identity")))))))
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 445 47 445 62
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 445 47 445 62
                  , srcInfoPoints = []
                  }
                (IHCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 445 47 445 53
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 445 47 445 53
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 445 47 445 53
                           , srcInfoPoints = []
                           }
                         "Affine")))
                (TyCon
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 445 54 445 62
                     , srcInfoPoints = []
                     }
                   (UnQual
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 445 54 445 62
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 445 54 445 62
                           , srcInfoPoints = []
                           }
                         "Identity")))))
      , ClassDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 451 1 452 20
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 451 1 451 6
                , SrcSpan "tests/examples/DerivingVia.hs" 451 16 451 21
                , SrcSpan "tests/examples/DerivingVia.hs" 452 3 452 3
                , SrcSpan "tests/examples/DerivingVia.hs" 454 1 454 0
                ]
            }
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 451 7 451 15
               , srcInfoPoints = []
               }
             (DHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 451 7 451 13
                  , srcInfoPoints = []
                  }
                (DHApp
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 451 7 451 11
                     , srcInfoPoints = []
                     }
                   (DHead
                      SrcSpanInfo
                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 451 7 451 9
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 451 7 451 9
                           , srcInfoPoints = []
                           }
                         "C2"))
                   (UnkindedVar
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 451 10 451 11
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 451 10 451 11
                           , srcInfoPoints = []
                           }
                         "a")))
                (UnkindedVar
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 451 12 451 13
                     , srcInfoPoints = []
                     }
                   (Ident
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 451 12 451 13
                        , srcInfoPoints = []
                        }
                      "b")))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 451 14 451 15
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 451 14 451 15
                     , srcInfoPoints = []
                     }
                   "c")))
          []
          (Just
             [ ClsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 452 3 452 20
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/DerivingVia.hs" 452 6 452 8 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 452 3 452 20
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingVia.hs" 452 6 452 8 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 452 3 452 5
                          , srcInfoPoints = []
                          }
                        "c2"
                    ]
                    (TyFun
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 452 9 452 20
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 452 11 452 13 ]
                         }
                       (TyVar
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 452 9 452 10
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 452 9 452 10
                               , srcInfoPoints = []
                               }
                             "a"))
                       (TyFun
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 452 14 452 20
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/DerivingVia.hs" 452 16 452 18 ]
                            }
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 452 14 452 15
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 452 14 452 15
                                  , srcInfoPoints = []
                                  }
                                "b"))
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 452 19 452 20
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 452 19 452 20
                                  , srcInfoPoints = []
                                  }
                                "c")))))
             ])
      , InstDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 454 1 457 0
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 454 1 454 9
                , SrcSpan "tests/examples/DerivingVia.hs" 454 29 454 34
                , SrcSpan "tests/examples/DerivingVia.hs" 455 3 455 3
                , SrcSpan "tests/examples/DerivingVia.hs" 457 1 457 0
                ]
            }
          Nothing
          (IRule
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 28
               , srcInfoPoints = []
               }
             Nothing
             Nothing
             (IHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 28
                  , srcInfoPoints = []
                  }
                (IHApp
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 16
                     , srcInfoPoints = []
                     }
                   (IHApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 14
                        , srcInfoPoints = []
                        }
                      (IHCon
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 12
                           , srcInfoPoints = []
                           }
                         (UnQual
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 12
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 12
                                 , srcInfoPoints = []
                                 }
                               "C2")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 454 13 454 14
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 454 13 454 14
                              , srcInfoPoints = []
                              }
                            "a")))
                   (TyVar
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 454 15 454 16
                        , srcInfoPoints = []
                        }
                      (Ident
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 454 15 454 16
                           , srcInfoPoints = []
                           }
                         "b")))
                (TyParen
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 454 17 454 28
                     , srcInfoPoints =
                         [ SrcSpan "tests/examples/DerivingVia.hs" 454 17 454 18
                         , SrcSpan "tests/examples/DerivingVia.hs" 454 27 454 28
                         ]
                     }
                   (TyApp
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/DerivingVia.hs" 454 18 454 27
                        , srcInfoPoints = []
                        }
                      (TyApp
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 454 18 454 25
                           , srcInfoPoints = []
                           }
                         (TyCon
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 454 18 454 23
                              , srcInfoPoints = []
                              }
                            (UnQual
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 454 18 454 23
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan =
                                        SrcSpan "tests/examples/DerivingVia.hs" 454 18 454 23
                                    , srcInfoPoints = []
                                    }
                                  "Const")))
                         (TyVar
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 454 24 454 25
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan =
                                     SrcSpan "tests/examples/DerivingVia.hs" 454 24 454 25
                                 , srcInfoPoints = []
                                 }
                               "a")))
                      (TyVar
                         SrcSpanInfo
                           { srcInfoSpan =
                               SrcSpan "tests/examples/DerivingVia.hs" 454 26 454 27
                           , srcInfoPoints = []
                           }
                         (Ident
                            SrcSpanInfo
                              { srcInfoSpan =
                                  SrcSpan "tests/examples/DerivingVia.hs" 454 26 454 27
                              , srcInfoPoints = []
                              }
                            "b"))))))
          (Just
             [ InsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 455 3 455 19
                   , srcInfoPoints = []
                   }
                 (FunBind
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 455 3 455 19
                      , srcInfoPoints = []
                      }
                    [ Match
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 455 3 455 19
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 455 3 455 5
                             , srcInfoPoints = []
                             }
                           "c2")
                        [ PVar
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 455 6 455 7
                              , srcInfoPoints = []
                              }
                            (Ident
                               SrcSpanInfo
                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 455 6 455 7
                                 , srcInfoPoints = []
                                 }
                               "x")
                        , PWildCard
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 455 8 455 9
                              , srcInfoPoints = []
                              }
                        ]
                        (UnGuardedRhs
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 455 10 455 19
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/DerivingVia.hs" 455 10 455 11 ]
                             }
                           (App
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 455 12 455 19
                                , srcInfoPoints = []
                                }
                              (Con
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 455 12 455 17
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 455 12 455 17
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 455 12 455 17
                                         , srcInfoPoints = []
                                         }
                                       "Const")))
                              (Var
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 455 18 455 19
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 455 18 455 19
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/DerivingVia.hs" 455 18 455 19
                                         , srcInfoPoints = []
                                         }
                                       "x")))))
                        Nothing
                    ])
             ])
      , DataDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/DerivingVia.hs" 457 1 458 20
            , srcInfoPoints =
                [ SrcSpan "tests/examples/DerivingVia.hs" 457 18 457 19 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 457 1 457 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/DerivingVia.hs" 457 9 457 17
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 457 9 457 15
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 457 9 457 15
                     , srcInfoPoints = []
                     }
                   "Fweemp"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/DerivingVia.hs" 457 16 457 17
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/DerivingVia.hs" 457 16 457 17
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 457 20 457 28
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/DerivingVia.hs" 457 20 457 28
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 457 20 457 26
                      , srcInfoPoints = []
                      }
                    "Fweemp")
                 [ TyVar
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 457 27 457 28
                       , srcInfoPoints = []
                       }
                     (Ident
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 457 27 457 28
                          , srcInfoPoints = []
                          }
                        "a")
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/DerivingVia.hs" 458 3 458 20
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/DerivingVia.hs" 458 3 458 11 ]
                }
              (Just
                 (DerivVia
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/DerivingVia.hs" 459 8 459 11
                      , srcInfoPoints = []
                      }
                    (TyParen
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingVia.hs" 459 12 459 33
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingVia.hs" 459 12 459 13
                             , SrcSpan "tests/examples/DerivingVia.hs" 459 32 459 33
                             ]
                         }
                       (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/DerivingVia.hs" 459 13 459 32
                            , srcInfoPoints = []
                            }
                          (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 459 13 459 20
                               , srcInfoPoints = []
                               }
                             (TyCon
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 459 13 459 18
                                  , srcInfoPoints = []
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 459 13 459 18
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 459 13 459 18
                                        , srcInfoPoints = []
                                        }
                                      "Const")))
                             (TyVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 459 19 459 20
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 459 19 459 20
                                     , srcInfoPoints = []
                                     }
                                   "a")))
                          (TyKind
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/DerivingVia.hs" 459 21 459 32
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/DerivingVia.hs" 459 21 459 22
                                   , SrcSpan "tests/examples/DerivingVia.hs" 459 24 459 26
                                   , SrcSpan "tests/examples/DerivingVia.hs" 459 31 459 32
                                   ]
                               }
                             (TyVar
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 459 22 459 23
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 459 22 459 23
                                     , srcInfoPoints = []
                                     }
                                   "b"))
                             (TyCon
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/DerivingVia.hs" 459 27 459 31
                                  , srcInfoPoints = []
                                  }
                                (UnQual
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/DerivingVia.hs" 459 27 459 31
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/DerivingVia.hs" 459 27 459 31
                                        , srcInfoPoints = []
                                        }
                                      "Type"))))))))
              [ IParen
                  SrcSpanInfo
                    { srcInfoSpan =
                        SrcSpan "tests/examples/DerivingVia.hs" 458 12 458 20
                    , srcInfoPoints =
                        [ SrcSpan "tests/examples/DerivingVia.hs" 458 12 458 13
                        , SrcSpan "tests/examples/DerivingVia.hs" 458 19 458 20
                        ]
                    }
                  (IRule
                     SrcSpanInfo
                       { srcInfoSpan =
                           SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 19
                       , srcInfoPoints = []
                       }
                     Nothing
                     Nothing
                     (IHApp
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 19
                          , srcInfoPoints = []
                          }
                        (IHApp
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 17
                             , srcInfoPoints = []
                             }
                           (IHCon
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 15
                                , srcInfoPoints = []
                                }
                              (UnQual
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 15
                                   , srcInfoPoints = []
                                   }
                                 (Ident
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 15
                                      , srcInfoPoints = []
                                      }
                                    "C2")))
                           (TyVar
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 458 16 458 17
                                , srcInfoPoints = []
                                }
                              (Ident
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DerivingVia.hs" 458 16 458 17
                                   , srcInfoPoints = []
                                   }
                                 "a")))
                        (TyVar
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/DerivingVia.hs" 458 18 458 19
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/DerivingVia.hs" 458 18 458 19
                                , srcInfoPoints = []
                                }
                              "b"))))
              ]
          ]
      ]
  , [ Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 38 1 38 6) "---"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 39 1 39 18)
        " Simple example"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 40 1 40 6) "---"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 46 1 46 6) "---"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 47 1 47 25)
        " Eta reduction at work"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 48 1 48 6) "---"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 62 1 62 6) "---"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 63 1 63 22)
        " Monad transformers"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 64 1 64 6) "---"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 68 1 68 22)
        " From `constraints'"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 78 1 78 52)
        " With `-XQuantifiedConstraints' this just becomes"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 79 1 79 3) ""
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 80 1 80 68)
        "    type Lifting cls  trans = forall mm. cls mm => cls (trans mm)"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 81 1 81 3) ""
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 82 1 82 52)
        "    type LiftingMonad trans = Lifting Monad trans"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 83 1 83 3) ""
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 142 1 142 6) "---"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 143 1 143 32)
        " Using tuples in a `via` type"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 144 1 144 6) "---"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 153 1 153 6) "---"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 154 1 154 23)
        " Abstract data types"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 155 1 155 6) "---"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 167 1 167 5) "--"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 168 1 168 18)
        " Testing parser"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 169 1 169 5) "--"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 183 1 183 5) "--"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 184 1 184 23)
        " From Baldur's notes"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 185 1 185 5) "--"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 187 1 187 5) "--"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 188 1 188 5) " 1"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 189 1 189 5) "--"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 227 1 227 5) "--"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 228 1 228 5) " 2"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 229 1 229 5) "--"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 243 1 243 8) " data"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 262 1 262 5) "--"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 263 1 263 5) " 3"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 264 1 264 5) "--"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 290 1 290 5) "--"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 291 1 291 5) " 4"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 292 1 292 5) "--"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 324 1 324 5) "--"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 325 1 325 5) " 5"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 326 1 326 5) "--"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 340 1 340 5) "--"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 341 1 341 5) " 6"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 342 1 342 5) "--"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 343 1 343 116)
        " https://github.com/mikeizbicki/subhask/blob/f53fd8f465747681c88276c7dabe3646fbdf7d50/src/SubHask/Algebra.hs#L635"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 360 1 360 19)
        "mkLattice_(Bool)"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 362 1 362 19)
        "mkLattice_(Char)"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 364 1 364 18)
        "mkLattice_(Int)"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 366 1 366 22)
        "mkLattice_(Integer)"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 368 1 368 20)
        "mkLattice_(Float)"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 370 1 370 21)
        "mkLattice_(Double)"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 372 1 372 23)
        "mkLattice_(Rational)"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 375 1 375 5) "--"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 376 1 376 5) " 7"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 377 1 377 5) "--"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 378 1 378 81)
        " https://hackage.haskell.org/package/linear-1.20.7/docs/src/Linear-Affine.html"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 421 1 421 79)
        " #define ADDITIVEC(CTX,T) instance CTX => Affine T where type Diff T = T ; \\"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 422 1 422 85)
        "   (.-.) = (^-^) ; {-# INLINE (.-.) #-} ; (.+^) = (^+^) ; {-# INLINE (.+^) #-} ; \\"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 423 1 423 42)
        "   (.-^) = (^-^) ; {-# INLINE (.-^) #-}"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 424 1 424 40)
        " #define ADDITIVE(T) ADDITIVEC((), T)"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 434 1 434 22)
        " ADDITIVE(((->) a))"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 436 1 436 16)
        " ADDITIVE([])"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 438 1 438 21)
        " ADDITIVE(Complex)"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 440 1 440 19)
        " ADDITIVE(Maybe)"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 442 1 442 21)
        " ADDITIVE(ZipList)"
    , Comment
        False
        (SrcSpan "tests/examples/DerivingVia.hs" 444 1 444 22)
        " ADDITIVE(Identity)"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 447 1 447 5) "--"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 448 1 448 5) " 8"
    , Comment
        False (SrcSpan "tests/examples/DerivingVia.hs" 449 1 449 5) "--"
    ]
  )