ParseOk
  ( Module
      SrcSpanInfo
        { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 1 1 6 1
        , srcInfoPoints =
            [ SrcSpan "tests/examples/GadtDeriving.hs" 1 1 1 1
            , SrcSpan "tests/examples/GadtDeriving.hs" 3 1 3 1
            , SrcSpan "tests/examples/GadtDeriving.hs" 3 1 3 1
            , SrcSpan "tests/examples/GadtDeriving.hs" 3 1 3 1
            , SrcSpan "tests/examples/GadtDeriving.hs" 6 1 6 1
            , SrcSpan "tests/examples/GadtDeriving.hs" 6 1 6 1
            ]
        }
      Nothing
      [ LanguagePragma
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 1 1 1 23
            , srcInfoPoints =
                [ SrcSpan "tests/examples/GadtDeriving.hs" 1 1 1 13
                , SrcSpan "tests/examples/GadtDeriving.hs" 1 20 1 23
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 1 14 1 19
                , srcInfoPoints = []
                }
              "GADTs"
          ]
      ]
      []
      [ GDataDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 3 1 5 31
            , srcInfoPoints =
                [ SrcSpan "tests/examples/GadtDeriving.hs" 3 10 3 15
                , SrcSpan "tests/examples/GadtDeriving.hs" 4 5 4 5
                , SrcSpan "tests/examples/GadtDeriving.hs" 5 5 5 5
                , SrcSpan "tests/examples/GadtDeriving.hs" 5 5 5 5
                ]
            }
          (DataType
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 3 1 3 5
               , srcInfoPoints = []
               })
          Nothing
          (DHead
             SrcSpanInfo
               { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 3 6 3 9
               , srcInfoPoints = []
               }
             (Ident
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 3 6 3 9
                  , srcInfoPoints = []
                  }
                "Foo"))
          Nothing
          [ GadtDecl
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 5 4 22
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/GadtDeriving.hs" 4 9 4 11 ]
                }
              (Ident
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 5 4 8
                   , srcInfoPoints = []
                   }
                 "Foo")
              Nothing
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 12 4 22
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/GadtDeriving.hs" 4 16 4 18 ]
                   }
                 (TyCon
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 12 4 15
                      , srcInfoPoints = []
                      }
                    (UnQual
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 12 4 15
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 12 4 15
                            , srcInfoPoints = []
                            }
                          "Int")))
                 (TyCon
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 19 4 22
                      , srcInfoPoints = []
                      }
                    (UnQual
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 19 4 22
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 19 4 22
                            , srcInfoPoints = []
                            }
                          "Foo"))))
          ]
          (Just
             (Deriving
                SrcSpanInfo
                  { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 5 5 31
                  , srcInfoPoints =
                      [ SrcSpan "tests/examples/GadtDeriving.hs" 5 5 5 13
                      , SrcSpan "tests/examples/GadtDeriving.hs" 5 14 5 15
                      , SrcSpan "tests/examples/GadtDeriving.hs" 5 17 5 18
                      , SrcSpan "tests/examples/GadtDeriving.hs" 5 21 5 22
                      , SrcSpan "tests/examples/GadtDeriving.hs" 5 30 5 31
                      ]
                  }
                [ IRule
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 15 5 17
                      , srcInfoPoints = []
                      }
                    Nothing
                    Nothing
                    (IHCon
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 15 5 17
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 15 5 17
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 15 5 17
                               , srcInfoPoints = []
                               }
                             "Eq")))
                , IRule
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 18 5 21
                      , srcInfoPoints = []
                      }
                    Nothing
                    Nothing
                    (IHCon
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 18 5 21
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 18 5 21
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 18 5 21
                               , srcInfoPoints = []
                               }
                             "Ord")))
                , IRule
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 22 5 30
                      , srcInfoPoints = []
                      }
                    Nothing
                    Nothing
                    (IHCon
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 22 5 30
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 22 5 30
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 22 5 30
                               , srcInfoPoints = []
                               }
                             "Typeable")))
                ]))
      ]
  , []
  )