ParseOk
  ( Module
      SrcSpanInfo
        { srcInfoSpan =
            SrcSpan "tests/examples/ConstraintKinds3.hs" 1 1 8 1
        , srcInfoPoints =
            [ SrcSpan "tests/examples/ConstraintKinds3.hs" 1 1 1 1
            , SrcSpan "tests/examples/ConstraintKinds3.hs" 2 1 2 1
            , SrcSpan "tests/examples/ConstraintKinds3.hs" 4 1 4 1
            , SrcSpan "tests/examples/ConstraintKinds3.hs" 4 1 4 1
            , SrcSpan "tests/examples/ConstraintKinds3.hs" 4 1 4 1
            , SrcSpan "tests/examples/ConstraintKinds3.hs" 8 1 8 1
            , SrcSpan "tests/examples/ConstraintKinds3.hs" 8 1 8 1
            ]
        }
      Nothing
      [ LanguagePragma
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/ConstraintKinds3.hs" 1 1 1 33
            , srcInfoPoints =
                [ SrcSpan "tests/examples/ConstraintKinds3.hs" 1 1 1 13
                , SrcSpan "tests/examples/ConstraintKinds3.hs" 1 30 1 33
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/ConstraintKinds3.hs" 1 14 1 29
                , srcInfoPoints = []
                }
              "ConstraintKinds"
          ]
      , LanguagePragma
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/ConstraintKinds3.hs" 2 1 2 39
            , srcInfoPoints =
                [ SrcSpan "tests/examples/ConstraintKinds3.hs" 2 1 2 13
                , SrcSpan "tests/examples/ConstraintKinds3.hs" 2 36 2 39
                ]
            }
          [ Ident
              SrcSpanInfo
                { srcInfoSpan =
                    SrcSpan "tests/examples/ConstraintKinds3.hs" 2 14 2 35
                , srcInfoPoints = []
                }
              "MultiParamTypeClasses"
          ]
      ]
      []
      [ ClassDecl
          SrcSpanInfo
            { srcInfoSpan =
                SrcSpan "tests/examples/ConstraintKinds3.hs" 4 1 6 25
            , srcInfoPoints =
                [ SrcSpan "tests/examples/ConstraintKinds3.hs" 4 1 4 6
                , SrcSpan "tests/examples/ConstraintKinds3.hs" 4 15 4 20
                , SrcSpan "tests/examples/ConstraintKinds3.hs" 6 3 6 3
                , SrcSpan "tests/examples/ConstraintKinds3.hs" 8 1 8 0
                ]
            }
          Nothing
          (DHApp
             SrcSpanInfo
               { srcInfoSpan =
                   SrcSpan "tests/examples/ConstraintKinds3.hs" 4 7 4 14
               , srcInfoPoints = []
               }
             (DHApp
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/ConstraintKinds3.hs" 4 7 4 12
                  , srcInfoPoints = []
                  }
                (DHead
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/ConstraintKinds3.hs" 4 7 4 10
                     , srcInfoPoints = []
                     }
                   (Ident
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/ConstraintKinds3.hs" 4 7 4 10
                        , srcInfoPoints = []
                        }
                      "Foo"))
                (UnkindedVar
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/ConstraintKinds3.hs" 4 11 4 12
                     , srcInfoPoints = []
                     }
                   (Ident
                      SrcSpanInfo
                        { srcInfoSpan =
                            SrcSpan "tests/examples/ConstraintKinds3.hs" 4 11 4 12
                        , srcInfoPoints = []
                        }
                      "c")))
             (UnkindedVar
                SrcSpanInfo
                  { srcInfoSpan =
                      SrcSpan "tests/examples/ConstraintKinds3.hs" 4 13 4 14
                  , srcInfoPoints = []
                  }
                (Ident
                   SrcSpanInfo
                     { srcInfoSpan =
                         SrcSpan "tests/examples/ConstraintKinds3.hs" 4 13 4 14
                     , srcInfoPoints = []
                     }
                   "a")))
          []
          (Just
             [ ClsDecl
                 SrcSpanInfo
                   { srcInfoSpan =
                       SrcSpan "tests/examples/ConstraintKinds3.hs" 6 3 6 25
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 7 6 9 ]
                   }
                 (TypeSig
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/ConstraintKinds3.hs" 6 3 6 25
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 7 6 9 ]
                      }
                    [ Ident
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/ConstraintKinds3.hs" 6 3 6 6
                          , srcInfoPoints = []
                          }
                        "bar"
                    ]
                    (TyForall
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/ConstraintKinds3.hs" 6 10 6 25
                         , srcInfoPoints = []
                         }
                       Nothing
                       (Just
                          (CxSingle
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/ConstraintKinds3.hs" 6 10 6 18
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 10 6 11
                                   , SrcSpan "tests/examples/ConstraintKinds3.hs" 6 14 6 15
                                   , SrcSpan "tests/examples/ConstraintKinds3.hs" 6 16 6 18
                                   ]
                               }
                             (ParenA
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/ConstraintKinds3.hs" 6 10 6 18
                                  , srcInfoPoints =
                                      [ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 10 6 11
                                      , SrcSpan "tests/examples/ConstraintKinds3.hs" 6 14 6 15
                                      , SrcSpan "tests/examples/ConstraintKinds3.hs" 6 16 6 18
                                      ]
                                  }
                                (AppA
                                   SrcSpanInfo
                                     { srcInfoSpan =
                                         SrcSpan "tests/examples/ConstraintKinds3.hs" 6 11 6 14
                                     , srcInfoPoints = []
                                     }
                                   (Ident
                                      SrcSpanInfo
                                        { srcInfoSpan =
                                            SrcSpan "tests/examples/ConstraintKinds3.hs" 6 11 6 12
                                        , srcInfoPoints = []
                                        }
                                      "c")
                                   [ TyVar
                                       SrcSpanInfo
                                         { srcInfoSpan =
                                             SrcSpan "tests/examples/ConstraintKinds3.hs" 6 13 6 14
                                         , srcInfoPoints = []
                                         }
                                       (Ident
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan
                                                  "tests/examples/ConstraintKinds3.hs" 6 13 6 14
                                            , srcInfoPoints = []
                                            }
                                          "a")
                                   ]))))
                       (TyFun
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/ConstraintKinds3.hs" 6 19 6 25
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 21 6 23 ]
                            }
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/ConstraintKinds3.hs" 6 19 6 20
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/ConstraintKinds3.hs" 6 19 6 20
                                  , srcInfoPoints = []
                                  }
                                "a"))
                          (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/ConstraintKinds3.hs" 6 24 6 25
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/ConstraintKinds3.hs" 6 24 6 25
                                  , srcInfoPoints = []
                                  }
                                "a")))))
             ])
      ]
  , []
  )