hamlet/GrammarModuleFn-functor.ss
(module GrammarModuleFn-functor (planet chongkai/sml)
  (#%module-begin
   (Program:
    (FUNDECTopDec:
     (FunDec:
      (FunBind:
       (FunId: GrammarModuleFn-functor)
       (StrId: _id19-struct)
       (SIGSigExp:
        (SEQSpec:
         (TYPESpec: (TypDec: (TyVarseq:) (TyCon: Info-type)))
         (STRUCTURESpec: (StrDesc: (StrId: Core-struct) (IDSigExp: (SigId: GRAMMAR_CORE-sig))))))
       (LETStrExp:
        (DECStrDec: (OPENDec: (LongStrId: _id19-struct)))
        (COLONStrExp:
         (STRUCTStrExp:
          (SEQStrDec:
           (STRUCTUREStrDec: (StrBind: (StrId: Core-struct) (IDStrExp: (LongStrId: Core-struct))))
           (SEQStrDec:
            (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: Info-type) (CONTy: (Tyseq:) (LongTyCon: Info-type)))))
            (SEQStrDec:
             (DECStrDec: (OPENDec: (LongStrId: Core-struct)))
             (SEQStrDec:
              (DECStrDec:
               (TYPEDec:
                (TypBind:
                 (TyVarseq:)
                 (TyCon: SigId-type)
                 (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: SigId.Id-type))))))))
              (SEQStrDec:
               (DECStrDec:
                (TYPEDec:
                 (TypBind:
                  (TyVarseq:)
                  (TyCon: FunId-type)
                  (RECORDTy:
                   (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: FunId.Id-type))))))))
               (SEQStrDec:
                (DECStrDec:
                 (DATATYPEDec:
                  (DatBind:
                   (TyVarseq:)
                   (TyCon: StrExp-type)
                   (ConBind:
                    (VId: STRUCTStrExp)
                    (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: StrDec-type)))))
                    (ConBind:
                     (VId: IDStrExp)
                     (RECORDTy:
                      (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: longStrId-type)))))
                     (ConBind:
                      (VId: COLONStrExp)
                      (RECORDTy:
                       (TyRow:
                        (Lab: |1|)
                        (CONTy: (Tyseq:) (LongTyCon: Info-type))
                        (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: StrExp-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: SigExp-type))))))
                      (ConBind:
                       (VId: SEALStrExp)
                       (RECORDTy:
                        (TyRow:
                         (Lab: |1|)
                         (CONTy: (Tyseq:) (LongTyCon: Info-type))
                         (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: StrExp-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: SigExp-type))))))
                       (ConBind:
                        (VId: APPStrExp)
                        (RECORDTy:
                         (TyRow:
                          (Lab: |1|)
                          (CONTy: (Tyseq:) (LongTyCon: Info-type))
                          (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: FunId-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: StrExp-type))))))
                        (ConBind:
                         (VId: LETStrExp)
                         (RECORDTy:
                          (TyRow:
                           (Lab: |1|)
                           (CONTy: (Tyseq:) (LongTyCon: Info-type))
                           (TyRow:
                            (Lab: |2|)
                            (CONTy: (Tyseq:) (LongTyCon: StrDec-type))
                            (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: StrExp-type))))))))))))
                   (DatBind:
                    (TyVarseq:)
                    (TyCon: StrDec-type)
                    (ConBind:
                     (VId: DECStrDec)
                     (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Dec-type)))))
                     (ConBind:
                      (VId: STRUCTUREStrDec)
                      (RECORDTy:
                       (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: StrBind-type)))))
                      (ConBind:
                       (VId: LOCALStrDec)
                       (RECORDTy:
                        (TyRow:
                         (Lab: |1|)
                         (CONTy: (Tyseq:) (LongTyCon: Info-type))
                         (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: StrDec-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: StrDec-type))))))
                       (ConBind:
                        (VId: EMPTYStrDec)
                        (CONTy: (Tyseq:) (LongTyCon: Info-type))
                        (ConBind:
                         (VId: SEQStrDec)
                         (RECORDTy:
                          (TyRow:
                           (Lab: |1|)
                           (CONTy: (Tyseq:) (LongTyCon: Info-type))
                           (TyRow:
                            (Lab: |2|)
                            (CONTy: (Tyseq:) (LongTyCon: StrDec-type))
                            (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: StrDec-type)))))))))))
                    (DatBind:
                     (TyVarseq:)
                     (TyCon: StrBind-type)
                     (ConBind:
                      (VId: StrBind)
                      (RECORDTy:
                       (TyRow:
                        (Lab: |1|)
                        (CONTy: (Tyseq:) (LongTyCon: Info-type))
                        (TyRow:
                         (Lab: |2|)
                         (CONTy: (Tyseq:) (LongTyCon: StrId-type))
                         (TyRow:
                          (Lab: |3|)
                          (CONTy: (Tyseq:) (LongTyCon: StrExp-type))
                          (TyRow: (Lab: |4|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: StrBind-type))) (LongTyCon: option-type))))))))
                     (DatBind:
                      (TyVarseq:)
                      (TyCon: SigExp-type)
                      (ConBind:
                       (VId: SIGSigExp)
                       (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Spec-type)))))
                       (ConBind:
                        (VId: IDSigExp)
                        (RECORDTy:
                         (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: SigId-type)))))
                        (ConBind:
                         (VId: WHERETYPESigExp)
                         (RECORDTy:
                          (TyRow:
                           (Lab: |1|)
                           (CONTy: (Tyseq:) (LongTyCon: Info-type))
                           (TyRow:
                            (Lab: |2|)
                            (CONTy: (Tyseq:) (LongTyCon: SigExp-type))
                            (TyRow:
                             (Lab: |3|)
                             (CONTy: (Tyseq:) (LongTyCon: TyVarseq-type))
                             (TyRow:
                              (Lab: |4|)
                              (CONTy: (Tyseq:) (LongTyCon: longTyCon-type))
                              (TyRow: (Lab: |5|) (CONTy: (Tyseq:) (LongTyCon: Ty-type)))))))))))
                      (DatBind:
                       (TyVarseq:)
                       (TyCon: SigDec-type)
                       (ConBind:
                        (VId: SigDec)
                        (RECORDTy:
                         (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: SigBind-type))))))
                       (DatBind:
                        (TyVarseq:)
                        (TyCon: SigBind-type)
                        (ConBind:
                         (VId: SigBind)
                         (RECORDTy:
                          (TyRow:
                           (Lab: |1|)
                           (CONTy: (Tyseq:) (LongTyCon: Info-type))
                           (TyRow:
                            (Lab: |2|)
                            (CONTy: (Tyseq:) (LongTyCon: SigId-type))
                            (TyRow:
                             (Lab: |3|)
                             (CONTy: (Tyseq:) (LongTyCon: SigExp-type))
                             (TyRow: (Lab: |4|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: SigBind-type))) (LongTyCon: option-type))))))))
                        (DatBind:
                         (TyVarseq:)
                         (TyCon: Spec-type)
                         (ConBind:
                          (VId: VALSpec)
                          (RECORDTy:
                           (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: ValDesc-type)))))
                          (ConBind:
                           (VId: TYPESpec)
                           (RECORDTy:
                            (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: TypDesc-type)))))
                           (ConBind:
                            (VId: EQTYPESpec)
                            (RECORDTy:
                             (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: TypDesc-type)))))
                            (ConBind:
                             (VId: DATATYPESpec)
                             (RECORDTy:
                              (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: DatDesc-type)))))
                             (ConBind:
                              (VId: DATATYPE2Spec)
                              (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: EXCEPTIONSpec)
                               (RECORDTy:
                                (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: Info-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: ExDesc-type)))))
                               (ConBind:
                                (VId: STRUCTURESpec)
                                (RECORDTy:
                                 (TyRow:
                                  (Lab: |1|)
                                  (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                  (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: StrDesc-type)))))
                                (ConBind:
                                 (VId: INCLUDESpec)
                                 (RECORDTy:
                                  (TyRow:
                                   (Lab: |1|)
                                   (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                   (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: SigExp-type)))))
                                 (ConBind:
                                  (VId: EMPTYSpec)
                                  (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                  (ConBind:
                                   (VId: SEQSpec)
                                   (RECORDTy:
                                    (TyRow:
                                     (Lab: |1|)
                                     (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                     (TyRow:
                                      (Lab: |2|)
                                      (CONTy: (Tyseq:) (LongTyCon: Spec-type))
                                      (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: Spec-type))))))
                                   (ConBind:
                                    (VId: SHARINGTYPESpec)
                                    (RECORDTy:
                                     (TyRow:
                                      (Lab: |1|)
                                      (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                      (TyRow:
                                       (Lab: |2|)
                                       (CONTy: (Tyseq:) (LongTyCon: Spec-type))
                                       (TyRow: (Lab: |3|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: longTyCon-type))) (LongTyCon: list-type))))))
                                    (ConBind:
                                     (VId: SHARINGSpec)
                                     (RECORDTy:
                                      (TyRow:
                                       (Lab: |1|)
                                       (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                       (TyRow:
                                        (Lab: |2|)
                                        (CONTy: (Tyseq:) (LongTyCon: Spec-type))
                                        (TyRow:
                                         (Lab: |3|)
                                         (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: longStrId-type))) (LongTyCon: list-type))))))))))))))))))
                         (DatBind:
                          (TyVarseq:)
                          (TyCon: ValDesc-type)
                          (ConBind:
                           (VId: ValDesc)
                           (RECORDTy:
                            (TyRow:
                             (Lab: |1|)
                             (CONTy: (Tyseq:) (LongTyCon: Info-type))
                             (TyRow:
                              (Lab: |2|)
                              (CONTy: (Tyseq:) (LongTyCon: VId-type))
                              (TyRow:
                               (Lab: |3|)
                               (CONTy: (Tyseq:) (LongTyCon: Ty-type))
                               (TyRow: (Lab: |4|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: ValDesc-type))) (LongTyCon: option-type))))))))
                          (DatBind:
                           (TyVarseq:)
                           (TyCon: TypDesc-type)
                           (ConBind:
                            (VId: TypDesc)
                            (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: (CONTy: (Tyseq:) (LongTyCon: TypDesc-type))) (LongTyCon: option-type))))))))
                           (DatBind:
                            (TyVarseq:)
                            (TyCon: DatDesc-type)
                            (ConBind:
                             (VId: DatDesc)
                             (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: ConDesc-type))
                                  (TyRow: (Lab: |5|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: DatDesc-type))) (LongTyCon: option-type)))))))))
                            (DatBind:
                             (TyVarseq:)
                             (TyCon: ConDesc-type)
                             (ConBind:
                              (VId: ConDesc)
                              (RECORDTy:
                               (TyRow:
                                (Lab: |1|)
                                (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                (TyRow:
                                 (Lab: |2|)
                                 (CONTy: (Tyseq:) (LongTyCon: VId-type))
                                 (TyRow:
                                  (Lab: |3|)
                                  (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: Ty-type))) (LongTyCon: option-type))
                                  (TyRow: (Lab: |4|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: ConDesc-type))) (LongTyCon: option-type))))))))
                             (DatBind:
                              (TyVarseq:)
                              (TyCon: ExDesc-type)
                              (ConBind:
                               (VId: ExDesc)
                               (RECORDTy:
                                (TyRow:
                                 (Lab: |1|)
                                 (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                 (TyRow:
                                  (Lab: |2|)
                                  (CONTy: (Tyseq:) (LongTyCon: VId-type))
                                  (TyRow:
                                   (Lab: |3|)
                                   (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: Ty-type))) (LongTyCon: option-type))
                                   (TyRow: (Lab: |4|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: ExDesc-type))) (LongTyCon: option-type))))))))
                              (DatBind:
                               (TyVarseq:)
                               (TyCon: StrDesc-type)
                               (ConBind:
                                (VId: StrDesc)
                                (RECORDTy:
                                 (TyRow:
                                  (Lab: |1|)
                                  (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                  (TyRow:
                                   (Lab: |2|)
                                   (CONTy: (Tyseq:) (LongTyCon: StrId-type))
                                   (TyRow:
                                    (Lab: |3|)
                                    (CONTy: (Tyseq:) (LongTyCon: SigExp-type))
                                    (TyRow: (Lab: |4|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: StrDesc-type))) (LongTyCon: option-type))))))))
                               (DatBind:
                                (TyVarseq:)
                                (TyCon: FunDec-type)
                                (ConBind:
                                 (VId: FunDec)
                                 (RECORDTy:
                                  (TyRow:
                                   (Lab: |1|)
                                   (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                   (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: FunBind-type))))))
                                (DatBind:
                                 (TyVarseq:)
                                 (TyCon: FunBind-type)
                                 (ConBind:
                                  (VId: FunBind)
                                  (RECORDTy:
                                   (TyRow:
                                    (Lab: |1|)
                                    (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                    (TyRow:
                                     (Lab: |2|)
                                     (CONTy: (Tyseq:) (LongTyCon: FunId-type))
                                     (TyRow:
                                      (Lab: |3|)
                                      (CONTy: (Tyseq:) (LongTyCon: StrId-type))
                                      (TyRow:
                                       (Lab: |4|)
                                       (CONTy: (Tyseq:) (LongTyCon: SigExp-type))
                                       (TyRow:
                                        (Lab: |5|)
                                        (CONTy: (Tyseq:) (LongTyCon: StrExp-type))
                                        (TyRow: (Lab: |6|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: FunBind-type))) (LongTyCon: option-type))))))))))
                                 (DatBind:
                                  (TyVarseq:)
                                  (TyCon: TopDec-type)
                                  (ConBind:
                                   (VId: STRDECTopDec)
                                   (RECORDTy:
                                    (TyRow:
                                     (Lab: |1|)
                                     (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                     (TyRow:
                                      (Lab: |2|)
                                      (CONTy: (Tyseq:) (LongTyCon: StrDec-type))
                                      (TyRow: (Lab: |3|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: TopDec-type))) (LongTyCon: option-type))))))
                                   (ConBind:
                                    (VId: SIGDECTopDec)
                                    (RECORDTy:
                                     (TyRow:
                                      (Lab: |1|)
                                      (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                      (TyRow:
                                       (Lab: |2|)
                                       (CONTy: (Tyseq:) (LongTyCon: SigDec-type))
                                       (TyRow: (Lab: |3|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: TopDec-type))) (LongTyCon: option-type))))))
                                    (ConBind:
                                     (VId: FUNDECTopDec)
                                     (RECORDTy:
                                      (TyRow:
                                       (Lab: |1|)
                                       (CONTy: (Tyseq:) (LongTyCon: Info-type))
                                       (TyRow:
                                        (Lab: |2|)
                                        (CONTy: (Tyseq:) (LongTyCon: FunDec-type))
                                        (TyRow:
                                         (Lab: |3|)
                                         (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: TopDec-type))) (LongTyCon: option-type)))))))))))))))))))))))))))
                (SEQStrDec:
                 (DECStrDec:
                  (VALDec:
                   (TyVarseq:)
                   (RECValBind:
                    (PLAINValBind:
                     (ATPat: (IDAtPat: (LongVId: infoStrExp)))
                     (FNExp:
                      (Match:
                       (Mrule:
                        (ATPat:
                         (PARAtPat:
                          (ATPat:
                           (PARAtPat:
                            (ATPat:
                             (PARAtPat:
                              (CONPat:
                               (LongVId: STRUCTStrExp)
                               (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: IDStrExp)
                                (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: COLONStrExp)
                                 (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: SEALStrExp)
                                  (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: APPStrExp)
                                   (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: LETStrExp)
                                    (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: infoStrDec)))
                      (FNExp:
                       (Match:
                        (Mrule:
                         (ATPat:
                          (PARAtPat:
                           (ATPat:
                            (PARAtPat:
                             (ATPat:
                              (PARAtPat:
                               (CONPat:
                                (LongVId: DECStrDec)
                                (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: STRUCTUREStrDec)
                                 (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: LOCALStrDec)
                                  (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: EMPTYStrDec) (PARAtPat: (ATPat: (IDAtPat: (LongVId: I)))))))))))
                            (ATExp: (IDAtExp: (LongVId: I))))
                           (Match:
                            (Mrule:
                             (ATPat:
                              (PARAtPat:
                               (ATPat:
                                (PARAtPat:
                                 (ATPat:
                                  (PARAtPat:
                                   (CONPat:
                                    (LongVId: SEQStrDec)
                                    (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: infoStrBind)))
                       (FNExp:
                        (Match:
                         (Mrule:
                          (ATPat:
                           (PARAtPat:
                            (ATPat:
                             (PARAtPat:
                              (ATPat:
                               (PARAtPat:
                                (CONPat:
                                 (LongVId: StrBind)
                                 (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: infoSigExp)))
                        (FNExp:
                         (Match:
                          (Mrule:
                           (ATPat:
                            (PARAtPat:
                             (ATPat:
                              (PARAtPat:
                               (ATPat:
                                (PARAtPat:
                                 (CONPat:
                                  (LongVId: SIGSigExp)
                                  (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: IDSigExp)
                                   (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: WHERETYPESigExp)
                                    (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: infoSigDec)))
                         (FNExp:
                          (Match:
                           (Mrule:
                            (ATPat:
                             (PARAtPat:
                              (ATPat:
                               (PARAtPat:
                                (ATPat:
                                 (PARAtPat:
                                  (CONPat:
                                   (LongVId: SigDec)
                                   (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: infoSigBind)))
                          (FNExp:
                           (Match:
                            (Mrule:
                             (ATPat:
                              (PARAtPat:
                               (ATPat:
                                (PARAtPat:
                                 (ATPat:
                                  (PARAtPat:
                                   (CONPat:
                                    (LongVId: SigBind)
                                    (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: infoSpec)))
                           (FNExp:
                            (Match:
                             (Mrule:
                              (ATPat:
                               (PARAtPat:
                                (ATPat:
                                 (PARAtPat:
                                  (ATPat:
                                   (PARAtPat:
                                    (CONPat:
                                     (LongVId: VALSpec)
                                     (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: TYPESpec)
                                      (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: EQTYPESpec)
                                       (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: DATATYPESpec)
                                        (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: DATATYPE2Spec)
                                         (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: EXCEPTIONSpec)
                                          (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: STRUCTURESpec)
                                           (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: INCLUDESpec)
                                            (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: EMPTYSpec) (PARAtPat: (ATPat: (IDAtPat: (LongVId: I)))))))))))
                                      (ATExp: (IDAtExp: (LongVId: I))))
                                     (Match:
                                      (Mrule:
                                       (ATPat:
                                        (PARAtPat:
                                         (ATPat:
                                          (PARAtPat:
                                           (ATPat:
                                            (PARAtPat:
                                             (CONPat:
                                              (LongVId: SEQSpec)
                                              (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: SHARINGTYPESpec)
                                               (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: SHARINGSpec)
                                                (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: infoValDesc)))
                            (FNExp:
                             (Match:
                              (Mrule:
                               (ATPat:
                                (PARAtPat:
                                 (ATPat:
                                  (PARAtPat:
                                   (ATPat:
                                    (PARAtPat:
                                     (CONPat:
                                      (LongVId: ValDesc)
                                      (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: infoTypDesc)))
                             (FNExp:
                              (Match:
                               (Mrule:
                                (ATPat:
                                 (PARAtPat:
                                  (ATPat:
                                   (PARAtPat:
                                    (ATPat:
                                     (PARAtPat:
                                      (CONPat:
                                       (LongVId: TypDesc)
                                       (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: infoDatDesc)))
                              (FNExp:
                               (Match:
                                (Mrule:
                                 (ATPat:
                                  (PARAtPat:
                                   (ATPat:
                                    (PARAtPat:
                                     (ATPat:
                                      (PARAtPat:
                                       (CONPat:
                                        (LongVId: DatDesc)
                                        (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: infoConDesc)))
                               (FNExp:
                                (Match:
                                 (Mrule:
                                  (ATPat:
                                   (PARAtPat:
                                    (ATPat:
                                     (PARAtPat:
                                      (ATPat:
                                       (PARAtPat:
                                        (CONPat:
                                         (LongVId: ConDesc)
                                         (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: infoExDesc)))
                                (FNExp:
                                 (Match:
                                  (Mrule:
                                   (ATPat:
                                    (PARAtPat:
                                     (ATPat:
                                      (PARAtPat:
                                       (ATPat:
                                        (PARAtPat:
                                         (CONPat:
                                          (LongVId: ExDesc)
                                          (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: infoStrDesc)))
                                 (FNExp:
                                  (Match:
                                   (Mrule:
                                    (ATPat:
                                     (PARAtPat:
                                      (ATPat:
                                       (PARAtPat:
                                        (ATPat:
                                         (PARAtPat:
                                          (CONPat:
                                           (LongVId: StrDesc)
                                           (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: infoFunDec)))
                                  (FNExp:
                                   (Match:
                                    (Mrule:
                                     (ATPat:
                                      (PARAtPat:
                                       (ATPat:
                                        (PARAtPat:
                                         (ATPat:
                                          (PARAtPat:
                                           (CONPat:
                                            (LongVId: FunDec)
                                            (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: infoFunBind)))
                                   (FNExp:
                                    (Match:
                                     (Mrule:
                                      (ATPat:
                                       (PARAtPat:
                                        (ATPat:
                                         (PARAtPat:
                                          (ATPat:
                                           (PARAtPat:
                                            (CONPat:
                                             (LongVId: FunBind)
                                             (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))))))))))
                               (DECStrDec:
                                (VALDec:
                                 (TyVarseq:)
                                 (RECValBind:
                                  (PLAINValBind:
                                   (ATPat: (IDAtPat: (LongVId: infoTopDec)))
                                   (FNExp:
                                    (Match:
                                     (Mrule:
                                      (ATPat:
                                       (PARAtPat:
                                        (ATPat:
                                         (PARAtPat:
                                          (ATPat:
                                           (PARAtPat:
                                            (CONPat:
                                             (LongVId: STRDECTopDec)
                                             (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: SIGDECTopDec)
                                              (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: FUNDECTopDec)
                                               (RECORDAtPat:
                                                (FIELDPatRow:
                                                 (Lab: |1|)
                                                 (ATPat: (IDAtPat: (LongVId: I)))
                                                 (FIELDPatRow:
                                                  (Lab: |2|)
                                                  (ATPat: (WILDCARDAtPat:))
                                                  (FIELDPatRow: (Lab: |3|) (ATPat: (WILDCARDAtPat:)))))))))))))
                                        (ATExp: (IDAtExp: (LongVId: I))))))))))))))))))))))))))))))))))
         (IDSigExp: (SigId: GRAMMAR_MODULE-sig))))))))))