hamlet/GrammarCoreFn-functor.ss
(module GrammarCoreFn-functor (planet chongkai/sml)
  (#%module-begin
   (Program:
    (FUNDECTopDec:
     (FunDec:
      (FunBind:
       (FunId: GrammarCoreFn-functor)
       (StrId: _id18-struct)
       (SIGSigExp: (TYPESpec: (TypDec: (TyVarseq:) (TyCon: Info-type))))
       (LETStrExp:
        (DECStrDec: (OPENDec: (LongStrId: _id18-struct)))
        (COLONStrExp:
         (STRUCTStrExp:
          (SEQStrDec:
           (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: Info-type) (CONTy: (Tyseq:) (LongTyCon: Info-type)))))
           (SEQStrDec:
            (DECStrDec:
             (TYPEDec:
              (TypBind:
               (TyVarseq:)
               (TyCon: SCon-type)
               (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: SCon.SCon-type))))))))
            (SEQStrDec:
             (DECStrDec:
              (TYPEDec:
               (TypBind:
                (TyVarseq:)
                (TyCon: Lab-type)
                (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Lab.Lab-type))))))))
             (SEQStrDec:
              (DECStrDec:
               (TYPEDec:
                (TypBind:
                 (TyVarseq:)
                 (TyCon: VId-type)
                 (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: VId.Id-type))))))))
              (SEQStrDec:
               (DECStrDec:
                (TYPEDec:
                 (TypBind:
                  (TyVarseq:)
                  (TyCon: TyCon-type)
                  (RECORDTy:
                   (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: TyCon.Id-type))))))))
               (SEQStrDec:
                (DECStrDec:
                 (TYPEDec:
                  (TypBind:
                   (TyVarseq:)
                   (TyCon: TyVar-type)
                   (RECORDTy:
                    (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: TyVar.TyVar-type))))))))
                (SEQStrDec:
                 (DECStrDec:
                  (TYPEDec:
                   (TypBind:
                    (TyVarseq:)
                    (TyCon: StrId-type)
                    (RECORDTy:
                     (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: StrId.Id-type))))))))
                 (SEQStrDec:
                  (DECStrDec:
                   (TYPEDec:
                    (TypBind:
                     (TyVarseq:)
                     (TyCon: longVId-type)
                     (RECORDTy:
                      (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: LongVId.longId-type))))))))
                  (SEQStrDec:
                   (DECStrDec:
                    (TYPEDec:
                     (TypBind:
                      (TyVarseq:)
                      (TyCon: longTyCon-type)
                      (RECORDTy:
                       (TyRow:
                        (Lab: |1|)
                        (CONTy: (Tyseq:) (LongTyCon: Info-type))
                        (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: LongTyCon.longId-type))))))))
                   (SEQStrDec:
                    (DECStrDec:
                     (TYPEDec:
                      (TypBind:
                       (TyVarseq:)
                       (TyCon: longStrId-type)
                       (RECORDTy:
                        (TyRow:
                         (Lab: |1|)
                         (CONTy: (Tyseq:) (LongTyCon: Info-type))
                         (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: LongStrId.longId-type))))))))
                    (SEQStrDec:
                     (DECStrDec: (DATATYPEDec: (DatBind: (TyVarseq:) (TyCon: Op-type) (ConBind: (VId: SANSOp) (ConBind: (VId: WITHOp))))))
                     (SEQStrDec:
                      (DECStrDec:
                       (DATATYPEDec:
                        (DatBind:
                         (TyVarseq:)
                         (TyCon: AtExp-type)
                         (ConBind:
                          (VId: SCONAtExp)
                          (RECORDTy:
                           (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: SCon-type)))))
                          (ConBind:
                           (VId: IDAtExp)
                           (RECORDTy:
                            (TyRow:
                             (Lab: |1|)
                             (CONTy: (Tyseq:) (LongTyCon: Info-type))
                             (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Op-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: longVId-type))))))
                           (ConBind:
                            (VId: RECORDAtExp)
                            (RECORDTy:
                             (TyRow:
                              (Lab: |1|)
                              (CONTy: (Tyseq:) (LongTyCon: Info-type))
                              (TyRow: (Lab: |2|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: ExpRow-type))) (LongTyCon: option-type)))))
                            (ConBind:
                             (VId: LETAtExp)
                             (RECORDTy:
                              (TyRow:
                               (Lab: |1|)
                               (CONTy: (Tyseq:) (LongTyCon: Info-type))
                               (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Dec-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: Exp-type))))))
                             (ConBind:
                              (VId: PARAtExp)
                              (RECORDTy:
                               (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Exp-type)))))
                              (ConBind:
                               (VId: SEQAtExp)
                               (RECORDTy:
                                (TyRow:
                                 (Lab: |1|)
                                 (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                 (TyRow:
                                  (Lab: |2|)
                                  (CONTy: (Tyseq:) (LongTyCon: Exp-type))
                                  (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: AtExp-type))))))))))))
                         (DatBind:
                          (TyVarseq:)
                          (TyCon: ExpRow-type)
                          (ConBind:
                           (VId: ExpRow)
                           (RECORDTy:
                            (TyRow:
                             (Lab: |1|)
                             (CONTy: (Tyseq:) (LongTyCon: Info-type))
                             (TyRow:
                              (Lab: |2|)
                              (CONTy: (Tyseq:) (LongTyCon: Lab-type))
                              (TyRow:
                               (Lab: |3|)
                               (CONTy: (Tyseq:) (LongTyCon: Exp-type))
                               (TyRow: (Lab: |4|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: ExpRow-type))) (LongTyCon: option-type))))))))
                          (DatBind:
                           (TyVarseq:)
                           (TyCon: Exp-type)
                           (ConBind:
                            (VId: ATExp)
                            (RECORDTy:
                             (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: AtExp-type)))))
                            (ConBind:
                             (VId: APPExp)
                             (RECORDTy:
                              (TyRow:
                               (Lab: |1|)
                               (CONTy: (Tyseq:) (LongTyCon: Info-type))
                               (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Exp-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: AtExp-type))))))
                             (ConBind:
                              (VId: COLONExp)
                              (RECORDTy:
                               (TyRow:
                                (Lab: |1|)
                                (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Exp-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: Ty-type))))))
                              (ConBind:
                               (VId: HANDLEExp)
                               (RECORDTy:
                                (TyRow:
                                 (Lab: |1|)
                                 (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                 (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Exp-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: Match-type))))))
                               (ConBind:
                                (VId: RAISEExp)
                                (RECORDTy:
                                 (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Exp-type)))))
                                (ConBind:
                                 (VId: FNExp)
                                 (RECORDTy:
                                  (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Match-type)))))
                                 (ConBind:
                                  (VId: IFExp)
                                  (RECORDTy:
                                   (TyRow:
                                    (Lab: |1|)
                                    (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                    (TyRow:
                                     (Lab: |2|)
                                     (CONTy: (Tyseq:) (LongTyCon: Exp-type))
                                     (TyRow:
                                      (Lab: |3|)
                                      (CONTy: (Tyseq:) (LongTyCon: Exp-type))
                                      (TyRow: (Lab: |4|) (CONTy: (Tyseq:) (LongTyCon: Exp-type))))))))))))))
                           (DatBind:
                            (TyVarseq:)
                            (TyCon: Match-type)
                            (ConBind:
                             (VId: Match)
                             (RECORDTy:
                              (TyRow:
                               (Lab: |1|)
                               (CONTy: (Tyseq:) (LongTyCon: Info-type))
                               (TyRow:
                                (Lab: |2|)
                                (CONTy: (Tyseq:) (LongTyCon: Mrule-type))
                                (TyRow: (Lab: |3|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: Match-type))) (LongTyCon: option-type)))))))
                            (DatBind:
                             (TyVarseq:)
                             (TyCon: Mrule-type)
                             (ConBind:
                              (VId: Mrule)
                              (RECORDTy:
                               (TyRow:
                                (Lab: |1|)
                                (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Pat-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: Exp-type)))))))
                             (DatBind:
                              (TyVarseq:)
                              (TyCon: Dec-type)
                              (ConBind:
                               (VId: VALDec)
                               (RECORDTy:
                                (TyRow:
                                 (Lab: |1|)
                                 (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                 (TyRow:
                                  (Lab: |2|)
                                  (CONTy: (Tyseq:) (LongTyCon: TyVarseq-type))
                                  (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: ValBind-type))))))
                               (ConBind:
                                (VId: TYPEDec)
                                (RECORDTy:
                                 (TyRow:
                                  (Lab: |1|)
                                  (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                  (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: TypBind-type)))))
                                (ConBind:
                                 (VId: DATATYPEDec)
                                 (RECORDTy:
                                  (TyRow:
                                   (Lab: |1|)
                                   (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                   (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: DatBind-type)))))
                                 (ConBind:
                                  (VId: DATATYPE2Dec)
                                  (RECORDTy:
                                   (TyRow:
                                    (Lab: |1|)
                                    (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                    (TyRow:
                                     (Lab: |2|)
                                     (CONTy: (Tyseq:) (LongTyCon: TyCon-type))
                                     (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: longTyCon-type))))))
                                  (ConBind:
                                   (VId: ABSTYPEDec)
                                   (RECORDTy:
                                    (TyRow:
                                     (Lab: |1|)
                                     (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                     (TyRow:
                                      (Lab: |2|)
                                      (CONTy: (Tyseq:) (LongTyCon: DatBind-type))
                                      (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: Dec-type))))))
                                   (ConBind:
                                    (VId: EXCEPTIONDec)
                                    (RECORDTy:
                                     (TyRow:
                                      (Lab: |1|)
                                      (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                      (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: ExBind-type)))))
                                    (ConBind:
                                     (VId: LOCALDec)
                                     (RECORDTy:
                                      (TyRow:
                                       (Lab: |1|)
                                       (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                       (TyRow:
                                        (Lab: |2|)
                                        (CONTy: (Tyseq:) (LongTyCon: Dec-type))
                                        (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: Dec-type))))))
                                     (ConBind:
                                      (VId: OPENDec)
                                      (RECORDTy:
                                       (TyRow:
                                        (Lab: |1|)
                                        (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                        (TyRow: (Lab: |2|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: longStrId-type))) (LongTyCon: list-type)))))
                                      (ConBind:
                                       (VId: EMPTYDec)
                                       (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                       (ConBind:
                                        (VId: SEQDec)
                                        (RECORDTy:
                                         (TyRow:
                                          (Lab: |1|)
                                          (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                          (TyRow:
                                           (Lab: |2|)
                                           (CONTy: (Tyseq:) (LongTyCon: Dec-type))
                                           (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: Dec-type))))))))))))))))
                              (DatBind:
                               (TyVarseq:)
                               (TyCon: ValBind-type)
                               (ConBind:
                                (VId: PLAINValBind)
                                (RECORDTy:
                                 (TyRow:
                                  (Lab: |1|)
                                  (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                  (TyRow:
                                   (Lab: |2|)
                                   (CONTy: (Tyseq:) (LongTyCon: Pat-type))
                                   (TyRow:
                                    (Lab: |3|)
                                    (CONTy: (Tyseq:) (LongTyCon: Exp-type))
                                    (TyRow: (Lab: |4|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: ValBind-type))) (LongTyCon: option-type)))))))
                                (ConBind:
                                 (VId: RECValBind)
                                 (RECORDTy:
                                  (TyRow:
                                   (Lab: |1|)
                                   (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                   (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: ValBind-type)))))))
                               (DatBind:
                                (TyVarseq:)
                                (TyCon: TypBind-type)
                                (ConBind:
                                 (VId: TypBind)
                                 (RECORDTy:
                                  (TyRow:
                                   (Lab: |1|)
                                   (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                   (TyRow:
                                    (Lab: |2|)
                                    (CONTy: (Tyseq:) (LongTyCon: TyVarseq-type))
                                    (TyRow:
                                     (Lab: |3|)
                                     (CONTy: (Tyseq:) (LongTyCon: TyCon-type))
                                     (TyRow:
                                      (Lab: |4|)
                                      (CONTy: (Tyseq:) (LongTyCon: Ty-type))
                                      (TyRow: (Lab: |5|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: TypBind-type))) (LongTyCon: option-type)))))))))
                                (DatBind:
                                 (TyVarseq:)
                                 (TyCon: DatBind-type)
                                 (ConBind:
                                  (VId: DatBind)
                                  (RECORDTy:
                                   (TyRow:
                                    (Lab: |1|)
                                    (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                    (TyRow:
                                     (Lab: |2|)
                                     (CONTy: (Tyseq:) (LongTyCon: TyVarseq-type))
                                     (TyRow:
                                      (Lab: |3|)
                                      (CONTy: (Tyseq:) (LongTyCon: TyCon-type))
                                      (TyRow:
                                       (Lab: |4|)
                                       (CONTy: (Tyseq:) (LongTyCon: ConBind-type))
                                       (TyRow: (Lab: |5|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: DatBind-type))) (LongTyCon: option-type)))))))))
                                 (DatBind:
                                  (TyVarseq:)
                                  (TyCon: ConBind-type)
                                  (ConBind:
                                   (VId: ConBind)
                                   (RECORDTy:
                                    (TyRow:
                                     (Lab: |1|)
                                     (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                     (TyRow:
                                      (Lab: |2|)
                                      (CONTy: (Tyseq:) (LongTyCon: Op-type))
                                      (TyRow:
                                       (Lab: |3|)
                                       (CONTy: (Tyseq:) (LongTyCon: VId-type))
                                       (TyRow:
                                        (Lab: |4|)
                                        (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: Ty-type))) (LongTyCon: option-type))
                                        (TyRow: (Lab: |5|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: ConBind-type))) (LongTyCon: option-type)))))))))
                                  (DatBind:
                                   (TyVarseq:)
                                   (TyCon: ExBind-type)
                                   (ConBind:
                                    (VId: NEWExBind)
                                    (RECORDTy:
                                     (TyRow:
                                      (Lab: |1|)
                                      (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                      (TyRow:
                                       (Lab: |2|)
                                       (CONTy: (Tyseq:) (LongTyCon: Op-type))
                                       (TyRow:
                                        (Lab: |3|)
                                        (CONTy: (Tyseq:) (LongTyCon: VId-type))
                                        (TyRow:
                                         (Lab: |4|)
                                         (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: Ty-type))) (LongTyCon: option-type))
                                         (TyRow: (Lab: |5|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: ExBind-type))) (LongTyCon: option-type))))))))
                                    (ConBind:
                                     (VId: EQUALExBind)
                                     (RECORDTy:
                                      (TyRow:
                                       (Lab: |1|)
                                       (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                       (TyRow:
                                        (Lab: |2|)
                                        (CONTy: (Tyseq:) (LongTyCon: Op-type))
                                        (TyRow:
                                         (Lab: |3|)
                                         (CONTy: (Tyseq:) (LongTyCon: VId-type))
                                         (TyRow:
                                          (Lab: |4|)
                                          (CONTy: (Tyseq:) (LongTyCon: Op-type))
                                          (TyRow:
                                           (Lab: |5|)
                                           (CONTy: (Tyseq:) (LongTyCon: longVId-type))
                                           (TyRow: (Lab: |6|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: ExBind-type))) (LongTyCon: option-type)))))))))))
                                   (DatBind:
                                    (TyVarseq:)
                                    (TyCon: AtPat-type)
                                    (ConBind:
                                     (VId: WILDCARDAtPat)
                                     (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                     (ConBind:
                                      (VId: SCONAtPat)
                                      (RECORDTy:
                                       (TyRow:
                                        (Lab: |1|)
                                        (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                        (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: SCon-type)))))
                                      (ConBind:
                                       (VId: IDAtPat)
                                       (RECORDTy:
                                        (TyRow:
                                         (Lab: |1|)
                                         (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                         (TyRow:
                                          (Lab: |2|)
                                          (CONTy: (Tyseq:) (LongTyCon: Op-type))
                                          (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: longVId-type))))))
                                       (ConBind:
                                        (VId: RECORDAtPat)
                                        (RECORDTy:
                                         (TyRow:
                                          (Lab: |1|)
                                          (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                          (TyRow: (Lab: |2|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: PatRow-type))) (LongTyCon: option-type)))))
                                        (ConBind:
                                         (VId: PARAtPat)
                                         (RECORDTy:
                                          (TyRow:
                                           (Lab: |1|)
                                           (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                           (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Pat-type))))))))))
                                    (DatBind:
                                     (TyVarseq:)
                                     (TyCon: PatRow-type)
                                     (ConBind:
                                      (VId: DOTSPatRow)
                                      (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                      (ConBind:
                                       (VId: FIELDPatRow)
                                       (RECORDTy:
                                        (TyRow:
                                         (Lab: |1|)
                                         (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                         (TyRow:
                                          (Lab: |2|)
                                          (CONTy: (Tyseq:) (LongTyCon: Lab-type))
                                          (TyRow:
                                           (Lab: |3|)
                                           (CONTy: (Tyseq:) (LongTyCon: Pat-type))
                                           (TyRow: (Lab: |4|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: PatRow-type))) (LongTyCon: option-type)))))))))
                                     (DatBind:
                                      (TyVarseq:)
                                      (TyCon: Pat-type)
                                      (ConBind:
                                       (VId: ATPat)
                                       (RECORDTy:
                                        (TyRow:
                                         (Lab: |1|)
                                         (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                         (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: AtPat-type)))))
                                       (ConBind:
                                        (VId: CONPat)
                                        (RECORDTy:
                                         (TyRow:
                                          (Lab: |1|)
                                          (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                          (TyRow:
                                           (Lab: |2|)
                                           (CONTy: (Tyseq:) (LongTyCon: Op-type))
                                           (TyRow:
                                            (Lab: |3|)
                                            (CONTy: (Tyseq:) (LongTyCon: longVId-type))
                                            (TyRow: (Lab: |4|) (CONTy: (Tyseq:) (LongTyCon: AtPat-type)))))))
                                        (ConBind:
                                         (VId: COLONPat)
                                         (RECORDTy:
                                          (TyRow:
                                           (Lab: |1|)
                                           (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                           (TyRow:
                                            (Lab: |2|)
                                            (CONTy: (Tyseq:) (LongTyCon: Pat-type))
                                            (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: Ty-type))))))
                                         (ConBind:
                                          (VId: ASPat)
                                          (RECORDTy:
                                           (TyRow:
                                            (Lab: |1|)
                                            (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                            (TyRow:
                                             (Lab: |2|)
                                             (CONTy: (Tyseq:) (LongTyCon: Op-type))
                                             (TyRow:
                                              (Lab: |3|)
                                              (CONTy: (Tyseq:) (LongTyCon: VId-type))
                                              (TyRow:
                                               (Lab: |4|)
                                               (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: Ty-type))) (LongTyCon: option-type))
                                               (TyRow: (Lab: |5|) (CONTy: (Tyseq:) (LongTyCon: Pat-type))))))))))))
                                      (DatBind:
                                       (TyVarseq:)
                                       (TyCon: Ty-type)
                                       (ConBind:
                                        (VId: VARTy)
                                        (RECORDTy:
                                         (TyRow:
                                          (Lab: |1|)
                                          (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                          (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: TyVar-type)))))
                                        (ConBind:
                                         (VId: RECORDTy)
                                         (RECORDTy:
                                          (TyRow:
                                           (Lab: |1|)
                                           (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                           (TyRow: (Lab: |2|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: TyRow-type))) (LongTyCon: option-type)))))
                                         (ConBind:
                                          (VId: CONTy)
                                          (RECORDTy:
                                           (TyRow:
                                            (Lab: |1|)
                                            (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                            (TyRow:
                                             (Lab: |2|)
                                             (CONTy: (Tyseq:) (LongTyCon: Tyseq-type))
                                             (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: longTyCon-type))))))
                                          (ConBind:
                                           (VId: ARROWTy)
                                           (RECORDTy:
                                            (TyRow:
                                             (Lab: |1|)
                                             (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                             (TyRow:
                                              (Lab: |2|)
                                              (CONTy: (Tyseq:) (LongTyCon: Ty-type))
                                              (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: Ty-type))))))
                                           (ConBind:
                                            (VId: PARTy)
                                            (RECORDTy:
                                             (TyRow:
                                              (Lab: |1|)
                                              (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                              (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Ty-type))))))))))
                                       (DatBind:
                                        (TyVarseq:)
                                        (TyCon: TyRow-type)
                                        (ConBind:
                                         (VId: TyRow)
                                         (RECORDTy:
                                          (TyRow:
                                           (Lab: |1|)
                                           (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                           (TyRow:
                                            (Lab: |2|)
                                            (CONTy: (Tyseq:) (LongTyCon: Lab-type))
                                            (TyRow:
                                             (Lab: |3|)
                                             (CONTy: (Tyseq:) (LongTyCon: Ty-type))
                                             (TyRow: (Lab: |4|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: TyRow-type))) (LongTyCon: option-type))))))))
                                        (DatBind:
                                         (TyVarseq:)
                                         (TyCon: Tyseq-type)
                                         (ConBind:
                                          (VId: Tyseq)
                                          (RECORDTy:
                                           (TyRow:
                                            (Lab: |1|)
                                            (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                            (TyRow: (Lab: |2|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: Ty-type))) (LongTyCon: list-type))))))
                                         (DatBind:
                                          (TyVarseq:)
                                          (TyCon: TyVarseq-type)
                                          (ConBind:
                                           (VId: TyVarseq)
                                           (RECORDTy:
                                            (TyRow:
                                             (Lab: |1|)
                                             (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                             (TyRow:
                                              (Lab: |2|)
                                              (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: TyVar-type))) (LongTyCon: list-type))))))))))))))))))))))))))
                      (SEQStrDec:
                       (DECStrDec:
                        (VALDec:
                         (TyVarseq:)
                         (RECValBind:
                          (PLAINValBind:
                           (ATPat: (IDAtPat: (LongVId: infoAtExp)))
                           (FNExp:
                            (Match:
                             (Mrule:
                              (ATPat:
                               (PARAtPat:
                                (ATPat:
                                 (PARAtPat:
                                  (ATPat:
                                   (PARAtPat:
                                    (CONPat:
                                     (LongVId: SCONAtExp)
                                     (RECORDAtPat:
                                      (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: I))) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:))))))))))))
                              (ATExp: (IDAtExp: (LongVId: I))))
                             (Match:
                              (Mrule:
                               (ATPat:
                                (PARAtPat:
                                 (ATPat:
                                  (PARAtPat:
                                   (ATPat:
                                    (PARAtPat:
                                     (CONPat:
                                      (LongVId: IDAtExp)
                                      (RECORDAtPat:
                                       (FIELDPatRow:
                                        (Lab: |1|)
                                        (ATPat: (IDAtPat: (LongVId: I)))
                                        (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |3|) (ATPat: (WILDCARDAtPat:)))))))))))))
                               (ATExp: (IDAtExp: (LongVId: I))))
                              (Match:
                               (Mrule:
                                (ATPat:
                                 (PARAtPat:
                                  (ATPat:
                                   (PARAtPat:
                                    (ATPat:
                                     (PARAtPat:
                                      (CONPat:
                                       (LongVId: RECORDAtExp)
                                       (RECORDAtPat:
                                        (FIELDPatRow:
                                         (Lab: |1|)
                                         (ATPat: (IDAtPat: (LongVId: I)))
                                         (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:))))))))))))
                                (ATExp: (IDAtExp: (LongVId: I))))
                               (Match:
                                (Mrule:
                                 (ATPat:
                                  (PARAtPat:
                                   (ATPat:
                                    (PARAtPat:
                                     (ATPat:
                                      (PARAtPat:
                                       (CONPat:
                                        (LongVId: LETAtExp)
                                        (RECORDAtPat:
                                         (FIELDPatRow:
                                          (Lab: |1|)
                                          (ATPat: (IDAtPat: (LongVId: I)))
                                          (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |3|) (ATPat: (WILDCARDAtPat:)))))))))))))
                                 (ATExp: (IDAtExp: (LongVId: I))))
                                (Match:
                                 (Mrule:
                                  (ATPat:
                                   (PARAtPat:
                                    (ATPat:
                                     (PARAtPat:
                                      (ATPat:
                                       (PARAtPat:
                                        (CONPat:
                                         (LongVId: PARAtExp)
                                         (RECORDAtPat:
                                          (FIELDPatRow:
                                           (Lab: |1|)
                                           (ATPat: (IDAtPat: (LongVId: I)))
                                           (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:))))))))))))
                                  (ATExp: (IDAtExp: (LongVId: I))))
                                 (Match:
                                  (Mrule:
                                   (ATPat:
                                    (PARAtPat:
                                     (ATPat:
                                      (PARAtPat:
                                       (ATPat:
                                        (PARAtPat:
                                         (CONPat:
                                          (LongVId: SEQAtExp)
                                          (RECORDAtPat:
                                           (FIELDPatRow:
                                            (Lab: |1|)
                                            (ATPat: (IDAtPat: (LongVId: I)))
                                            (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |3|) (ATPat: (WILDCARDAtPat:)))))))))))))
                                   (ATExp: (IDAtExp: (LongVId: I)))))))))))))))
                       (SEQStrDec:
                        (DECStrDec:
                         (VALDec:
                          (TyVarseq:)
                          (RECValBind:
                           (PLAINValBind:
                            (ATPat: (IDAtPat: (LongVId: infoExpRow)))
                            (FNExp:
                             (Match:
                              (Mrule:
                               (ATPat:
                                (PARAtPat:
                                 (ATPat:
                                  (PARAtPat:
                                   (ATPat:
                                    (PARAtPat:
                                     (CONPat:
                                      (LongVId: ExpRow)
                                      (RECORDAtPat:
                                       (FIELDPatRow:
                                        (Lab: |1|)
                                        (ATPat: (IDAtPat: (LongVId: I)))
                                        (FIELDPatRow:
                                         (Lab: |2|)
                                         (ATPat: (WILDCARDAtPat:))
                                         (FIELDPatRow: (Lab: |3|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |4|) (ATPat: (WILDCARDAtPat:))))))))))))))
                               (ATExp: (IDAtExp: (LongVId: I))))))))))
                        (SEQStrDec:
                         (DECStrDec:
                          (VALDec:
                           (TyVarseq:)
                           (RECValBind:
                            (PLAINValBind:
                             (ATPat: (IDAtPat: (LongVId: infoExp)))
                             (FNExp:
                              (Match:
                               (Mrule:
                                (ATPat:
                                 (PARAtPat:
                                  (ATPat:
                                   (PARAtPat:
                                    (ATPat:
                                     (PARAtPat:
                                      (CONPat:
                                       (LongVId: ATExp)
                                       (RECORDAtPat:
                                        (FIELDPatRow:
                                         (Lab: |1|)
                                         (ATPat: (IDAtPat: (LongVId: I)))
                                         (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:))))))))))))
                                (ATExp: (IDAtExp: (LongVId: I))))
                               (Match:
                                (Mrule:
                                 (ATPat:
                                  (PARAtPat:
                                   (ATPat:
                                    (PARAtPat:
                                     (ATPat:
                                      (PARAtPat:
                                       (CONPat:
                                        (LongVId: APPExp)
                                        (RECORDAtPat:
                                         (FIELDPatRow:
                                          (Lab: |1|)
                                          (ATPat: (IDAtPat: (LongVId: I)))
                                          (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |3|) (ATPat: (WILDCARDAtPat:)))))))))))))
                                 (ATExp: (IDAtExp: (LongVId: I))))
                                (Match:
                                 (Mrule:
                                  (ATPat:
                                   (PARAtPat:
                                    (ATPat:
                                     (PARAtPat:
                                      (ATPat:
                                       (PARAtPat:
                                        (CONPat:
                                         (LongVId: COLONExp)
                                         (RECORDAtPat:
                                          (FIELDPatRow:
                                           (Lab: |1|)
                                           (ATPat: (IDAtPat: (LongVId: I)))
                                           (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |3|) (ATPat: (WILDCARDAtPat:)))))))))))))
                                  (ATExp: (IDAtExp: (LongVId: I))))
                                 (Match:
                                  (Mrule:
                                   (ATPat:
                                    (PARAtPat:
                                     (ATPat:
                                      (PARAtPat:
                                       (ATPat:
                                        (PARAtPat:
                                         (CONPat:
                                          (LongVId: HANDLEExp)
                                          (RECORDAtPat:
                                           (FIELDPatRow:
                                            (Lab: |1|)
                                            (ATPat: (IDAtPat: (LongVId: I)))
                                            (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |3|) (ATPat: (WILDCARDAtPat:)))))))))))))
                                   (ATExp: (IDAtExp: (LongVId: I))))
                                  (Match:
                                   (Mrule:
                                    (ATPat:
                                     (PARAtPat:
                                      (ATPat:
                                       (PARAtPat:
                                        (ATPat:
                                         (PARAtPat:
                                          (CONPat:
                                           (LongVId: RAISEExp)
                                           (RECORDAtPat:
                                            (FIELDPatRow:
                                             (Lab: |1|)
                                             (ATPat: (IDAtPat: (LongVId: I)))
                                             (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:))))))))))))
                                    (ATExp: (IDAtExp: (LongVId: I))))
                                   (Match:
                                    (Mrule:
                                     (ATPat:
                                      (PARAtPat:
                                       (ATPat:
                                        (PARAtPat:
                                         (ATPat:
                                          (PARAtPat:
                                           (CONPat:
                                            (LongVId: FNExp)
                                            (RECORDAtPat:
                                             (FIELDPatRow:
                                              (Lab: |1|)
                                              (ATPat: (IDAtPat: (LongVId: I)))
                                              (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:))))))))))))
                                     (ATExp: (IDAtExp: (LongVId: I))))
                                    (Match:
                                     (Mrule:
                                      (ATPat:
                                       (PARAtPat:
                                        (ATPat:
                                         (PARAtPat:
                                          (ATPat:
                                           (PARAtPat:
                                            (CONPat:
                                             (LongVId: IFExp)
                                             (RECORDAtPat:
                                              (FIELDPatRow:
                                               (Lab: |1|)
                                               (ATPat: (IDAtPat: (LongVId: I)))
                                               (FIELDPatRow:
                                                (Lab: |2|)
                                                (ATPat: (WILDCARDAtPat:))
                                                (FIELDPatRow:
                                                 (Lab: |3|)
                                                 (ATPat: (WILDCARDAtPat:))
                                                 (FIELDPatRow: (Lab: |4|) (ATPat: (WILDCARDAtPat:))))))))))))))
                                      (ATExp: (IDAtExp: (LongVId: I))))))))))))))))
                         (SEQStrDec:
                          (DECStrDec:
                           (VALDec:
                            (TyVarseq:)
                            (RECValBind:
                             (PLAINValBind:
                              (ATPat: (IDAtPat: (LongVId: infoMatch)))
                              (FNExp:
                               (Match:
                                (Mrule:
                                 (ATPat:
                                  (PARAtPat:
                                   (ATPat:
                                    (PARAtPat:
                                     (ATPat:
                                      (PARAtPat:
                                       (CONPat:
                                        (LongVId: Match)
                                        (RECORDAtPat:
                                         (FIELDPatRow:
                                          (Lab: |1|)
                                          (ATPat: (IDAtPat: (LongVId: I)))
                                          (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |3|) (ATPat: (WILDCARDAtPat:)))))))))))))
                                 (ATExp: (IDAtExp: (LongVId: I))))))))))
                          (SEQStrDec:
                           (DECStrDec:
                            (VALDec:
                             (TyVarseq:)
                             (RECValBind:
                              (PLAINValBind:
                               (ATPat: (IDAtPat: (LongVId: infoMrule)))
                               (FNExp:
                                (Match:
                                 (Mrule:
                                  (ATPat:
                                   (PARAtPat:
                                    (ATPat:
                                     (PARAtPat:
                                      (ATPat:
                                       (PARAtPat:
                                        (CONPat:
                                         (LongVId: Mrule)
                                         (RECORDAtPat:
                                          (FIELDPatRow:
                                           (Lab: |1|)
                                           (ATPat: (IDAtPat: (LongVId: I)))
                                           (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |3|) (ATPat: (WILDCARDAtPat:)))))))))))))
                                  (ATExp: (IDAtExp: (LongVId: I))))))))))
                           (SEQStrDec:
                            (DECStrDec:
                             (VALDec:
                              (TyVarseq:)
                              (RECValBind:
                               (PLAINValBind:
                                (ATPat: (IDAtPat: (LongVId: infoDec)))
                                (FNExp:
                                 (Match:
                                  (Mrule:
                                   (ATPat:
                                    (PARAtPat:
                                     (ATPat:
                                      (PARAtPat:
                                       (ATPat:
                                        (PARAtPat:
                                         (CONPat:
                                          (LongVId: VALDec)
                                          (RECORDAtPat:
                                           (FIELDPatRow:
                                            (Lab: |1|)
                                            (ATPat: (IDAtPat: (LongVId: I)))
                                            (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |3|) (ATPat: (WILDCARDAtPat:)))))))))))))
                                   (ATExp: (IDAtExp: (LongVId: I))))
                                  (Match:
                                   (Mrule:
                                    (ATPat:
                                     (PARAtPat:
                                      (ATPat:
                                       (PARAtPat:
                                        (ATPat:
                                         (PARAtPat:
                                          (CONPat:
                                           (LongVId: TYPEDec)
                                           (RECORDAtPat:
                                            (FIELDPatRow:
                                             (Lab: |1|)
                                             (ATPat: (IDAtPat: (LongVId: I)))
                                             (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:))))))))))))
                                    (ATExp: (IDAtExp: (LongVId: I))))
                                   (Match:
                                    (Mrule:
                                     (ATPat:
                                      (PARAtPat:
                                       (ATPat:
                                        (PARAtPat:
                                         (ATPat:
                                          (PARAtPat:
                                           (CONPat:
                                            (LongVId: DATATYPEDec)
                                            (RECORDAtPat:
                                             (FIELDPatRow:
                                              (Lab: |1|)
                                              (ATPat: (IDAtPat: (LongVId: I)))
                                              (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:))))))))))))
                                     (ATExp: (IDAtExp: (LongVId: I))))
                                    (Match:
                                     (Mrule:
                                      (ATPat:
                                       (PARAtPat:
                                        (ATPat:
                                         (PARAtPat:
                                          (ATPat:
                                           (PARAtPat:
                                            (CONPat:
                                             (LongVId: DATATYPE2Dec)
                                             (RECORDAtPat:
                                              (FIELDPatRow:
                                               (Lab: |1|)
                                               (ATPat: (IDAtPat: (LongVId: I)))
                                               (FIELDPatRow:
                                                (Lab: |2|)
                                                (ATPat: (WILDCARDAtPat:))
                                                (FIELDPatRow: (Lab: |3|) (ATPat: (WILDCARDAtPat:)))))))))))))
                                      (ATExp: (IDAtExp: (LongVId: I))))
                                     (Match:
                                      (Mrule:
                                       (ATPat:
                                        (PARAtPat:
                                         (ATPat:
                                          (PARAtPat:
                                           (ATPat:
                                            (PARAtPat:
                                             (CONPat:
                                              (LongVId: ABSTYPEDec)
                                              (RECORDAtPat:
                                               (FIELDPatRow:
                                                (Lab: |1|)
                                                (ATPat: (IDAtPat: (LongVId: I)))
                                                (FIELDPatRow:
                                                 (Lab: |2|)
                                                 (ATPat: (WILDCARDAtPat:))
                                                 (FIELDPatRow: (Lab: |3|) (ATPat: (WILDCARDAtPat:)))))))))))))
                                       (ATExp: (IDAtExp: (LongVId: I))))
                                      (Match:
                                       (Mrule:
                                        (ATPat:
                                         (PARAtPat:
                                          (ATPat:
                                           (PARAtPat:
                                            (ATPat:
                                             (PARAtPat:
                                              (CONPat:
                                               (LongVId: EXCEPTIONDec)
                                               (RECORDAtPat:
                                                (FIELDPatRow:
                                                 (Lab: |1|)
                                                 (ATPat: (IDAtPat: (LongVId: I)))
                                                 (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:))))))))))))
                                        (ATExp: (IDAtExp: (LongVId: I))))
                                       (Match:
                                        (Mrule:
                                         (ATPat:
                                          (PARAtPat:
                                           (ATPat:
                                            (PARAtPat:
                                             (ATPat:
                                              (PARAtPat:
                                               (CONPat:
                                                (LongVId: LOCALDec)
                                                (RECORDAtPat:
                                                 (FIELDPatRow:
                                                  (Lab: |1|)
                                                  (ATPat: (IDAtPat: (LongVId: I)))
                                                  (FIELDPatRow:
                                                   (Lab: |2|)
                                                   (ATPat: (WILDCARDAtPat:))
                                                   (FIELDPatRow: (Lab: |3|) (ATPat: (WILDCARDAtPat:)))))))))))))
                                         (ATExp: (IDAtExp: (LongVId: I))))
                                        (Match:
                                         (Mrule:
                                          (ATPat:
                                           (PARAtPat:
                                            (ATPat:
                                             (PARAtPat:
                                              (ATPat:
                                               (PARAtPat:
                                                (CONPat:
                                                 (LongVId: OPENDec)
                                                 (RECORDAtPat:
                                                  (FIELDPatRow:
                                                   (Lab: |1|)
                                                   (ATPat: (IDAtPat: (LongVId: I)))
                                                   (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:))))))))))))
                                          (ATExp: (IDAtExp: (LongVId: I))))
                                         (Match:
                                          (Mrule:
                                           (ATPat:
                                            (PARAtPat:
                                             (ATPat:
                                              (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: EMPTYDec) (PARAtPat: (ATPat: (IDAtPat: (LongVId: I)))))))))))
                                           (ATExp: (IDAtExp: (LongVId: I))))
                                          (Match:
                                           (Mrule:
                                            (ATPat:
                                             (PARAtPat:
                                              (ATPat:
                                               (PARAtPat:
                                                (ATPat:
                                                 (PARAtPat:
                                                  (CONPat:
                                                   (LongVId: SEQDec)
                                                   (RECORDAtPat:
                                                    (FIELDPatRow:
                                                     (Lab: |1|)
                                                     (ATPat: (IDAtPat: (LongVId: I)))
                                                     (FIELDPatRow:
                                                      (Lab: |2|)
                                                      (ATPat: (WILDCARDAtPat:))
                                                      (FIELDPatRow: (Lab: |3|) (ATPat: (WILDCARDAtPat:)))))))))))))
                                            (ATExp: (IDAtExp: (LongVId: I)))))))))))))))))))
                            (SEQStrDec:
                             (DECStrDec:
                              (VALDec:
                               (TyVarseq:)
                               (RECValBind:
                                (PLAINValBind:
                                 (ATPat: (IDAtPat: (LongVId: infoValBind)))
                                 (FNExp:
                                  (Match:
                                   (Mrule:
                                    (ATPat:
                                     (PARAtPat:
                                      (ATPat:
                                       (PARAtPat:
                                        (ATPat:
                                         (PARAtPat:
                                          (CONPat:
                                           (LongVId: PLAINValBind)
                                           (RECORDAtPat:
                                            (FIELDPatRow:
                                             (Lab: |1|)
                                             (ATPat: (IDAtPat: (LongVId: I)))
                                             (FIELDPatRow:
                                              (Lab: |2|)
                                              (ATPat: (WILDCARDAtPat:))
                                              (FIELDPatRow:
                                               (Lab: |3|)
                                               (ATPat: (WILDCARDAtPat:))
                                               (FIELDPatRow: (Lab: |4|) (ATPat: (WILDCARDAtPat:))))))))))))))
                                    (ATExp: (IDAtExp: (LongVId: I))))
                                   (Match:
                                    (Mrule:
                                     (ATPat:
                                      (PARAtPat:
                                       (ATPat:
                                        (PARAtPat:
                                         (ATPat:
                                          (PARAtPat:
                                           (CONPat:
                                            (LongVId: RECValBind)
                                            (RECORDAtPat:
                                             (FIELDPatRow:
                                              (Lab: |1|)
                                              (ATPat: (IDAtPat: (LongVId: I)))
                                              (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:))))))))))))
                                     (ATExp: (IDAtExp: (LongVId: I)))))))))))
                             (SEQStrDec:
                              (DECStrDec:
                               (VALDec:
                                (TyVarseq:)
                                (RECValBind:
                                 (PLAINValBind:
                                  (ATPat: (IDAtPat: (LongVId: infoTypBind)))
                                  (FNExp:
                                   (Match:
                                    (Mrule:
                                     (ATPat:
                                      (PARAtPat:
                                       (ATPat:
                                        (PARAtPat:
                                         (ATPat:
                                          (PARAtPat:
                                           (CONPat:
                                            (LongVId: TypBind)
                                            (RECORDAtPat:
                                             (FIELDPatRow:
                                              (Lab: |1|)
                                              (ATPat: (IDAtPat: (LongVId: I)))
                                              (FIELDPatRow:
                                               (Lab: |2|)
                                               (ATPat: (WILDCARDAtPat:))
                                               (FIELDPatRow:
                                                (Lab: |3|)
                                                (ATPat: (WILDCARDAtPat:))
                                                (FIELDPatRow:
                                                 (Lab: |4|)
                                                 (ATPat: (WILDCARDAtPat:))
                                                 (FIELDPatRow: (Lab: |5|) (ATPat: (WILDCARDAtPat:)))))))))))))))
                                     (ATExp: (IDAtExp: (LongVId: I))))))))))
                              (SEQStrDec:
                               (DECStrDec:
                                (VALDec:
                                 (TyVarseq:)
                                 (RECValBind:
                                  (PLAINValBind:
                                   (ATPat: (IDAtPat: (LongVId: infoDatBind)))
                                   (FNExp:
                                    (Match:
                                     (Mrule:
                                      (ATPat:
                                       (PARAtPat:
                                        (ATPat:
                                         (PARAtPat:
                                          (ATPat:
                                           (PARAtPat:
                                            (CONPat:
                                             (LongVId: DatBind)
                                             (RECORDAtPat:
                                              (FIELDPatRow:
                                               (Lab: |1|)
                                               (ATPat: (IDAtPat: (LongVId: I)))
                                               (FIELDPatRow:
                                                (Lab: |2|)
                                                (ATPat: (WILDCARDAtPat:))
                                                (FIELDPatRow:
                                                 (Lab: |3|)
                                                 (ATPat: (WILDCARDAtPat:))
                                                 (FIELDPatRow:
                                                  (Lab: |4|)
                                                  (ATPat: (WILDCARDAtPat:))
                                                  (FIELDPatRow: (Lab: |5|) (ATPat: (WILDCARDAtPat:)))))))))))))))
                                      (ATExp: (IDAtExp: (LongVId: I))))))))))
                               (SEQStrDec:
                                (DECStrDec:
                                 (VALDec:
                                  (TyVarseq:)
                                  (RECValBind:
                                   (PLAINValBind:
                                    (ATPat: (IDAtPat: (LongVId: infoConBind)))
                                    (FNExp:
                                     (Match:
                                      (Mrule:
                                       (ATPat:
                                        (PARAtPat:
                                         (ATPat:
                                          (PARAtPat:
                                           (ATPat:
                                            (PARAtPat:
                                             (CONPat:
                                              (LongVId: ConBind)
                                              (RECORDAtPat:
                                               (FIELDPatRow:
                                                (Lab: |1|)
                                                (ATPat: (IDAtPat: (LongVId: I)))
                                                (FIELDPatRow:
                                                 (Lab: |2|)
                                                 (ATPat: (WILDCARDAtPat:))
                                                 (FIELDPatRow:
                                                  (Lab: |3|)
                                                  (ATPat: (WILDCARDAtPat:))
                                                  (FIELDPatRow:
                                                   (Lab: |4|)
                                                   (ATPat: (WILDCARDAtPat:))
                                                   (FIELDPatRow: (Lab: |5|) (ATPat: (WILDCARDAtPat:)))))))))))))))
                                       (ATExp: (IDAtExp: (LongVId: I))))))))))
                                (SEQStrDec:
                                 (DECStrDec:
                                  (VALDec:
                                   (TyVarseq:)
                                   (RECValBind:
                                    (PLAINValBind:
                                     (ATPat: (IDAtPat: (LongVId: infoExBind)))
                                     (FNExp:
                                      (Match:
                                       (Mrule:
                                        (ATPat:
                                         (PARAtPat:
                                          (ATPat:
                                           (PARAtPat:
                                            (ATPat:
                                             (PARAtPat:
                                              (CONPat:
                                               (LongVId: NEWExBind)
                                               (RECORDAtPat:
                                                (FIELDPatRow:
                                                 (Lab: |1|)
                                                 (ATPat: (IDAtPat: (LongVId: I)))
                                                 (FIELDPatRow:
                                                  (Lab: |2|)
                                                  (ATPat: (WILDCARDAtPat:))
                                                  (FIELDPatRow:
                                                   (Lab: |3|)
                                                   (ATPat: (WILDCARDAtPat:))
                                                   (FIELDPatRow:
                                                    (Lab: |4|)
                                                    (ATPat: (WILDCARDAtPat:))
                                                    (FIELDPatRow: (Lab: |5|) (ATPat: (WILDCARDAtPat:)))))))))))))))
                                        (ATExp: (IDAtExp: (LongVId: I))))
                                       (Match:
                                        (Mrule:
                                         (ATPat:
                                          (PARAtPat:
                                           (ATPat:
                                            (PARAtPat:
                                             (ATPat:
                                              (PARAtPat:
                                               (CONPat:
                                                (LongVId: EQUALExBind)
                                                (RECORDAtPat:
                                                 (FIELDPatRow:
                                                  (Lab: |1|)
                                                  (ATPat: (IDAtPat: (LongVId: I)))
                                                  (FIELDPatRow:
                                                   (Lab: |2|)
                                                   (ATPat: (WILDCARDAtPat:))
                                                   (FIELDPatRow:
                                                    (Lab: |3|)
                                                    (ATPat: (WILDCARDAtPat:))
                                                    (FIELDPatRow:
                                                     (Lab: |4|)
                                                     (ATPat: (WILDCARDAtPat:))
                                                     (FIELDPatRow:
                                                      (Lab: |5|)
                                                      (ATPat: (WILDCARDAtPat:))
                                                      (FIELDPatRow: (Lab: |6|) (ATPat: (WILDCARDAtPat:))))))))))))))))
                                         (ATExp: (IDAtExp: (LongVId: I)))))))))))
                                 (SEQStrDec:
                                  (DECStrDec:
                                   (VALDec:
                                    (TyVarseq:)
                                    (RECValBind:
                                     (PLAINValBind:
                                      (ATPat: (IDAtPat: (LongVId: infoAtPat)))
                                      (FNExp:
                                       (Match:
                                        (Mrule:
                                         (ATPat:
                                          (PARAtPat:
                                           (ATPat:
                                            (PARAtPat:
                                             (ATPat: (PARAtPat: (CONPat: (LongVId: WILDCARDAtPat) (PARAtPat: (ATPat: (IDAtPat: (LongVId: I)))))))))))
                                         (ATExp: (IDAtExp: (LongVId: I))))
                                        (Match:
                                         (Mrule:
                                          (ATPat:
                                           (PARAtPat:
                                            (ATPat:
                                             (PARAtPat:
                                              (ATPat:
                                               (PARAtPat:
                                                (CONPat:
                                                 (LongVId: SCONAtPat)
                                                 (RECORDAtPat:
                                                  (FIELDPatRow:
                                                   (Lab: |1|)
                                                   (ATPat: (IDAtPat: (LongVId: I)))
                                                   (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:))))))))))))
                                          (ATExp: (IDAtExp: (LongVId: I))))
                                         (Match:
                                          (Mrule:
                                           (ATPat:
                                            (PARAtPat:
                                             (ATPat:
                                              (PARAtPat:
                                               (ATPat:
                                                (PARAtPat:
                                                 (CONPat:
                                                  (LongVId: IDAtPat)
                                                  (RECORDAtPat:
                                                   (FIELDPatRow:
                                                    (Lab: |1|)
                                                    (ATPat: (IDAtPat: (LongVId: I)))
                                                    (FIELDPatRow:
                                                     (Lab: |2|)
                                                     (ATPat: (WILDCARDAtPat:))
                                                     (FIELDPatRow: (Lab: |3|) (ATPat: (WILDCARDAtPat:)))))))))))))
                                           (ATExp: (IDAtExp: (LongVId: I))))
                                          (Match:
                                           (Mrule:
                                            (ATPat:
                                             (PARAtPat:
                                              (ATPat:
                                               (PARAtPat:
                                                (ATPat:
                                                 (PARAtPat:
                                                  (CONPat:
                                                   (LongVId: RECORDAtPat)
                                                   (RECORDAtPat:
                                                    (FIELDPatRow:
                                                     (Lab: |1|)
                                                     (ATPat: (IDAtPat: (LongVId: I)))
                                                     (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:))))))))))))
                                            (ATExp: (IDAtExp: (LongVId: I))))
                                           (Match:
                                            (Mrule:
                                             (ATPat:
                                              (PARAtPat:
                                               (ATPat:
                                                (PARAtPat:
                                                 (ATPat:
                                                  (PARAtPat:
                                                   (CONPat:
                                                    (LongVId: PARAtPat)
                                                    (RECORDAtPat:
                                                     (FIELDPatRow:
                                                      (Lab: |1|)
                                                      (ATPat: (IDAtPat: (LongVId: I)))
                                                      (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:))))))))))))
                                             (ATExp: (IDAtExp: (LongVId: I))))))))))))))
                                  (SEQStrDec:
                                   (DECStrDec:
                                    (VALDec:
                                     (TyVarseq:)
                                     (RECValBind:
                                      (PLAINValBind:
                                       (ATPat: (IDAtPat: (LongVId: infoPatRow)))
                                       (FNExp:
                                        (Match:
                                         (Mrule:
                                          (ATPat:
                                           (PARAtPat:
                                            (ATPat:
                                             (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: DOTSPatRow) (PARAtPat: (ATPat: (IDAtPat: (LongVId: I)))))))))))
                                          (ATExp: (IDAtExp: (LongVId: I))))
                                         (Match:
                                          (Mrule:
                                           (ATPat:
                                            (PARAtPat:
                                             (ATPat:
                                              (PARAtPat:
                                               (ATPat:
                                                (PARAtPat:
                                                 (CONPat:
                                                  (LongVId: FIELDPatRow)
                                                  (RECORDAtPat:
                                                   (FIELDPatRow:
                                                    (Lab: |1|)
                                                    (ATPat: (IDAtPat: (LongVId: I)))
                                                    (FIELDPatRow:
                                                     (Lab: |2|)
                                                     (ATPat: (WILDCARDAtPat:))
                                                     (FIELDPatRow:
                                                      (Lab: |3|)
                                                      (ATPat: (WILDCARDAtPat:))
                                                      (FIELDPatRow: (Lab: |4|) (ATPat: (WILDCARDAtPat:))))))))))))))
                                           (ATExp: (IDAtExp: (LongVId: I)))))))))))
                                   (SEQStrDec:
                                    (DECStrDec:
                                     (VALDec:
                                      (TyVarseq:)
                                      (RECValBind:
                                       (PLAINValBind:
                                        (ATPat: (IDAtPat: (LongVId: infoPat)))
                                        (FNExp:
                                         (Match:
                                          (Mrule:
                                           (ATPat:
                                            (PARAtPat:
                                             (ATPat:
                                              (PARAtPat:
                                               (ATPat:
                                                (PARAtPat:
                                                 (CONPat:
                                                  (LongVId: ATPat)
                                                  (RECORDAtPat:
                                                   (FIELDPatRow:
                                                    (Lab: |1|)
                                                    (ATPat: (IDAtPat: (LongVId: I)))
                                                    (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:))))))))))))
                                           (ATExp: (IDAtExp: (LongVId: I))))
                                          (Match:
                                           (Mrule:
                                            (ATPat:
                                             (PARAtPat:
                                              (ATPat:
                                               (PARAtPat:
                                                (ATPat:
                                                 (PARAtPat:
                                                  (CONPat:
                                                   (LongVId: CONPat)
                                                   (RECORDAtPat:
                                                    (FIELDPatRow:
                                                     (Lab: |1|)
                                                     (ATPat: (IDAtPat: (LongVId: I)))
                                                     (FIELDPatRow:
                                                      (Lab: |2|)
                                                      (ATPat: (WILDCARDAtPat:))
                                                      (FIELDPatRow:
                                                       (Lab: |3|)
                                                       (ATPat: (WILDCARDAtPat:))
                                                       (FIELDPatRow: (Lab: |4|) (ATPat: (WILDCARDAtPat:))))))))))))))
                                            (ATExp: (IDAtExp: (LongVId: I))))
                                           (Match:
                                            (Mrule:
                                             (ATPat:
                                              (PARAtPat:
                                               (ATPat:
                                                (PARAtPat:
                                                 (ATPat:
                                                  (PARAtPat:
                                                   (CONPat:
                                                    (LongVId: COLONPat)
                                                    (RECORDAtPat:
                                                     (FIELDPatRow:
                                                      (Lab: |1|)
                                                      (ATPat: (IDAtPat: (LongVId: I)))
                                                      (FIELDPatRow:
                                                       (Lab: |2|)
                                                       (ATPat: (WILDCARDAtPat:))
                                                       (FIELDPatRow: (Lab: |3|) (ATPat: (WILDCARDAtPat:)))))))))))))
                                             (ATExp: (IDAtExp: (LongVId: I))))
                                            (Match:
                                             (Mrule:
                                              (ATPat:
                                               (PARAtPat:
                                                (ATPat:
                                                 (PARAtPat:
                                                  (ATPat:
                                                   (PARAtPat:
                                                    (CONPat:
                                                     (LongVId: ASPat)
                                                     (RECORDAtPat:
                                                      (FIELDPatRow:
                                                       (Lab: |1|)
                                                       (ATPat: (IDAtPat: (LongVId: I)))
                                                       (FIELDPatRow:
                                                        (Lab: |2|)
                                                        (ATPat: (WILDCARDAtPat:))
                                                        (FIELDPatRow:
                                                         (Lab: |3|)
                                                         (ATPat: (WILDCARDAtPat:))
                                                         (FIELDPatRow:
                                                          (Lab: |4|)
                                                          (ATPat: (WILDCARDAtPat:))
                                                          (FIELDPatRow: (Lab: |5|) (ATPat: (WILDCARDAtPat:)))))))))))))))
                                              (ATExp: (IDAtExp: (LongVId: I)))))))))))))
                                    (SEQStrDec:
                                     (DECStrDec:
                                      (VALDec:
                                       (TyVarseq:)
                                       (RECValBind:
                                        (PLAINValBind:
                                         (ATPat: (IDAtPat: (LongVId: infoTy)))
                                         (FNExp:
                                          (Match:
                                           (Mrule:
                                            (ATPat:
                                             (PARAtPat:
                                              (ATPat:
                                               (PARAtPat:
                                                (ATPat:
                                                 (PARAtPat:
                                                  (CONPat:
                                                   (LongVId: VARTy)
                                                   (RECORDAtPat:
                                                    (FIELDPatRow:
                                                     (Lab: |1|)
                                                     (ATPat: (IDAtPat: (LongVId: I)))
                                                     (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:))))))))))))
                                            (ATExp: (IDAtExp: (LongVId: I))))
                                           (Match:
                                            (Mrule:
                                             (ATPat:
                                              (PARAtPat:
                                               (ATPat:
                                                (PARAtPat:
                                                 (ATPat:
                                                  (PARAtPat:
                                                   (CONPat:
                                                    (LongVId: RECORDTy)
                                                    (RECORDAtPat:
                                                     (FIELDPatRow:
                                                      (Lab: |1|)
                                                      (ATPat: (IDAtPat: (LongVId: I)))
                                                      (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:))))))))))))
                                             (ATExp: (IDAtExp: (LongVId: I))))
                                            (Match:
                                             (Mrule:
                                              (ATPat:
                                               (PARAtPat:
                                                (ATPat:
                                                 (PARAtPat:
                                                  (ATPat:
                                                   (PARAtPat:
                                                    (CONPat:
                                                     (LongVId: CONTy)
                                                     (RECORDAtPat:
                                                      (FIELDPatRow:
                                                       (Lab: |1|)
                                                       (ATPat: (IDAtPat: (LongVId: I)))
                                                       (FIELDPatRow:
                                                        (Lab: |2|)
                                                        (ATPat: (WILDCARDAtPat:))
                                                        (FIELDPatRow: (Lab: |3|) (ATPat: (WILDCARDAtPat:)))))))))))))
                                              (ATExp: (IDAtExp: (LongVId: I))))
                                             (Match:
                                              (Mrule:
                                               (ATPat:
                                                (PARAtPat:
                                                 (ATPat:
                                                  (PARAtPat:
                                                   (ATPat:
                                                    (PARAtPat:
                                                     (CONPat:
                                                      (LongVId: ARROWTy)
                                                      (RECORDAtPat:
                                                       (FIELDPatRow:
                                                        (Lab: |1|)
                                                        (ATPat: (IDAtPat: (LongVId: I)))
                                                        (FIELDPatRow:
                                                         (Lab: |2|)
                                                         (ATPat: (WILDCARDAtPat:))
                                                         (FIELDPatRow: (Lab: |3|) (ATPat: (WILDCARDAtPat:)))))))))))))
                                               (ATExp: (IDAtExp: (LongVId: I))))
                                              (Match:
                                               (Mrule:
                                                (ATPat:
                                                 (PARAtPat:
                                                  (ATPat:
                                                   (PARAtPat:
                                                    (ATPat:
                                                     (PARAtPat:
                                                      (CONPat:
                                                       (LongVId: PARTy)
                                                       (RECORDAtPat:
                                                        (FIELDPatRow:
                                                         (Lab: |1|)
                                                         (ATPat: (IDAtPat: (LongVId: I)))
                                                         (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:))))))))))))
                                                (ATExp: (IDAtExp: (LongVId: I))))))))))))))
                                     (SEQStrDec:
                                      (DECStrDec:
                                       (VALDec:
                                        (TyVarseq:)
                                        (RECValBind:
                                         (PLAINValBind:
                                          (ATPat: (IDAtPat: (LongVId: infoTyRow)))
                                          (FNExp:
                                           (Match:
                                            (Mrule:
                                             (ATPat:
                                              (PARAtPat:
                                               (ATPat:
                                                (PARAtPat:
                                                 (ATPat:
                                                  (PARAtPat:
                                                   (CONPat:
                                                    (LongVId: TyRow)
                                                    (RECORDAtPat:
                                                     (FIELDPatRow:
                                                      (Lab: |1|)
                                                      (ATPat: (IDAtPat: (LongVId: I)))
                                                      (FIELDPatRow:
                                                       (Lab: |2|)
                                                       (ATPat: (WILDCARDAtPat:))
                                                       (FIELDPatRow:
                                                        (Lab: |3|)
                                                        (ATPat: (WILDCARDAtPat:))
                                                        (FIELDPatRow: (Lab: |4|) (ATPat: (WILDCARDAtPat:))))))))))))))
                                             (ATExp: (IDAtExp: (LongVId: I))))))))))
                                      (SEQStrDec:
                                       (DECStrDec:
                                        (VALDec:
                                         (TyVarseq:)
                                         (RECValBind:
                                          (PLAINValBind:
                                           (ATPat: (IDAtPat: (LongVId: infoTyseq)))
                                           (FNExp:
                                            (Match:
                                             (Mrule:
                                              (ATPat:
                                               (PARAtPat:
                                                (ATPat:
                                                 (PARAtPat:
                                                  (ATPat:
                                                   (PARAtPat:
                                                    (CONPat:
                                                     (LongVId: Tyseq)
                                                     (RECORDAtPat:
                                                      (FIELDPatRow:
                                                       (Lab: |1|)
                                                       (ATPat: (IDAtPat: (LongVId: I)))
                                                       (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:))))))))))))
                                              (ATExp: (IDAtExp: (LongVId: I))))))))))
                                       (DECStrDec:
                                        (VALDec:
                                         (TyVarseq:)
                                         (RECValBind:
                                          (PLAINValBind:
                                           (ATPat: (IDAtPat: (LongVId: infoTyVarseq)))
                                           (FNExp:
                                            (Match:
                                             (Mrule:
                                              (ATPat:
                                               (PARAtPat:
                                                (ATPat:
                                                 (PARAtPat:
                                                  (ATPat:
                                                   (PARAtPat:
                                                    (CONPat:
                                                     (LongVId: TyVarseq)
                                                     (RECORDAtPat:
                                                      (FIELDPatRow:
                                                       (Lab: |1|)
                                                       (ATPat: (IDAtPat: (LongVId: I)))
                                                       (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:))))))))))))
                                              (ATExp: (IDAtExp: (LongVId: I))))))))))))))))))))))))))))))))))))))))
         (IDSigExp: (SigId: GRAMMAR_CORE-sig))))))))))