ParseOk
  ( Module
      SrcSpanInfo
        { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 1 5 1
        , srcInfoPoints =
            [ SrcSpan "tests/examples/GhcDeriving.hs" 3 1 3 1
            , SrcSpan "tests/examples/GhcDeriving.hs" 3 1 3 1
            , SrcSpan "tests/examples/GhcDeriving.hs" 3 1 3 1
            , SrcSpan "tests/examples/GhcDeriving.hs" 5 1 5 1
            , SrcSpan "tests/examples/GhcDeriving.hs" 5 1 5 1
            ]
        }
      Nothing
      []
      []
      [ DataDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 1 4 45
            , srcInfoPoints =
                [ SrcSpan "tests/examples/GhcDeriving.hs" 3 25 3 26 ]
            }
          (NewType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 1 3 8
               , srcInfoPoints = []
               })
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 9 3 24
               , srcInfoPoints = []
               }
             (DHead
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 9 3 22
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 9 3 22
                     , srcInfoPoints = []
                     }
                   "CodeGenModule"))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 23 3 24
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 23 3 24
                     , srcInfoPoints = []
                     }
                   "a")))
          [ QualConDecl
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 27 3 53
                , srcInfoPoints = []
                }
              Nothing
              Nothing
              (ConDecl
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 27 3 53
                   , srcInfoPoints = []
                   }
                 (Ident
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 27 3 30
                      , srcInfoPoints = []
                      }
                    "CGM")
                 [ TyParen
                     SrcSpanInfo
                       { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 31 3 53
                       , srcInfoPoints =
                           [ SrcSpan "tests/examples/GhcDeriving.hs" 3 31 3 32
                           , SrcSpan "tests/examples/GhcDeriving.hs" 3 52 3 53
                           ]
                       }
                     (TyApp
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 32 3 52
                          , srcInfoPoints = []
                          }
                        (TyApp
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 32 3 50
                             , srcInfoPoints = []
                             }
                           (TyApp
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 32 3 47
                                , srcInfoPoints = []
                                }
                              (TyCon
                                 SrcSpanInfo
                                   { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 32 3 38
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/GhcDeriving.hs" 3 32 3 38
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/GhcDeriving.hs" 3 32 3 38
                                         , srcInfoPoints = []
                                         }
                                       "StateT")))
                              (TyCon
                                 SrcSpanInfo
                                   { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 39 3 47
                                   , srcInfoPoints = []
                                   }
                                 (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/GhcDeriving.hs" 3 39 3 47
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/GhcDeriving.hs" 3 39 3 47
                                         , srcInfoPoints = []
                                         }
                                       "CGMState"))))
                           (TyCon
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 48 3 50
                                , srcInfoPoints = []
                                }
                              (UnQual
                                 SrcSpanInfo
                                   { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 48 3 50
                                   , srcInfoPoints = []
                                   }
                                 (Ident
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/GhcDeriving.hs" 3 48 3 50
                                      , srcInfoPoints = []
                                      }
                                    "IO"))))
                        (TyVar
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 51 3 52
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 51 3 52
                                , srcInfoPoints = []
                                }
                              "a")))
                 ])
          ]
          [ Deriving
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 4 4 45
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/GhcDeriving.hs" 4 4 4 12
                    , SrcSpan "tests/examples/GhcDeriving.hs" 4 13 4 14
                    , SrcSpan "tests/examples/GhcDeriving.hs" 4 19 4 20
                    , SrcSpan "tests/examples/GhcDeriving.hs" 4 35 4 36
                    , SrcSpan "tests/examples/GhcDeriving.hs" 4 44 4 45
                    ]
                }
              Nothing
              [ IRule
                  SrcSpanInfo
                    { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 14 4 19
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 14 4 19
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 14 4 19
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 14 4 19
                             , srcInfoPoints = []
                             }
                           "Monad")))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 21 4 35
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHApp
                     SrcSpanInfo
                       { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 21 4 35
                       , srcInfoPoints = []
                       }
                     (IHCon
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 21 4 31
                          , srcInfoPoints = []
                          }
                        (UnQual
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 21 4 31
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 21 4 31
                                , srcInfoPoints = []
                                }
                              "MonadState")))
                     (TyList
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 32 4 35
                          , srcInfoPoints =
                              [ SrcSpan "tests/examples/GhcDeriving.hs" 4 32 4 33
                              , SrcSpan "tests/examples/GhcDeriving.hs" 4 34 4 35
                              ]
                          }
                        (TyVar
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 33 4 34
                             , srcInfoPoints = []
                             }
                           (Ident
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 33 4 34
                                , srcInfoPoints = []
                                }
                              "s"))))
              , IRule
                  SrcSpanInfo
                    { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 37 4 44
                    , srcInfoPoints = []
                    }
                  Nothing
                  Nothing
                  (IHCon
                     SrcSpanInfo
                       { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 37 4 44
                       , srcInfoPoints = []
                       }
                     (UnQual
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 37 4 44
                          , srcInfoPoints = []
                          }
                        (Ident
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 37 4 44
                             , srcInfoPoints = []
                             }
                           "MonadIO")))
              ]
          ]
      ]
  , []
  )