ParseOk
  ( Module
      SrcSpanInfo
        { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 1 2 1
        , srcInfoPoints =
            [ SrcSpan "tests/examples/Rules.hs" 1 1 1 1
            , SrcSpan "tests/examples/Rules.hs" 1 1 1 1
            , SrcSpan "tests/examples/Rules.hs" 1 1 1 1
            , SrcSpan "tests/examples/Rules.hs" 2 1 2 1
            , SrcSpan "tests/examples/Rules.hs" 2 1 2 1
            ]
        }
      Nothing
      []
      []
      [ RulePragmaDecl
          SrcSpanInfo
            { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 1 1 105
            , srcInfoPoints =
                [ SrcSpan "tests/examples/Rules.hs" 1 1 1 10
                , SrcSpan "tests/examples/Rules.hs" 1 102 1 105
                ]
            }
          [ Rule
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 11 1 101
                , srcInfoPoints =
                    [ SrcSpan "tests/examples/Rules.hs" 1 11 1 23
                    , SrcSpan "tests/examples/Rules.hs" 1 24 1 30
                    , SrcSpan "tests/examples/Rules.hs" 1 61 1 62
                    , SrcSpan "tests/examples/Rules.hs" 1 78 1 79
                    ]
                }
              "head/build"
              Nothing
              (Just
                 [ TypedRuleVar
                     SrcSpanInfo
                       { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 31 1 60
                       , srcInfoPoints =
                           [ SrcSpan "tests/examples/Rules.hs" 1 31 1 32
                           , SrcSpan "tests/examples/Rules.hs" 1 33 1 35
                           , SrcSpan "tests/examples/Rules.hs" 1 59 1 60
                           ]
                       }
                     (Ident
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 32 1 33
                          , srcInfoPoints = []
                          }
                        "g")
                     (TyForall
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 35 1 59
                          , srcInfoPoints =
                              [ SrcSpan "tests/examples/Rules.hs" 1 35 1 41
                              , SrcSpan "tests/examples/Rules.hs" 1 43 1 44
                              ]
                          }
                        (Just
                           [ UnkindedVar
                               SrcSpanInfo
                                 { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 42 1 43
                                 , srcInfoPoints = []
                                 }
                               (Ident
                                  SrcSpanInfo
                                    { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 42 1 43
                                    , srcInfoPoints = []
                                    }
                                  "b")
                           ])
                        Nothing
                        (TyFun
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 44 1 59
                             , srcInfoPoints = [ SrcSpan "tests/examples/Rules.hs" 1 53 1 55 ]
                             }
                           (TyParen
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 44 1 53
                                , srcInfoPoints =
                                    [ SrcSpan "tests/examples/Rules.hs" 1 44 1 45
                                    , SrcSpan "tests/examples/Rules.hs" 1 52 1 53
                                    ]
                                }
                              (TyFun
                                 SrcSpanInfo
                                   { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 45 1 52
                                   , srcInfoPoints = [ SrcSpan "tests/examples/Rules.hs" 1 46 1 48 ]
                                   }
                                 (TyVar
                                    SrcSpanInfo
                                      { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 45 1 46
                                      , srcInfoPoints = []
                                      }
                                    (Ident
                                       SrcSpanInfo
                                         { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 45 1 46
                                         , srcInfoPoints = []
                                         }
                                       "a"))
                                 (TyFun
                                    SrcSpanInfo
                                      { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 48 1 52
                                      , srcInfoPoints =
                                          [ SrcSpan "tests/examples/Rules.hs" 1 49 1 51 ]
                                      }
                                    (TyVar
                                       SrcSpanInfo
                                         { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 48 1 49
                                         , srcInfoPoints = []
                                         }
                                       (Ident
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/Rules.hs" 1 48 1 49
                                            , srcInfoPoints = []
                                            }
                                          "b"))
                                    (TyVar
                                       SrcSpanInfo
                                         { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 51 1 52
                                         , srcInfoPoints = []
                                         }
                                       (Ident
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/Rules.hs" 1 51 1 52
                                            , srcInfoPoints = []
                                            }
                                          "b")))))
                           (TyFun
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 55 1 59
                                , srcInfoPoints = [ SrcSpan "tests/examples/Rules.hs" 1 56 1 58 ]
                                }
                              (TyVar
                                 SrcSpanInfo
                                   { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 55 1 56
                                   , srcInfoPoints = []
                                   }
                                 (Ident
                                    SrcSpanInfo
                                      { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 55 1 56
                                      , srcInfoPoints = []
                                      }
                                    "b"))
                              (TyVar
                                 SrcSpanInfo
                                   { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 58 1 59
                                   , srcInfoPoints = []
                                   }
                                 (Ident
                                    SrcSpanInfo
                                      { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 58 1 59
                                      , srcInfoPoints = []
                                      }
                                    "b")))))
                 ])
              (App
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 63 1 77
                   , srcInfoPoints = []
                   }
                 (Var
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 63 1 67
                      , srcInfoPoints = []
                      }
                    (UnQual
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 63 1 67
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 63 1 67
                            , srcInfoPoints = []
                            }
                          "head")))
                 (Paren
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 68 1 77
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/Rules.hs" 1 68 1 69
                          , SrcSpan "tests/examples/Rules.hs" 1 76 1 77
                          ]
                      }
                    (App
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 69 1 76
                         , srcInfoPoints = []
                         }
                       (Var
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 69 1 74
                            , srcInfoPoints = []
                            }
                          (UnQual
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 69 1 74
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 69 1 74
                                  , srcInfoPoints = []
                                  }
                                "build")))
                       (Var
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 75 1 76
                            , srcInfoPoints = []
                            }
                          (UnQual
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 75 1 76
                               , srcInfoPoints = []
                               }
                             (Ident
                                SrcSpanInfo
                                  { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 75 1 76
                                  , srcInfoPoints = []
                                  }
                                "g"))))))
              (App
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 80 1 101
                   , srcInfoPoints = []
                   }
                 (App
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 80 1 93
                      , srcInfoPoints = []
                      }
                    (Var
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 80 1 81
                         , srcInfoPoints = []
                         }
                       (UnQual
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 80 1 81
                            , srcInfoPoints = []
                            }
                          (Ident
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 80 1 81
                               , srcInfoPoints = []
                               }
                             "g")))
                    (Paren
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 82 1 93
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/Rules.hs" 1 82 1 83
                             , SrcSpan "tests/examples/Rules.hs" 1 92 1 93
                             ]
                         }
                       (Lambda
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 83 1 92
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/Rules.hs" 1 83 1 84
                                , SrcSpan "tests/examples/Rules.hs" 1 88 1 90
                                ]
                            }
                          [ PVar
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 84 1 85
                                , srcInfoPoints = []
                                }
                              (Ident
                                 SrcSpanInfo
                                   { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 84 1 85
                                   , srcInfoPoints = []
                                   }
                                 "x")
                          , PWildCard
                              SrcSpanInfo
                                { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 86 1 87
                                , srcInfoPoints = []
                                }
                          ]
                          (Var
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 91 1 92
                               , srcInfoPoints = []
                               }
                             (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 91 1 92
                                  , srcInfoPoints = []
                                  }
                                (Ident
                                   SrcSpanInfo
                                     { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 91 1 92
                                     , srcInfoPoints = []
                                     }
                                   "x"))))))
                 (Var
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 94 1 101
                      , srcInfoPoints = []
                      }
                    (UnQual
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 94 1 101
                         , srcInfoPoints = []
                         }
                       (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 94 1 101
                            , srcInfoPoints = []
                            }
                          "badHead"))))
          ]
      ]
  , []
  )