Function(
 Function {
  head: Destructured(
   FunctionHeadDestructured {
    ellipsis: false,
    identifier: None,
    arguments: [
     FunctionHeadDestructuredArgument {
      identifier: "lib",
      default: None,
     },
    ],
   },
  ),
  body: LetIn(
   LetIn {
    bindings: [
     Inherit(
      BindingInherit {
       from: Some(
        Identifier(
         Identifier {
          id: "lib",
          span: Span {
           start: Position {
            line: 6,
            column: 12,
           },
           end: Position {
            line: 6,
            column: 15,
           },
          },
         },
        ),
       ),
       attributes: [
        Raw(
         PartRaw {
          content: "elem",
          span: Span {
           start: Position {
            line: 7,
            column: 5,
           },
           end: Position {
            line: 7,
            column: 9,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "flip",
          span: Span {
           start: Position {
            line: 8,
            column: 5,
           },
           end: Position {
            line: 8,
            column: 9,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "isAttrs",
          span: Span {
           start: Position {
            line: 9,
            column: 5,
           },
           end: Position {
            line: 9,
            column: 12,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "isBool",
          span: Span {
           start: Position {
            line: 10,
            column: 5,
           },
           end: Position {
            line: 10,
            column: 11,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "isDerivation",
          span: Span {
           start: Position {
            line: 11,
            column: 5,
           },
           end: Position {
            line: 11,
            column: 17,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "isFloat",
          span: Span {
           start: Position {
            line: 12,
            column: 5,
           },
           end: Position {
            line: 12,
            column: 12,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "isFunction",
          span: Span {
           start: Position {
            line: 13,
            column: 5,
           },
           end: Position {
            line: 13,
            column: 15,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "isInt",
          span: Span {
           start: Position {
            line: 14,
            column: 5,
           },
           end: Position {
            line: 14,
            column: 10,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "isList",
          span: Span {
           start: Position {
            line: 15,
            column: 5,
           },
           end: Position {
            line: 15,
            column: 11,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "isString",
          span: Span {
           start: Position {
            line: 16,
            column: 5,
           },
           end: Position {
            line: 16,
            column: 13,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "isStorePath",
          span: Span {
           start: Position {
            line: 17,
            column: 5,
           },
           end: Position {
            line: 17,
            column: 16,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "toDerivation",
          span: Span {
           start: Position {
            line: 18,
            column: 5,
           },
           end: Position {
            line: 18,
            column: 17,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "toList",
          span: Span {
           start: Position {
            line: 19,
            column: 5,
           },
           end: Position {
            line: 19,
            column: 11,
           },
          },
         },
        ),
       ],
       span: Span {
        start: Position {
         line: 5,
         column: 4,
        },
        end: Position {
         line: 20,
         column: 6,
        },
       },
      },
     ),
     Inherit(
      BindingInherit {
       from: Some(
        PropertyAccess(
         PropertyAccess {
          expression: Identifier(
           Identifier {
            id: "lib",
            span: Span {
             start: Position {
              line: 21,
              column: 12,
             },
             end: Position {
              line: 21,
              column: 15,
             },
            },
           },
          ),
          attribute_path: [
           Raw(
            PartRaw {
             content: "lists",
             span: Span {
              start: Position {
               line: 21,
               column: 16,
              },
              end: Position {
               line: 21,
               column: 21,
              },
             },
            },
           ),
          ],
          default: None,
         },
        ),
       ),
       attributes: [
        Raw(
         PartRaw {
          content: "all",
          span: Span {
           start: Position {
            line: 22,
            column: 5,
           },
           end: Position {
            line: 22,
            column: 8,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "concatLists",
          span: Span {
           start: Position {
            line: 23,
            column: 5,
           },
           end: Position {
            line: 23,
            column: 16,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "count",
          span: Span {
           start: Position {
            line: 24,
            column: 5,
           },
           end: Position {
            line: 24,
            column: 10,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "elemAt",
          span: Span {
           start: Position {
            line: 25,
            column: 5,
           },
           end: Position {
            line: 25,
            column: 11,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "filter",
          span: Span {
           start: Position {
            line: 26,
            column: 5,
           },
           end: Position {
            line: 26,
            column: 11,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "foldl'",
          span: Span {
           start: Position {
            line: 27,
            column: 5,
           },
           end: Position {
            line: 27,
            column: 11,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "head",
          span: Span {
           start: Position {
            line: 28,
            column: 5,
           },
           end: Position {
            line: 28,
            column: 9,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "imap1",
          span: Span {
           start: Position {
            line: 29,
            column: 5,
           },
           end: Position {
            line: 29,
            column: 10,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "last",
          span: Span {
           start: Position {
            line: 30,
            column: 5,
           },
           end: Position {
            line: 30,
            column: 9,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "length",
          span: Span {
           start: Position {
            line: 31,
            column: 5,
           },
           end: Position {
            line: 31,
            column: 11,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "tail",
          span: Span {
           start: Position {
            line: 32,
            column: 5,
           },
           end: Position {
            line: 32,
            column: 9,
           },
          },
         },
        ),
       ],
       span: Span {
        start: Position {
         line: 5,
         column: 4,
        },
        end: Position {
         line: 33,
         column: 6,
        },
       },
      },
     ),
     Inherit(
      BindingInherit {
       from: Some(
        PropertyAccess(
         PropertyAccess {
          expression: Identifier(
           Identifier {
            id: "lib",
            span: Span {
             start: Position {
              line: 34,
              column: 12,
             },
             end: Position {
              line: 34,
              column: 15,
             },
            },
           },
          ),
          attribute_path: [
           Raw(
            PartRaw {
             content: "attrsets",
             span: Span {
              start: Position {
               line: 34,
               column: 16,
              },
              end: Position {
               line: 34,
               column: 24,
              },
             },
            },
           ),
          ],
          default: None,
         },
        ),
       ),
       attributes: [
        Raw(
         PartRaw {
          content: "attrNames",
          span: Span {
           start: Position {
            line: 35,
            column: 5,
           },
           end: Position {
            line: 35,
            column: 14,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "filterAttrs",
          span: Span {
           start: Position {
            line: 36,
            column: 5,
           },
           end: Position {
            line: 36,
            column: 16,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "hasAttr",
          span: Span {
           start: Position {
            line: 37,
            column: 5,
           },
           end: Position {
            line: 37,
            column: 12,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "mapAttrs",
          span: Span {
           start: Position {
            line: 38,
            column: 5,
           },
           end: Position {
            line: 38,
            column: 13,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "optionalAttrs",
          span: Span {
           start: Position {
            line: 39,
            column: 5,
           },
           end: Position {
            line: 39,
            column: 18,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "zipAttrsWith",
          span: Span {
           start: Position {
            line: 40,
            column: 5,
           },
           end: Position {
            line: 40,
            column: 17,
           },
          },
         },
        ),
       ],
       span: Span {
        start: Position {
         line: 5,
         column: 4,
        },
        end: Position {
         line: 41,
         column: 6,
        },
       },
      },
     ),
     Inherit(
      BindingInherit {
       from: Some(
        PropertyAccess(
         PropertyAccess {
          expression: Identifier(
           Identifier {
            id: "lib",
            span: Span {
             start: Position {
              line: 42,
              column: 12,
             },
             end: Position {
              line: 42,
              column: 15,
             },
            },
           },
          ),
          attribute_path: [
           Raw(
            PartRaw {
             content: "options",
             span: Span {
              start: Position {
               line: 42,
               column: 16,
              },
              end: Position {
               line: 42,
               column: 23,
              },
             },
            },
           ),
          ],
          default: None,
         },
        ),
       ),
       attributes: [
        Raw(
         PartRaw {
          content: "getFiles",
          span: Span {
           start: Position {
            line: 43,
            column: 5,
           },
           end: Position {
            line: 43,
            column: 13,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "getValues",
          span: Span {
           start: Position {
            line: 44,
            column: 5,
           },
           end: Position {
            line: 44,
            column: 14,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "mergeDefaultOption",
          span: Span {
           start: Position {
            line: 45,
            column: 5,
           },
           end: Position {
            line: 45,
            column: 23,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "mergeEqualOption",
          span: Span {
           start: Position {
            line: 46,
            column: 5,
           },
           end: Position {
            line: 46,
            column: 21,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "mergeOneOption",
          span: Span {
           start: Position {
            line: 47,
            column: 5,
           },
           end: Position {
            line: 47,
            column: 19,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "mergeUniqueOption",
          span: Span {
           start: Position {
            line: 48,
            column: 5,
           },
           end: Position {
            line: 48,
            column: 22,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "showFiles",
          span: Span {
           start: Position {
            line: 49,
            column: 5,
           },
           end: Position {
            line: 49,
            column: 14,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "showOption",
          span: Span {
           start: Position {
            line: 50,
            column: 5,
           },
           end: Position {
            line: 50,
            column: 15,
           },
          },
         },
        ),
       ],
       span: Span {
        start: Position {
         line: 5,
         column: 4,
        },
        end: Position {
         line: 51,
         column: 6,
        },
       },
      },
     ),
     Inherit(
      BindingInherit {
       from: Some(
        PropertyAccess(
         PropertyAccess {
          expression: Identifier(
           Identifier {
            id: "lib",
            span: Span {
             start: Position {
              line: 52,
              column: 12,
             },
             end: Position {
              line: 52,
              column: 15,
             },
            },
           },
          ),
          attribute_path: [
           Raw(
            PartRaw {
             content: "strings",
             span: Span {
              start: Position {
               line: 52,
               column: 16,
              },
              end: Position {
               line: 52,
               column: 23,
              },
             },
            },
           ),
          ],
          default: None,
         },
        ),
       ),
       attributes: [
        Raw(
         PartRaw {
          content: "concatMapStringsSep",
          span: Span {
           start: Position {
            line: 53,
            column: 5,
           },
           end: Position {
            line: 53,
            column: 24,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "concatStringsSep",
          span: Span {
           start: Position {
            line: 54,
            column: 5,
           },
           end: Position {
            line: 54,
            column: 21,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "escapeNixString",
          span: Span {
           start: Position {
            line: 55,
            column: 5,
           },
           end: Position {
            line: 55,
            column: 20,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "hasInfix",
          span: Span {
           start: Position {
            line: 56,
            column: 5,
           },
           end: Position {
            line: 56,
            column: 13,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "isCoercibleToString",
          span: Span {
           start: Position {
            line: 57,
            column: 5,
           },
           end: Position {
            line: 57,
            column: 24,
           },
          },
         },
        ),
       ],
       span: Span {
        start: Position {
         line: 5,
         column: 4,
        },
        end: Position {
         line: 58,
         column: 6,
        },
       },
      },
     ),
     Inherit(
      BindingInherit {
       from: Some(
        PropertyAccess(
         PropertyAccess {
          expression: Identifier(
           Identifier {
            id: "lib",
            span: Span {
             start: Position {
              line: 59,
              column: 12,
             },
             end: Position {
              line: 59,
              column: 15,
             },
            },
           },
          ),
          attribute_path: [
           Raw(
            PartRaw {
             content: "trivial",
             span: Span {
              start: Position {
               line: 59,
               column: 16,
              },
              end: Position {
               line: 59,
               column: 23,
              },
             },
            },
           ),
          ],
          default: None,
         },
        ),
       ),
       attributes: [
        Raw(
         PartRaw {
          content: "boolToString",
          span: Span {
           start: Position {
            line: 60,
            column: 5,
           },
           end: Position {
            line: 60,
            column: 17,
           },
          },
         },
        ),
       ],
       span: Span {
        start: Position {
         line: 5,
         column: 4,
        },
        end: Position {
         line: 61,
         column: 6,
        },
       },
      },
     ),
     Inherit(
      BindingInherit {
       from: Some(
        PropertyAccess(
         PropertyAccess {
          expression: Identifier(
           Identifier {
            id: "lib",
            span: Span {
             start: Position {
              line: 63,
              column: 12,
             },
             end: Position {
              line: 63,
              column: 15,
             },
            },
           },
          ),
          attribute_path: [
           Raw(
            PartRaw {
             content: "modules",
             span: Span {
              start: Position {
               line: 63,
               column: 16,
              },
              end: Position {
               line: 63,
               column: 23,
              },
             },
            },
           ),
          ],
          default: None,
         },
        ),
       ),
       attributes: [
        Raw(
         PartRaw {
          content: "mergeDefinitions",
          span: Span {
           start: Position {
            line: 64,
            column: 5,
           },
           end: Position {
            line: 64,
            column: 21,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "fixupOptionType",
          span: Span {
           start: Position {
            line: 65,
            column: 5,
           },
           end: Position {
            line: 65,
            column: 20,
           },
          },
         },
        ),
        Raw(
         PartRaw {
          content: "mergeOptionDecls",
          span: Span {
           start: Position {
            line: 66,
            column: 5,
           },
           end: Position {
            line: 66,
            column: 21,
           },
          },
         },
        ),
       ],
       span: Span {
        start: Position {
         line: 5,
         column: 4,
        },
        end: Position {
         line: 67,
         column: 6,
        },
       },
      },
     ),
     KeyValue(
      BindingKeyValue {
       from: [
        Raw(
         PartRaw {
          content: "outer_types",
          span: Span {
           start: Position {
            line: 68,
            column: 3,
           },
           end: Position {
            line: 68,
            column: 14,
           },
          },
         },
        ),
       ],
       to: Map(
        Map {
         recursive: true,
         bindings: [
          KeyValue(
           BindingKeyValue {
            from: [
             Raw(
              PartRaw {
               content: "isType",
               span: Span {
                start: Position {
                 line: 70,
                 column: 3,
                },
                end: Position {
                 line: 70,
                 column: 9,
                },
               },
              },
             ),
            ],
            to: Function(
             Function {
              head: Simple(
               FunctionHeadSimple {
                identifier: "type",
               },
              ),
              body: Function(
               Function {
                head: Simple(
                 FunctionHeadSimple {
                  identifier: "x",
                 },
                ),
                body: BinaryOperation(
                 BinaryOperation {
                  left: PropertyAccess(
                   PropertyAccess {
                    expression: Identifier(
                     Identifier {
                      id: "x",
                      span: Span {
                       start: Position {
                        line: 70,
                        column: 22,
                       },
                       end: Position {
                        line: 70,
                        column: 23,
                       },
                      },
                     },
                    ),
                    attribute_path: [
                     Raw(
                      PartRaw {
                       content: "_type",
                       span: Span {
                        start: Position {
                         line: 70,
                         column: 24,
                        },
                        end: Position {
                         line: 70,
                         column: 29,
                        },
                       },
                      },
                     ),
                    ],
                    default: Some(
                     String(
                      String_ {
                       parts: [],
                       span: Span {
                        start: Position {
                         line: 70,
                         column: 33,
                        },
                        end: Position {
                         line: 70,
                         column: 35,
                        },
                       },
                      },
                     ),
                    ),
                   },
                  ),
                  operator: EqualTo,
                  right: Identifier(
                   Identifier {
                    id: "type",
                    span: Span {
                     start: Position {
                      line: 70,
                      column: 40,
                     },
                     end: Position {
                      line: 70,
                      column: 44,
                     },
                    },
                   },
                  ),
                 },
                ),
                span: Span {
                 start: Position {
                  line: 70,
                  column: 18,
                 },
                 end: Position {
                  line: 70,
                  column: 44,
                 },
                },
               },
              ),
              span: Span {
               start: Position {
                line: 70,
                column: 12,
               },
               end: Position {
                line: 70,
                column: 44,
               },
              },
             },
            ),
           },
          ),
          KeyValue(
           BindingKeyValue {
            from: [
             Raw(
              PartRaw {
               content: "setType",
               span: Span {
                start: Position {
                 line: 72,
                 column: 3,
                },
                end: Position {
                 line: 72,
                 column: 10,
                },
               },
              },
             ),
            ],
            to: Function(
             Function {
              head: Simple(
               FunctionHeadSimple {
                identifier: "typeName",
               },
              ),
              body: Function(
               Function {
                head: Simple(
                 FunctionHeadSimple {
                  identifier: "value",
                 },
                ),
                body: BinaryOperation(
                 BinaryOperation {
                  left: Identifier(
                   Identifier {
                    id: "value",
                    span: Span {
                     start: Position {
                      line: 72,
                      column: 30,
                     },
                     end: Position {
                      line: 72,
                      column: 35,
                     },
                    },
                   },
                  ),
                  operator: Update,
                  right: Map(
                   Map {
                    recursive: false,
                    bindings: [
                     KeyValue(
                      BindingKeyValue {
                       from: [
                        Raw(
                         PartRaw {
                          content: "_type",
                          span: Span {
                           start: Position {
                            line: 73,
                            column: 5,
                           },
                           end: Position {
                            line: 73,
                            column: 10,
                           },
                          },
                         },
                        ),
                       ],
                       to: Identifier(
                        Identifier {
                         id: "typeName",
                         span: Span {
                          start: Position {
                           line: 73,
                           column: 13,
                          },
                          end: Position {
                           line: 73,
                           column: 21,
                          },
                         },
                        },
                       ),
                      },
                     ),
                    ],
                    span: Span {
                     start: Position {
                      line: 72,
                      column: 39,
                     },
                     end: Position {
                      line: 74,
                      column: 4,
                     },
                    },
                   },
                  ),
                 },
                ),
                span: Span {
                 start: Position {
                  line: 72,
                  column: 23,
                 },
                 end: Position {
                  line: 74,
                  column: 4,
                 },
                },
               },
              ),
              span: Span {
               start: Position {
                line: 72,
                column: 13,
               },
               end: Position {
                line: 74,
                column: 4,
               },
              },
             },
            ),
           },
          ),
          KeyValue(
           BindingKeyValue {
            from: [
             Raw(
              PartRaw {
               content: "defaultTypeMerge",
               span: Span {
                start: Position {
                 line: 79,
                 column: 3,
                },
                end: Position {
                 line: 79,
                 column: 19,
                },
               },
              },
             ),
            ],
            to: Function(
             Function {
              head: Simple(
               FunctionHeadSimple {
                identifier: "f",
               },
              ),
              body: Function(
               Function {
                head: Simple(
                 FunctionHeadSimple {
                  identifier: "f'",
                 },
                ),
                body: LetIn(
                 LetIn {
                  bindings: [
                   KeyValue(
                    BindingKeyValue {
                     from: [
                      Raw(
                       PartRaw {
                        content: "wrapped",
                        span: Span {
                         start: Position {
                          line: 80,
                          column: 9,
                         },
                         end: Position {
                          line: 80,
                          column: 16,
                         },
                        },
                       },
                      ),
                     ],
                     to: FunctionApplication(
                      FunctionApplication {
                       function: PropertyAccess(
                        PropertyAccess {
                         expression: Identifier(
                          Identifier {
                           id: "f",
                           span: Span {
                            start: Position {
                             line: 80,
                             column: 19,
                            },
                            end: Position {
                             line: 80,
                             column: 20,
                            },
                           },
                          },
                         ),
                         attribute_path: [
                          Raw(
                           PartRaw {
                            content: "wrapped",
                            span: Span {
                             start: Position {
                              line: 80,
                              column: 21,
                             },
                             end: Position {
                              line: 80,
                              column: 28,
                             },
                            },
                           },
                          ),
                          Raw(
                           PartRaw {
                            content: "typeMerge",
                            span: Span {
                             start: Position {
                              line: 80,
                              column: 29,
                             },
                             end: Position {
                              line: 80,
                              column: 38,
                             },
                            },
                           },
                          ),
                         ],
                         default: None,
                        },
                       ),
                       arguments: [
                        PropertyAccess(
                         PropertyAccess {
                          expression: Identifier(
                           Identifier {
                            id: "f'",
                            span: Span {
                             start: Position {
                              line: 80,
                              column: 39,
                             },
                             end: Position {
                              line: 80,
                              column: 41,
                             },
                            },
                           },
                          ),
                          attribute_path: [
                           Raw(
                            PartRaw {
                             content: "wrapped",
                             span: Span {
                              start: Position {
                               line: 80,
                               column: 42,
                              },
                              end: Position {
                               line: 80,
                               column: 49,
                              },
                             },
                            },
                           ),
                           Raw(
                            PartRaw {
                             content: "functor",
                             span: Span {
                              start: Position {
                               line: 80,
                               column: 50,
                              },
                              end: Position {
                               line: 80,
                               column: 57,
                              },
                             },
                            },
                           ),
                          ],
                          default: None,
                         },
                        ),
                       ],
                      },
                     ),
                    },
                   ),
                   KeyValue(
                    BindingKeyValue {
                     from: [
                      Raw(
                       PartRaw {
                        content: "payload",
                        span: Span {
                         start: Position {
                          line: 81,
                          column: 9,
                         },
                         end: Position {
                          line: 81,
                          column: 16,
                         },
                        },
                       },
                      ),
                     ],
                     to: FunctionApplication(
                      FunctionApplication {
                       function: PropertyAccess(
                        PropertyAccess {
                         expression: Identifier(
                          Identifier {
                           id: "f",
                           span: Span {
                            start: Position {
                             line: 81,
                             column: 19,
                            },
                            end: Position {
                             line: 81,
                             column: 20,
                            },
                           },
                          },
                         ),
                         attribute_path: [
                          Raw(
                           PartRaw {
                            content: "binOp",
                            span: Span {
                             start: Position {
                              line: 81,
                              column: 21,
                             },
                             end: Position {
                              line: 81,
                              column: 26,
                             },
                            },
                           },
                          ),
                         ],
                         default: None,
                        },
                       ),
                       arguments: [
                        PropertyAccess(
                         PropertyAccess {
                          expression: Identifier(
                           Identifier {
                            id: "f",
                            span: Span {
                             start: Position {
                              line: 81,
                              column: 27,
                             },
                             end: Position {
                              line: 81,
                              column: 28,
                             },
                            },
                           },
                          ),
                          attribute_path: [
                           Raw(
                            PartRaw {
                             content: "payload",
                             span: Span {
                              start: Position {
                               line: 81,
                               column: 29,
                              },
                              end: Position {
                               line: 81,
                               column: 36,
                              },
                             },
                            },
                           ),
                          ],
                          default: None,
                         },
                        ),
                        PropertyAccess(
                         PropertyAccess {
                          expression: Identifier(
                           Identifier {
                            id: "f'",
                            span: Span {
                             start: Position {
                              line: 81,
                              column: 37,
                             },
                             end: Position {
                              line: 81,
                              column: 39,
                             },
                            },
                           },
                          ),
                          attribute_path: [
                           Raw(
                            PartRaw {
                             content: "payload",
                             span: Span {
                              start: Position {
                               line: 81,
                               column: 40,
                              },
                              end: Position {
                               line: 81,
                               column: 47,
                              },
                             },
                            },
                           ),
                          ],
                          default: None,
                         },
                        ),
                       ],
                      },
                     ),
                    },
                   ),
                  ],
                  target: IfThenElse(
                   IfThenElse {
                    predicate: BinaryOperation(
                     BinaryOperation {
                      left: PropertyAccess(
                       PropertyAccess {
                        expression: Identifier(
                         Identifier {
                          id: "f",
                          span: Span {
                           start: Position {
                            line: 84,
                            column: 8,
                           },
                           end: Position {
                            line: 84,
                            column: 9,
                           },
                          },
                         },
                        ),
                        attribute_path: [
                         Raw(
                          PartRaw {
                           content: "name",
                           span: Span {
                            start: Position {
                             line: 84,
                             column: 10,
                            },
                            end: Position {
                             line: 84,
                             column: 14,
                            },
                           },
                          },
                         ),
                        ],
                        default: None,
                       },
                      ),
                      operator: NotEqualTo,
                      right: PropertyAccess(
                       PropertyAccess {
                        expression: Identifier(
                         Identifier {
                          id: "f'",
                          span: Span {
                           start: Position {
                            line: 84,
                            column: 18,
                           },
                           end: Position {
                            line: 84,
                            column: 20,
                           },
                          },
                         },
                        ),
                        attribute_path: [
                         Raw(
                          PartRaw {
                           content: "name",
                           span: Span {
                            start: Position {
                             line: 84,
                             column: 21,
                            },
                            end: Position {
                             line: 84,
                             column: 25,
                            },
                           },
                          },
                         ),
                        ],
                        default: None,
                       },
                      ),
                     },
                    ),
                    then: Identifier(
                     Identifier {
                      id: "null",
                      span: Span {
                       start: Position {
                        line: 85,
                        column: 13,
                       },
                       end: Position {
                        line: 85,
                        column: 17,
                       },
                      },
                     },
                    ),
                    else_: IfThenElse(
                     IfThenElse {
                      predicate: BinaryOperation(
                       BinaryOperation {
                        left: BinaryOperation(
                         BinaryOperation {
                          left: BinaryOperation(
                           BinaryOperation {
                            left: PropertyAccess(
                             PropertyAccess {
                              expression: Identifier(
                               Identifier {
                                id: "f",
                                span: Span {
                                 start: Position {
                                  line: 87,
                                  column: 17,
                                 },
                                 end: Position {
                                  line: 87,
                                  column: 18,
                                 },
                                },
                               },
                              ),
                              attribute_path: [
                               Raw(
                                PartRaw {
                                 content: "wrapped",
                                 span: Span {
                                  start: Position {
                                   line: 87,
                                   column: 19,
                                  },
                                  end: Position {
                                   line: 87,
                                   column: 26,
                                  },
                                 },
                                },
                               ),
                              ],
                              default: None,
                             },
                            ),
                            operator: EqualTo,
                            right: Identifier(
                             Identifier {
                              id: "null",
                              span: Span {
                               start: Position {
                                line: 87,
                                column: 30,
                               },
                               end: Position {
                                line: 87,
                                column: 34,
                               },
                              },
                             },
                            ),
                           },
                          ),
                          operator: LogicalAnd,
                          right: BinaryOperation(
                           BinaryOperation {
                            left: PropertyAccess(
                             PropertyAccess {
                              expression: Identifier(
                               Identifier {
                                id: "f'",
                                span: Span {
                                 start: Position {
                                  line: 87,
                                  column: 38,
                                 },
                                 end: Position {
                                  line: 87,
                                  column: 40,
                                 },
                                },
                               },
                              ),
                              attribute_path: [
                               Raw(
                                PartRaw {
                                 content: "wrapped",
                                 span: Span {
                                  start: Position {
                                   line: 87,
                                   column: 41,
                                  },
                                  end: Position {
                                   line: 87,
                                   column: 48,
                                  },
                                 },
                                },
                               ),
                              ],
                              default: None,
                             },
                            ),
                            operator: EqualTo,
                            right: Identifier(
                             Identifier {
                              id: "null",
                              span: Span {
                               start: Position {
                                line: 87,
                                column: 52,
                               },
                               end: Position {
                                line: 87,
                                column: 56,
                               },
                              },
                             },
                            ),
                           },
                          ),
                         },
                        ),
                        operator: LogicalAnd,
                        right: BinaryOperation(
                         BinaryOperation {
                          left: BinaryOperation(
                           BinaryOperation {
                            left: PropertyAccess(
                             PropertyAccess {
                              expression: Identifier(
                               Identifier {
                                id: "f",
                                span: Span {
                                 start: Position {
                                  line: 88,
                                  column: 17,
                                 },
                                 end: Position {
                                  line: 88,
                                  column: 18,
                                 },
                                },
                               },
                              ),
                              attribute_path: [
                               Raw(
                                PartRaw {
                                 content: "payload",
                                 span: Span {
                                  start: Position {
                                   line: 88,
                                   column: 19,
                                  },
                                  end: Position {
                                   line: 88,
                                   column: 26,
                                  },
                                 },
                                },
                               ),
                              ],
                              default: None,
                             },
                            ),
                            operator: EqualTo,
                            right: Identifier(
                             Identifier {
                              id: "null",
                              span: Span {
                               start: Position {
                                line: 88,
                                column: 30,
                               },
                               end: Position {
                                line: 88,
                                column: 34,
                               },
                              },
                             },
                            ),
                           },
                          ),
                          operator: LogicalAnd,
                          right: BinaryOperation(
                           BinaryOperation {
                            left: PropertyAccess(
                             PropertyAccess {
                              expression: Identifier(
                               Identifier {
                                id: "f'",
                                span: Span {
                                 start: Position {
                                  line: 88,
                                  column: 38,
                                 },
                                 end: Position {
                                  line: 88,
                                  column: 40,
                                 },
                                },
                               },
                              ),
                              attribute_path: [
                               Raw(
                                PartRaw {
                                 content: "payload",
                                 span: Span {
                                  start: Position {
                                   line: 88,
                                   column: 41,
                                  },
                                  end: Position {
                                   line: 88,
                                   column: 48,
                                  },
                                 },
                                },
                               ),
                              ],
                              default: None,
                             },
                            ),
                            operator: EqualTo,
                            right: Identifier(
                             Identifier {
                              id: "null",
                              span: Span {
                               start: Position {
                                line: 88,
                                column: 52,
                               },
                               end: Position {
                                line: 88,
                                column: 56,
                               },
                              },
                             },
                            ),
                           },
                          ),
                         },
                        ),
                       },
                      ),
                      then: PropertyAccess(
                       PropertyAccess {
                        expression: Identifier(
                         Identifier {
                          id: "f",
                          span: Span {
                           start: Position {
                            line: 89,
                            column: 13,
                           },
                           end: Position {
                            line: 89,
                            column: 14,
                           },
                          },
                         },
                        ),
                        attribute_path: [
                         Raw(
                          PartRaw {
                           content: "type",
                           span: Span {
                            start: Position {
                             line: 89,
                             column: 15,
                            },
                            end: Position {
                             line: 89,
                             column: 19,
                            },
                           },
                          },
                         ),
                        ],
                        default: None,
                       },
                      ),
                      else_: IfThenElse(
                       IfThenElse {
                        predicate: BinaryOperation(
                         BinaryOperation {
                          left: BinaryOperation(
                           BinaryOperation {
                            left: BinaryOperation(
                             BinaryOperation {
                              left: PropertyAccess(
                               PropertyAccess {
                                expression: Identifier(
                                 Identifier {
                                  id: "f",
                                  span: Span {
                                   start: Position {
                                    line: 91,
                                    column: 14,
                                   },
                                   end: Position {
                                    line: 91,
                                    column: 15,
                                   },
                                  },
                                 },
                                ),
                                attribute_path: [
                                 Raw(
                                  PartRaw {
                                   content: "wrapped",
                                   span: Span {
                                    start: Position {
                                     line: 91,
                                     column: 16,
                                    },
                                    end: Position {
                                     line: 91,
                                     column: 23,
                                    },
                                   },
                                  },
                                 ),
                                ],
                                default: None,
                               },
                              ),
                              operator: NotEqualTo,
                              right: Identifier(
                               Identifier {
                                id: "null",
                                span: Span {
                                 start: Position {
                                  line: 91,
                                  column: 27,
                                 },
                                 end: Position {
                                  line: 91,
                                  column: 31,
                                 },
                                },
                               },
                              ),
                             },
                            ),
                            operator: LogicalAnd,
                            right: BinaryOperation(
                             BinaryOperation {
                              left: PropertyAccess(
                               PropertyAccess {
                                expression: Identifier(
                                 Identifier {
                                  id: "f'",
                                  span: Span {
                                   start: Position {
                                    line: 91,
                                    column: 35,
                                   },
                                   end: Position {
                                    line: 91,
                                    column: 37,
                                   },
                                  },
                                 },
                                ),
                                attribute_path: [
                                 Raw(
                                  PartRaw {
                                   content: "wrapped",
                                   span: Span {
                                    start: Position {
                                     line: 91,
                                     column: 38,
                                    },
                                    end: Position {
                                     line: 91,
                                     column: 45,
                                    },
                                   },
                                  },
                                 ),
                                ],
                                default: None,
                               },
                              ),
                              operator: NotEqualTo,
                              right: Identifier(
                               Identifier {
                                id: "null",
                                span: Span {
                                 start: Position {
                                  line: 91,
                                  column: 49,
                                 },
                                 end: Position {
                                  line: 91,
                                  column: 53,
                                 },
                                },
                               },
                              ),
                             },
                            ),
                           },
                          ),
                          operator: LogicalAnd,
                          right: BinaryOperation(
                           BinaryOperation {
                            left: Identifier(
                             Identifier {
                              id: "wrapped",
                              span: Span {
                               start: Position {
                                line: 91,
                                column: 59,
                               },
                               end: Position {
                                line: 91,
                                column: 66,
                               },
                              },
                             },
                            ),
                            operator: NotEqualTo,
                            right: Identifier(
                             Identifier {
                              id: "null",
                              span: Span {
                               start: Position {
                                line: 91,
                                column: 70,
                               },
                               end: Position {
                                line: 91,
                                column: 74,
                               },
                              },
                             },
                            ),
                           },
                          ),
                         },
                        ),
                        then: FunctionApplication(
                         FunctionApplication {
                          function: PropertyAccess(
                           PropertyAccess {
                            expression: Identifier(
                             Identifier {
                              id: "f",
                              span: Span {
                               start: Position {
                                line: 92,
                                column: 13,
                               },
                               end: Position {
                                line: 92,
                                column: 14,
                               },
                              },
                             },
                            ),
                            attribute_path: [
                             Raw(
                              PartRaw {
                               content: "type",
                               span: Span {
                                start: Position {
                                 line: 92,
                                 column: 15,
                                },
                                end: Position {
                                 line: 92,
                                 column: 19,
                                },
                               },
                              },
                             ),
                            ],
                            default: None,
                           },
                          ),
                          arguments: [
                           Identifier(
                            Identifier {
                             id: "wrapped",
                             span: Span {
                              start: Position {
                               line: 92,
                               column: 20,
                              },
                              end: Position {
                               line: 92,
                               column: 27,
                              },
                             },
                            },
                           ),
                          ],
                         },
                        ),
                        else_: IfThenElse(
                         IfThenElse {
                          predicate: BinaryOperation(
                           BinaryOperation {
                            left: BinaryOperation(
                             BinaryOperation {
                              left: BinaryOperation(
                               BinaryOperation {
                                left: PropertyAccess(
                                 PropertyAccess {
                                  expression: Identifier(
                                   Identifier {
                                    id: "f",
                                    span: Span {
                                     start: Position {
                                      line: 94,
                                      column: 14,
                                     },
                                     end: Position {
                                      line: 94,
                                      column: 15,
                                     },
                                    },
                                   },
                                  ),
                                  attribute_path: [
                                   Raw(
                                    PartRaw {
                                     content: "payload",
                                     span: Span {
                                      start: Position {
                                       line: 94,
                                       column: 16,
                                      },
                                      end: Position {
                                       line: 94,
                                       column: 23,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  default: None,
                                 },
                                ),
                                operator: NotEqualTo,
                                right: Identifier(
                                 Identifier {
                                  id: "null",
                                  span: Span {
                                   start: Position {
                                    line: 94,
                                    column: 27,
                                   },
                                   end: Position {
                                    line: 94,
                                    column: 31,
                                   },
                                  },
                                 },
                                ),
                               },
                              ),
                              operator: LogicalAnd,
                              right: BinaryOperation(
                               BinaryOperation {
                                left: PropertyAccess(
                                 PropertyAccess {
                                  expression: Identifier(
                                   Identifier {
                                    id: "f'",
                                    span: Span {
                                     start: Position {
                                      line: 94,
                                      column: 35,
                                     },
                                     end: Position {
                                      line: 94,
                                      column: 37,
                                     },
                                    },
                                   },
                                  ),
                                  attribute_path: [
                                   Raw(
                                    PartRaw {
                                     content: "payload",
                                     span: Span {
                                      start: Position {
                                       line: 94,
                                       column: 38,
                                      },
                                      end: Position {
                                       line: 94,
                                       column: 45,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  default: None,
                                 },
                                ),
                                operator: NotEqualTo,
                                right: Identifier(
                                 Identifier {
                                  id: "null",
                                  span: Span {
                                   start: Position {
                                    line: 94,
                                    column: 49,
                                   },
                                   end: Position {
                                    line: 94,
                                    column: 53,
                                   },
                                  },
                                 },
                                ),
                               },
                              ),
                             },
                            ),
                            operator: LogicalAnd,
                            right: BinaryOperation(
                             BinaryOperation {
                              left: Identifier(
                               Identifier {
                                id: "payload",
                                span: Span {
                                 start: Position {
                                  line: 94,
                                  column: 59,
                                 },
                                 end: Position {
                                  line: 94,
                                  column: 66,
                                 },
                                },
                               },
                              ),
                              operator: NotEqualTo,
                              right: Identifier(
                               Identifier {
                                id: "null",
                                span: Span {
                                 start: Position {
                                  line: 94,
                                  column: 70,
                                 },
                                 end: Position {
                                  line: 94,
                                  column: 74,
                                 },
                                },
                               },
                              ),
                             },
                            ),
                           },
                          ),
                          then: FunctionApplication(
                           FunctionApplication {
                            function: PropertyAccess(
                             PropertyAccess {
                              expression: Identifier(
                               Identifier {
                                id: "f",
                                span: Span {
                                 start: Position {
                                  line: 95,
                                  column: 13,
                                 },
                                 end: Position {
                                  line: 95,
                                  column: 14,
                                 },
                                },
                               },
                              ),
                              attribute_path: [
                               Raw(
                                PartRaw {
                                 content: "type",
                                 span: Span {
                                  start: Position {
                                   line: 95,
                                   column: 15,
                                  },
                                  end: Position {
                                   line: 95,
                                   column: 19,
                                  },
                                 },
                                },
                               ),
                              ],
                              default: None,
                             },
                            ),
                            arguments: [
                             Identifier(
                              Identifier {
                               id: "payload",
                               span: Span {
                                start: Position {
                                 line: 95,
                                 column: 20,
                                },
                                end: Position {
                                 line: 95,
                                 column: 27,
                                },
                               },
                              },
                             ),
                            ],
                           },
                          ),
                          else_: Identifier(
                           Identifier {
                            id: "null",
                            span: Span {
                             start: Position {
                              line: 96,
                              column: 10,
                             },
                             end: Position {
                              line: 96,
                              column: 14,
                             },
                            },
                           },
                          ),
                          span: Span {
                           start: Position {
                            line: 94,
                            column: 10,
                           },
                           end: Position {
                            line: 96,
                            column: 14,
                           },
                          },
                         },
                        ),
                        span: Span {
                         start: Position {
                          line: 91,
                          column: 10,
                         },
                         end: Position {
                          line: 96,
                          column: 14,
                         },
                        },
                       },
                      ),
                      span: Span {
                       start: Position {
                        line: 87,
                        column: 10,
                       },
                       end: Position {
                        line: 96,
                        column: 14,
                       },
                      },
                     },
                    ),
                    span: Span {
                     start: Position {
                      line: 84,
                      column: 5,
                     },
                     end: Position {
                      line: 96,
                      column: 14,
                     },
                    },
                   },
                  ),
                  span: Span {
                   start: Position {
                    line: 80,
                    column: 5,
                   },
                   end: Position {
                    line: 96,
                    column: 14,
                   },
                  },
                 },
                ),
                span: Span {
                 start: Position {
                  line: 79,
                  column: 25,
                 },
                 end: Position {
                  line: 96,
                  column: 14,
                 },
                },
               },
              ),
              span: Span {
               start: Position {
                line: 79,
                column: 22,
               },
               end: Position {
                line: 96,
                column: 14,
               },
              },
             },
            ),
           },
          ),
          KeyValue(
           BindingKeyValue {
            from: [
             Raw(
              PartRaw {
               content: "defaultFunctor",
               span: Span {
                start: Position {
                 line: 99,
                 column: 3,
                },
                end: Position {
                 line: 99,
                 column: 17,
                },
               },
              },
             ),
            ],
            to: Function(
             Function {
              head: Simple(
               FunctionHeadSimple {
                identifier: "name",
               },
              ),
              body: Map(
               Map {
                recursive: false,
                bindings: [
                 Inherit(
                  BindingInherit {
                   from: None,
                   attributes: [
                    Raw(
                     PartRaw {
                      content: "name",
                      span: Span {
                       start: Position {
                        line: 100,
                        column: 13,
                       },
                       end: Position {
                        line: 100,
                        column: 17,
                       },
                      },
                     },
                    ),
                   ],
                   span: Span {
                    start: Position {
                     line: 99,
                     column: 27,
                    },
                    end: Position {
                     line: 100,
                     column: 18,
                    },
                   },
                  },
                 ),
                 KeyValue(
                  BindingKeyValue {
                   from: [
                    Raw(
                     PartRaw {
                      content: "type",
                      span: Span {
                       start: Position {
                        line: 101,
                        column: 5,
                       },
                       end: Position {
                        line: 101,
                        column: 9,
                       },
                      },
                     },
                    ),
                   ],
                   to: PropertyAccess(
                    PropertyAccess {
                     expression: Identifier(
                      Identifier {
                       id: "types",
                       span: Span {
                        start: Position {
                         line: 101,
                         column: 15,
                        },
                        end: Position {
                         line: 101,
                         column: 20,
                        },
                       },
                      },
                     ),
                     attribute_path: [
                      Interpolation(
                       PartInterpolation {
                        expression: Identifier(
                         Identifier {
                          id: "name",
                          span: Span {
                           start: Position {
                            line: 101,
                            column: 23,
                           },
                           end: Position {
                            line: 101,
                            column: 27,
                           },
                          },
                         },
                        ),
                       },
                      ),
                     ],
                     default: Some(
                      Identifier(
                       Identifier {
                        id: "null",
                        span: Span {
                         start: Position {
                          line: 101,
                          column: 32,
                         },
                         end: Position {
                          line: 101,
                          column: 36,
                         },
                        },
                       },
                      ),
                     ),
                    },
                   ),
                  },
                 ),
                 KeyValue(
                  BindingKeyValue {
                   from: [
                    Raw(
                     PartRaw {
                      content: "wrapped",
                      span: Span {
                       start: Position {
                        line: 102,
                        column: 5,
                       },
                       end: Position {
                        line: 102,
                        column: 12,
                       },
                      },
                     },
                    ),
                   ],
                   to: Identifier(
                    Identifier {
                     id: "null",
                     span: Span {
                      start: Position {
                       line: 102,
                       column: 15,
                      },
                      end: Position {
                       line: 102,
                       column: 19,
                      },
                     },
                    },
                   ),
                  },
                 ),
                 KeyValue(
                  BindingKeyValue {
                   from: [
                    Raw(
                     PartRaw {
                      content: "payload",
                      span: Span {
                       start: Position {
                        line: 103,
                        column: 5,
                       },
                       end: Position {
                        line: 103,
                        column: 12,
                       },
                      },
                     },
                    ),
                   ],
                   to: Identifier(
                    Identifier {
                     id: "null",
                     span: Span {
                      start: Position {
                       line: 103,
                       column: 15,
                      },
                      end: Position {
                       line: 103,
                       column: 19,
                      },
                     },
                    },
                   ),
                  },
                 ),
                 KeyValue(
                  BindingKeyValue {
                   from: [
                    Raw(
                     PartRaw {
                      content: "binOp",
                      span: Span {
                       start: Position {
                        line: 104,
                        column: 5,
                       },
                       end: Position {
                        line: 104,
                        column: 10,
                       },
                      },
                     },
                    ),
                   ],
                   to: Function(
                    Function {
                     head: Simple(
                      FunctionHeadSimple {
                       identifier: "a",
                      },
                     ),
                     body: Function(
                      Function {
                       head: Simple(
                        FunctionHeadSimple {
                         identifier: "b",
                        },
                       ),
                       body: Identifier(
                        Identifier {
                         id: "null",
                         span: Span {
                          start: Position {
                           line: 104,
                           column: 21,
                          },
                          end: Position {
                           line: 104,
                           column: 25,
                          },
                         },
                        },
                       ),
                       span: Span {
                        start: Position {
                         line: 104,
                         column: 18,
                        },
                        end: Position {
                         line: 104,
                         column: 25,
                        },
                       },
                      },
                     ),
                     span: Span {
                      start: Position {
                       line: 104,
                       column: 15,
                      },
                      end: Position {
                       line: 104,
                       column: 25,
                      },
                     },
                    },
                   ),
                  },
                 ),
                ],
                span: Span {
                 start: Position {
                  line: 99,
                  column: 26,
                 },
                 end: Position {
                  line: 105,
                  column: 4,
                 },
                },
               },
              ),
              span: Span {
               start: Position {
                line: 99,
                column: 20,
               },
               end: Position {
                line: 105,
                column: 4,
               },
              },
             },
            ),
           },
          ),
          KeyValue(
           BindingKeyValue {
            from: [
             Raw(
              PartRaw {
               content: "isOptionType",
               span: Span {
                start: Position {
                 line: 107,
                 column: 3,
                },
                end: Position {
                 line: 107,
                 column: 15,
                },
               },
              },
             ),
            ],
            to: FunctionApplication(
             FunctionApplication {
              function: Identifier(
               Identifier {
                id: "isType",
                span: Span {
                 start: Position {
                  line: 107,
                  column: 18,
                 },
                 end: Position {
                  line: 107,
                  column: 24,
                 },
                },
               },
              ),
              arguments: [
               String(
                String_ {
                 parts: [
                  Raw(
                   PartRaw {
                    content: "option-type",
                    span: Span {
                     start: Position {
                      line: 107,
                      column: 26,
                     },
                     end: Position {
                      line: 107,
                      column: 37,
                     },
                    },
                   },
                  ),
                 ],
                 span: Span {
                  start: Position {
                   line: 107,
                   column: 25,
                  },
                  end: Position {
                   line: 107,
                   column: 38,
                  },
                 },
                },
               ),
              ],
             },
            ),
           },
          ),
          KeyValue(
           BindingKeyValue {
            from: [
             Raw(
              PartRaw {
               content: "mkOptionType",
               span: Span {
                start: Position {
                 line: 108,
                 column: 3,
                },
                end: Position {
                 line: 108,
                 column: 15,
                },
               },
              },
             ),
            ],
            to: Function(
             Function {
              head: Destructured(
               FunctionHeadDestructured {
                ellipsis: false,
                identifier: None,
                arguments: [
                 FunctionHeadDestructuredArgument {
                  identifier: "name",
                  default: None,
                 },
                 FunctionHeadDestructuredArgument {
                  identifier: "description",
                  default: Some(
                   Identifier(
                    Identifier {
                     id: "null",
                     span: Span {
                      start: Position {
                       line: 113,
                       column: 21,
                      },
                      end: Position {
                       line: 113,
                       column: 25,
                      },
                     },
                    },
                   ),
                  ),
                 },
                 FunctionHeadDestructuredArgument {
                  identifier: "descriptionClass",
                  default: Some(
                   Identifier(
                    Identifier {
                     id: "null",
                     span: Span {
                      start: Position {
                       line: 119,
                       column: 26,
                      },
                      end: Position {
                       line: 119,
                       column: 30,
                      },
                     },
                    },
                   ),
                  ),
                 },
                 FunctionHeadDestructuredArgument {
                  identifier: "check",
                  default: Some(
                   Function(
                    Function {
                     head: Simple(
                      FunctionHeadSimple {
                       identifier: "x",
                      },
                     ),
                     body: Identifier(
                      Identifier {
                       id: "true",
                       span: Span {
                        start: Position {
                         line: 136,
                         column: 19,
                        },
                        end: Position {
                         line: 136,
                         column: 23,
                        },
                       },
                      },
                     ),
                     span: Span {
                      start: Position {
                       line: 136,
                       column: 16,
                      },
                      end: Position {
                       line: 136,
                       column: 23,
                      },
                     },
                    },
                   ),
                  ),
                 },
                 FunctionHeadDestructuredArgument {
                  identifier: "merge",
                  default: Some(
                   Identifier(
                    Identifier {
                     id: "mergeDefaultOption",
                     span: Span {
                      start: Position {
                       line: 143,
                       column: 15,
                      },
                      end: Position {
                       line: 143,
                       column: 33,
                      },
                     },
                    },
                   ),
                  ),
                 },
                 FunctionHeadDestructuredArgument {
                  identifier: "emptyValue",
                  default: Some(
                   Map(
                    Map {
                     recursive: false,
                     bindings: [],
                     span: Span {
                      start: Position {
                       line: 148,
                       column: 20,
                      },
                      end: Position {
                       line: 148,
                       column: 22,
                      },
                     },
                    },
                   ),
                  ),
                 },
                 FunctionHeadDestructuredArgument {
                  identifier: "getSubOptions",
                  default: Some(
                   Function(
                    Function {
                     head: Simple(
                      FunctionHeadSimple {
                       identifier: "prefix",
                      },
                     ),
                     body: Map(
                      Map {
                       recursive: false,
                       bindings: [],
                       span: Span {
                        start: Position {
                         line: 151,
                         column: 31,
                        },
                        end: Position {
                         line: 151,
                         column: 33,
                        },
                       },
                      },
                     ),
                     span: Span {
                      start: Position {
                       line: 151,
                       column: 23,
                      },
                      end: Position {
                       line: 151,
                       column: 33,
                      },
                     },
                    },
                   ),
                  ),
                 },
                 FunctionHeadDestructuredArgument {
                  identifier: "getSubModules",
                  default: Some(
                   Identifier(
                    Identifier {
                     id: "null",
                     span: Span {
                      start: Position {
                       line: 153,
                       column: 23,
                      },
                      end: Position {
                       line: 153,
                       column: 27,
                      },
                     },
                    },
                   ),
                  ),
                 },
                 FunctionHeadDestructuredArgument {
                  identifier: "substSubModules",
                  default: Some(
                   Function(
                    Function {
                     head: Simple(
                      FunctionHeadSimple {
                       identifier: "m",
                      },
                     ),
                     body: Identifier(
                      Identifier {
                       id: "null",
                       span: Span {
                        start: Position {
                         line: 156,
                         column: 28,
                        },
                        end: Position {
                         line: 156,
                         column: 32,
                        },
                       },
                      },
                     ),
                     span: Span {
                      start: Position {
                       line: 156,
                       column: 25,
                      },
                      end: Position {
                       line: 156,
                       column: 32,
                      },
                     },
                    },
                   ),
                  ),
                 },
                 FunctionHeadDestructuredArgument {
                  identifier: "typeMerge",
                  default: Some(
                   FunctionApplication(
                    FunctionApplication {
                     function: Identifier(
                      Identifier {
                       id: "defaultTypeMerge",
                       span: Span {
                        start: Position {
                         line: 160,
                         column: 19,
                        },
                        end: Position {
                         line: 160,
                         column: 35,
                        },
                       },
                      },
                     ),
                     arguments: [
                      Identifier(
                       Identifier {
                        id: "functor",
                        span: Span {
                         start: Position {
                          line: 160,
                          column: 36,
                         },
                         end: Position {
                          line: 160,
                          column: 43,
                         },
                        },
                       },
                      ),
                     ],
                    },
                   ),
                  ),
                 },
                 FunctionHeadDestructuredArgument {
                  identifier: "functor",
                  default: Some(
                   FunctionApplication(
                    FunctionApplication {
                     function: Identifier(
                      Identifier {
                       id: "defaultFunctor",
                       span: Span {
                        start: Position {
                         line: 169,
                         column: 17,
                        },
                        end: Position {
                         line: 169,
                         column: 31,
                        },
                       },
                      },
                     ),
                     arguments: [
                      Identifier(
                       Identifier {
                        id: "name",
                        span: Span {
                         start: Position {
                          line: 169,
                          column: 32,
                         },
                         end: Position {
                          line: 169,
                          column: 36,
                         },
                        },
                       },
                      ),
                     ],
                    },
                   ),
                  ),
                 },
                 FunctionHeadDestructuredArgument {
                  identifier: "deprecationMessage",
                  default: Some(
                   Identifier(
                    Identifier {
                     id: "null",
                     span: Span {
                      start: Position {
                       line: 172,
                       column: 28,
                      },
                      end: Position {
                       line: 172,
                       column: 32,
                      },
                     },
                    },
                   ),
                  ),
                 },
                 FunctionHeadDestructuredArgument {
                  identifier: "nestedTypes",
                  default: Some(
                   Map(
                    Map {
                     recursive: false,
                     bindings: [],
                     span: Span {
                      start: Position {
                       line: 176,
                       column: 21,
                      },
                      end: Position {
                       line: 176,
                       column: 23,
                      },
                     },
                    },
                   ),
                  ),
                 },
                ],
               },
              ),
              body: Map(
               Map {
                recursive: false,
                bindings: [
                 KeyValue(
                  BindingKeyValue {
                   from: [
                    Raw(
                     PartRaw {
                      content: "_type",
                      span: Span {
                       start: Position {
                        line: 178,
                        column: 7,
                       },
                       end: Position {
                        line: 178,
                        column: 12,
                       },
                      },
                     },
                    ),
                   ],
                   to: String(
                    String_ {
                     parts: [
                      Raw(
                       PartRaw {
                        content: "option-type",
                        span: Span {
                         start: Position {
                          line: 178,
                          column: 16,
                         },
                         end: Position {
                          line: 178,
                          column: 27,
                         },
                        },
                       },
                      ),
                     ],
                     span: Span {
                      start: Position {
                       line: 178,
                       column: 15,
                      },
                      end: Position {
                       line: 178,
                       column: 28,
                      },
                     },
                    },
                   ),
                  },
                 ),
                 Inherit(
                  BindingInherit {
                   from: None,
                   attributes: [
                    Raw(
                     PartRaw {
                      content: "name",
                      span: Span {
                       start: Position {
                        line: 180,
                        column: 9,
                       },
                       end: Position {
                        line: 180,
                        column: 13,
                       },
                      },
                     },
                    ),
                    Raw(
                     PartRaw {
                      content: "check",
                      span: Span {
                       start: Position {
                        line: 180,
                        column: 14,
                       },
                       end: Position {
                        line: 180,
                        column: 19,
                       },
                      },
                     },
                    ),
                    Raw(
                     PartRaw {
                      content: "merge",
                      span: Span {
                       start: Position {
                        line: 180,
                        column: 20,
                       },
                       end: Position {
                        line: 180,
                        column: 25,
                       },
                      },
                     },
                    ),
                    Raw(
                     PartRaw {
                      content: "emptyValue",
                      span: Span {
                       start: Position {
                        line: 180,
                        column: 26,
                       },
                       end: Position {
                        line: 180,
                        column: 36,
                       },
                      },
                     },
                    ),
                    Raw(
                     PartRaw {
                      content: "getSubOptions",
                      span: Span {
                       start: Position {
                        line: 180,
                        column: 37,
                       },
                       end: Position {
                        line: 180,
                        column: 50,
                       },
                      },
                     },
                    ),
                    Raw(
                     PartRaw {
                      content: "getSubModules",
                      span: Span {
                       start: Position {
                        line: 180,
                        column: 51,
                       },
                       end: Position {
                        line: 180,
                        column: 64,
                       },
                      },
                     },
                    ),
                    Raw(
                     PartRaw {
                      content: "substSubModules",
                      span: Span {
                       start: Position {
                        line: 180,
                        column: 65,
                       },
                       end: Position {
                        line: 180,
                        column: 80,
                       },
                      },
                     },
                    ),
                    Raw(
                     PartRaw {
                      content: "typeMerge",
                      span: Span {
                       start: Position {
                        line: 181,
                        column: 9,
                       },
                       end: Position {
                        line: 181,
                        column: 18,
                       },
                      },
                     },
                    ),
                    Raw(
                     PartRaw {
                      content: "functor",
                      span: Span {
                       start: Position {
                        line: 181,
                        column: 19,
                       },
                       end: Position {
                        line: 181,
                        column: 26,
                       },
                      },
                     },
                    ),
                    Raw(
                     PartRaw {
                      content: "deprecationMessage",
                      span: Span {
                       start: Position {
                        line: 181,
                        column: 27,
                       },
                       end: Position {
                        line: 181,
                        column: 45,
                       },
                      },
                     },
                    ),
                    Raw(
                     PartRaw {
                      content: "nestedTypes",
                      span: Span {
                       start: Position {
                        line: 181,
                        column: 46,
                       },
                       end: Position {
                        line: 181,
                        column: 57,
                       },
                      },
                     },
                    ),
                    Raw(
                     PartRaw {
                      content: "descriptionClass",
                      span: Span {
                       start: Position {
                        line: 181,
                        column: 58,
                       },
                       end: Position {
                        line: 181,
                        column: 74,
                       },
                      },
                     },
                    ),
                   ],
                   span: Span {
                    start: Position {
                     line: 178,
                     column: 6,
                    },
                    end: Position {
                     line: 181,
                     column: 75,
                    },
                   },
                  },
                 ),
                 KeyValue(
                  BindingKeyValue {
                   from: [
                    Raw(
                     PartRaw {
                      content: "description",
                      span: Span {
                       start: Position {
                        line: 182,
                        column: 7,
                       },
                       end: Position {
                        line: 182,
                        column: 18,
                       },
                      },
                     },
                    ),
                   ],
                   to: IfThenElse(
                    IfThenElse {
                     predicate: BinaryOperation(
                      BinaryOperation {
                       left: Identifier(
                        Identifier {
                         id: "description",
                         span: Span {
                          start: Position {
                           line: 182,
                           column: 24,
                          },
                          end: Position {
                           line: 182,
                           column: 35,
                          },
                         },
                        },
                       ),
                       operator: EqualTo,
                       right: Identifier(
                        Identifier {
                         id: "null",
                         span: Span {
                          start: Position {
                           line: 182,
                           column: 39,
                          },
                          end: Position {
                           line: 182,
                           column: 43,
                          },
                         },
                        },
                       ),
                      },
                     ),
                     then: Identifier(
                      Identifier {
                       id: "name",
                       span: Span {
                        start: Position {
                         line: 182,
                         column: 49,
                        },
                        end: Position {
                         line: 182,
                         column: 53,
                        },
                       },
                      },
                     ),
                     else_: Identifier(
                      Identifier {
                       id: "description",
                       span: Span {
                        start: Position {
                         line: 182,
                         column: 59,
                        },
                        end: Position {
                         line: 182,
                         column: 70,
                        },
                       },
                      },
                     ),
                     span: Span {
                      start: Position {
                       line: 182,
                       column: 21,
                      },
                      end: Position {
                       line: 182,
                       column: 70,
                      },
                     },
                    },
                   ),
                  },
                 ),
                ],
                span: Span {
                 start: Position {
                  line: 178,
                  column: 5,
                 },
                 end: Position {
                  line: 183,
                  column: 6,
                 },
                },
               },
              ),
              span: Span {
               start: Position {
                line: 109,
                column: 5,
               },
               end: Position {
                line: 183,
                column: 6,
               },
              },
             },
            ),
           },
          ),
          KeyValue(
           BindingKeyValue {
            from: [
             Raw(
              PartRaw {
               content: "optionDescriptionPhrase",
               span: Span {
                start: Position {
                 line: 205,
                 column: 3,
                },
                end: Position {
                 line: 205,
                 column: 26,
                },
               },
              },
             ),
            ],
            to: Function(
             Function {
              head: Simple(
               FunctionHeadSimple {
                identifier: "unparenthesize",
               },
              ),
              body: Function(
               Function {
                head: Simple(
                 FunctionHeadSimple {
                  identifier: "t",
                 },
                ),
                body: IfThenElse(
                 IfThenElse {
                  predicate: FunctionApplication(
                   FunctionApplication {
                    function: Identifier(
                     Identifier {
                      id: "unparenthesize",
                      span: Span {
                       start: Position {
                        line: 206,
                        column: 8,
                       },
                       end: Position {
                        line: 206,
                        column: 22,
                       },
                      },
                     },
                    ),
                    arguments: [
                     PropertyAccess(
                      PropertyAccess {
                       expression: Identifier(
                        Identifier {
                         id: "t",
                         span: Span {
                          start: Position {
                           line: 206,
                           column: 24,
                          },
                          end: Position {
                           line: 206,
                           column: 25,
                          },
                         },
                        },
                       ),
                       attribute_path: [
                        Raw(
                         PartRaw {
                          content: "descriptionClass",
                          span: Span {
                           start: Position {
                            line: 206,
                            column: 26,
                           },
                           end: Position {
                            line: 206,
                            column: 42,
                           },
                          },
                         },
                        ),
                       ],
                       default: Some(
                        Identifier(
                         Identifier {
                          id: "null",
                          span: Span {
                           start: Position {
                            line: 206,
                            column: 46,
                           },
                           end: Position {
                            line: 206,
                            column: 50,
                           },
                          },
                         },
                        ),
                       ),
                      },
                     ),
                    ],
                   },
                  ),
                  then: PropertyAccess(
                   PropertyAccess {
                    expression: Identifier(
                     Identifier {
                      id: "t",
                      span: Span {
                       start: Position {
                        line: 207,
                        column: 10,
                       },
                       end: Position {
                        line: 207,
                        column: 11,
                       },
                      },
                     },
                    ),
                    attribute_path: [
                     Raw(
                      PartRaw {
                       content: "description",
                       span: Span {
                        start: Position {
                         line: 207,
                         column: 12,
                        },
                        end: Position {
                         line: 207,
                         column: 23,
                        },
                       },
                      },
                     ),
                    ],
                    default: None,
                   },
                  ),
                  else_: String(
                   String_ {
                    parts: [
                     Raw(
                      PartRaw {
                       content: "(",
                       span: Span {
                        start: Position {
                         line: 208,
                         column: 11,
                        },
                        end: Position {
                         line: 208,
                         column: 28,
                        },
                       },
                      },
                     ),
                     Interpolation(
                      PartInterpolation {
                       expression: PropertyAccess(
                        PropertyAccess {
                         expression: Identifier(
                          Identifier {
                           id: "t",
                           span: Span {
                            start: Position {
                             line: 208,
                             column: 14,
                            },
                            end: Position {
                             line: 208,
                             column: 15,
                            },
                           },
                          },
                         ),
                         attribute_path: [
                          Raw(
                           PartRaw {
                            content: "description",
                            span: Span {
                             start: Position {
                              line: 208,
                              column: 16,
                             },
                             end: Position {
                              line: 208,
                              column: 27,
                             },
                            },
                           },
                          ),
                         ],
                         default: None,
                        },
                       ),
                      },
                     ),
                     Raw(
                      PartRaw {
                       content: ")",
                       span: Span {
                        start: Position {
                         line: 208,
                         column: 11,
                        },
                        end: Position {
                         line: 208,
                         column: 29,
                        },
                       },
                      },
                     ),
                    ],
                    span: Span {
                     start: Position {
                      line: 208,
                      column: 10,
                     },
                     end: Position {
                      line: 208,
                      column: 30,
                     },
                    },
                   },
                  ),
                  span: Span {
                   start: Position {
                    line: 206,
                    column: 5,
                   },
                   end: Position {
                    line: 208,
                    column: 30,
                   },
                  },
                 },
                ),
                span: Span {
                 start: Position {
                  line: 205,
                  column: 45,
                 },
                 end: Position {
                  line: 208,
                  column: 30,
                 },
                },
               },
              ),
              span: Span {
               start: Position {
                line: 205,
                column: 29,
               },
               end: Position {
                line: 208,
                column: 30,
               },
              },
             },
            ),
           },
          ),
          KeyValue(
           BindingKeyValue {
            from: [
             Raw(
              PartRaw {
               content: "types",
               span: Span {
                start: Position {
                 line: 212,
                 column: 3,
                },
                end: Position {
                 line: 212,
                 column: 8,
                },
               },
              },
             ),
            ],
            to: Map(
             Map {
              recursive: true,
              bindings: [
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "raw",
                    span: Span {
                     start: Position {
                      line: 214,
                      column: 5,
                     },
                     end: Position {
                      line: 214,
                      column: 8,
                     },
                    },
                   },
                  ),
                 ],
                 to: FunctionApplication(
                  FunctionApplication {
                   function: Identifier(
                    Identifier {
                     id: "mkOptionType",
                     span: Span {
                      start: Position {
                       line: 214,
                       column: 11,
                      },
                      end: Position {
                       line: 214,
                       column: 23,
                      },
                     },
                    },
                   ),
                   arguments: [
                    Map(
                     Map {
                      recursive: true,
                      bindings: [
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "name",
                            span: Span {
                             start: Position {
                              line: 215,
                              column: 7,
                             },
                             end: Position {
                              line: 215,
                              column: 11,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "raw",
                              span: Span {
                               start: Position {
                                line: 215,
                                column: 15,
                               },
                               end: Position {
                                line: 215,
                                column: 18,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 215,
                             column: 14,
                            },
                            end: Position {
                             line: 215,
                             column: 19,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "description",
                            span: Span {
                             start: Position {
                              line: 216,
                              column: 7,
                             },
                             end: Position {
                              line: 216,
                              column: 18,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "raw value",
                              span: Span {
                               start: Position {
                                line: 216,
                                column: 22,
                               },
                               end: Position {
                                line: 216,
                                column: 31,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 216,
                             column: 21,
                            },
                            end: Position {
                             line: 216,
                             column: 32,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "descriptionClass",
                            span: Span {
                             start: Position {
                              line: 217,
                              column: 7,
                             },
                             end: Position {
                              line: 217,
                              column: 23,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "noun",
                              span: Span {
                               start: Position {
                                line: 217,
                                column: 27,
                               },
                               end: Position {
                                line: 217,
                                column: 31,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 217,
                             column: 26,
                            },
                            end: Position {
                             line: 217,
                             column: 32,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "check",
                            span: Span {
                             start: Position {
                              line: 218,
                              column: 7,
                             },
                             end: Position {
                              line: 218,
                              column: 12,
                             },
                            },
                           },
                          ),
                         ],
                         to: Function(
                          Function {
                           head: Simple(
                            FunctionHeadSimple {
                             identifier: "value",
                            },
                           ),
                           body: Identifier(
                            Identifier {
                             id: "true",
                             span: Span {
                              start: Position {
                               line: 218,
                               column: 22,
                              },
                              end: Position {
                               line: 218,
                               column: 26,
                              },
                             },
                            },
                           ),
                           span: Span {
                            start: Position {
                             line: 218,
                             column: 15,
                            },
                            end: Position {
                             line: 218,
                             column: 26,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "merge",
                            span: Span {
                             start: Position {
                              line: 219,
                              column: 7,
                             },
                             end: Position {
                              line: 219,
                              column: 12,
                             },
                            },
                           },
                          ),
                         ],
                         to: Identifier(
                          Identifier {
                           id: "mergeOneOption",
                           span: Span {
                            start: Position {
                             line: 219,
                             column: 15,
                            },
                            end: Position {
                             line: 219,
                             column: 29,
                            },
                           },
                          },
                         ),
                        },
                       ),
                      ],
                      span: Span {
                       start: Position {
                        line: 214,
                        column: 24,
                       },
                       end: Position {
                        line: 220,
                        column: 6,
                       },
                      },
                     },
                    ),
                   ],
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "anything",
                    span: Span {
                     start: Position {
                      line: 222,
                      column: 5,
                     },
                     end: Position {
                      line: 222,
                      column: 13,
                     },
                    },
                   },
                  ),
                 ],
                 to: FunctionApplication(
                  FunctionApplication {
                   function: Identifier(
                    Identifier {
                     id: "mkOptionType",
                     span: Span {
                      start: Position {
                       line: 222,
                       column: 16,
                      },
                      end: Position {
                       line: 222,
                       column: 28,
                      },
                     },
                    },
                   ),
                   arguments: [
                    Map(
                     Map {
                      recursive: false,
                      bindings: [
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "name",
                            span: Span {
                             start: Position {
                              line: 223,
                              column: 7,
                             },
                             end: Position {
                              line: 223,
                              column: 11,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "anything",
                              span: Span {
                               start: Position {
                                line: 223,
                                column: 15,
                               },
                               end: Position {
                                line: 223,
                                column: 23,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 223,
                             column: 14,
                            },
                            end: Position {
                             line: 223,
                             column: 24,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "description",
                            span: Span {
                             start: Position {
                              line: 224,
                              column: 7,
                             },
                             end: Position {
                              line: 224,
                              column: 18,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "anything",
                              span: Span {
                               start: Position {
                                line: 224,
                                column: 22,
                               },
                               end: Position {
                                line: 224,
                                column: 30,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 224,
                             column: 21,
                            },
                            end: Position {
                             line: 224,
                             column: 31,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "descriptionClass",
                            span: Span {
                             start: Position {
                              line: 225,
                              column: 7,
                             },
                             end: Position {
                              line: 225,
                              column: 23,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "noun",
                              span: Span {
                               start: Position {
                                line: 225,
                                column: 27,
                               },
                               end: Position {
                                line: 225,
                                column: 31,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 225,
                             column: 26,
                            },
                            end: Position {
                             line: 225,
                             column: 32,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "check",
                            span: Span {
                             start: Position {
                              line: 226,
                              column: 7,
                             },
                             end: Position {
                              line: 226,
                              column: 12,
                             },
                            },
                           },
                          ),
                         ],
                         to: Function(
                          Function {
                           head: Simple(
                            FunctionHeadSimple {
                             identifier: "value",
                            },
                           ),
                           body: Identifier(
                            Identifier {
                             id: "true",
                             span: Span {
                              start: Position {
                               line: 226,
                               column: 22,
                              },
                              end: Position {
                               line: 226,
                               column: 26,
                              },
                             },
                            },
                           ),
                           span: Span {
                            start: Position {
                             line: 226,
                             column: 15,
                            },
                            end: Position {
                             line: 226,
                             column: 26,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "merge",
                            span: Span {
                             start: Position {
                              line: 227,
                              column: 7,
                             },
                             end: Position {
                              line: 227,
                              column: 12,
                             },
                            },
                           },
                          ),
                         ],
                         to: Function(
                          Function {
                           head: Simple(
                            FunctionHeadSimple {
                             identifier: "loc",
                            },
                           ),
                           body: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "defs",
                              },
                             ),
                             body: LetIn(
                              LetIn {
                               bindings: [
                                KeyValue(
                                 BindingKeyValue {
                                  from: [
                                   Raw(
                                    PartRaw {
                                     content: "getType",
                                     span: Span {
                                      start: Position {
                                       line: 229,
                                       column: 11,
                                      },
                                      end: Position {
                                       line: 229,
                                       column: 18,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  to: Function(
                                   Function {
                                    head: Simple(
                                     FunctionHeadSimple {
                                      identifier: "value",
                                     },
                                    ),
                                    body: IfThenElse(
                                     IfThenElse {
                                      predicate: BinaryOperation(
                                       BinaryOperation {
                                        left: FunctionApplication(
                                         FunctionApplication {
                                          function: Identifier(
                                           Identifier {
                                            id: "isAttrs",
                                            span: Span {
                                             start: Position {
                                              line: 230,
                                              column: 16,
                                             },
                                             end: Position {
                                              line: 230,
                                              column: 23,
                                             },
                                            },
                                           },
                                          ),
                                          arguments: [
                                           Identifier(
                                            Identifier {
                                             id: "value",
                                             span: Span {
                                              start: Position {
                                               line: 230,
                                               column: 24,
                                              },
                                              end: Position {
                                               line: 230,
                                               column: 29,
                                              },
                                             },
                                            },
                                           ),
                                          ],
                                         },
                                        ),
                                        operator: LogicalAnd,
                                        right: FunctionApplication(
                                         FunctionApplication {
                                          function: Identifier(
                                           Identifier {
                                            id: "isCoercibleToString",
                                            span: Span {
                                             start: Position {
                                              line: 230,
                                              column: 33,
                                             },
                                             end: Position {
                                              line: 230,
                                              column: 52,
                                             },
                                            },
                                           },
                                          ),
                                          arguments: [
                                           Identifier(
                                            Identifier {
                                             id: "value",
                                             span: Span {
                                              start: Position {
                                               line: 230,
                                               column: 53,
                                              },
                                              end: Position {
                                               line: 230,
                                               column: 58,
                                              },
                                             },
                                            },
                                           ),
                                          ],
                                         },
                                        ),
                                       },
                                      ),
                                      then: String(
                                       String_ {
                                        parts: [
                                         Raw(
                                          PartRaw {
                                           content: "stringCoercibleSet",
                                           span: Span {
                                            start: Position {
                                             line: 231,
                                             column: 19,
                                            },
                                            end: Position {
                                             line: 231,
                                             column: 37,
                                            },
                                           },
                                          },
                                         ),
                                        ],
                                        span: Span {
                                         start: Position {
                                          line: 231,
                                          column: 18,
                                         },
                                         end: Position {
                                          line: 231,
                                          column: 38,
                                         },
                                        },
                                       },
                                      ),
                                      else_: FunctionApplication(
                                       FunctionApplication {
                                        function: PropertyAccess(
                                         PropertyAccess {
                                          expression: Identifier(
                                           Identifier {
                                            id: "builtins",
                                            span: Span {
                                             start: Position {
                                              line: 232,
                                              column: 18,
                                             },
                                             end: Position {
                                              line: 232,
                                              column: 26,
                                             },
                                            },
                                           },
                                          ),
                                          attribute_path: [
                                           Raw(
                                            PartRaw {
                                             content: "typeOf",
                                             span: Span {
                                              start: Position {
                                               line: 232,
                                               column: 27,
                                              },
                                              end: Position {
                                               line: 232,
                                               column: 33,
                                              },
                                             },
                                            },
                                           ),
                                          ],
                                          default: None,
                                         },
                                        ),
                                        arguments: [
                                         Identifier(
                                          Identifier {
                                           id: "value",
                                           span: Span {
                                            start: Position {
                                             line: 232,
                                             column: 34,
                                            },
                                            end: Position {
                                             line: 232,
                                             column: 39,
                                            },
                                           },
                                          },
                                         ),
                                        ],
                                       },
                                      ),
                                      span: Span {
                                       start: Position {
                                        line: 230,
                                        column: 13,
                                       },
                                       end: Position {
                                        line: 232,
                                        column: 39,
                                       },
                                      },
                                     },
                                    ),
                                    span: Span {
                                     start: Position {
                                      line: 229,
                                      column: 21,
                                     },
                                     end: Position {
                                      line: 232,
                                      column: 39,
                                     },
                                    },
                                   },
                                  ),
                                 },
                                ),
                                KeyValue(
                                 BindingKeyValue {
                                  from: [
                                   Raw(
                                    PartRaw {
                                     content: "commonType",
                                     span: Span {
                                      start: Position {
                                       line: 236,
                                       column: 11,
                                      },
                                      end: Position {
                                       line: 236,
                                       column: 21,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  to: FunctionApplication(
                                   FunctionApplication {
                                    function: Identifier(
                                     Identifier {
                                      id: "foldl'",
                                      span: Span {
                                       start: Position {
                                        line: 236,
                                        column: 24,
                                       },
                                       end: Position {
                                        line: 236,
                                        column: 30,
                                       },
                                      },
                                     },
                                    ),
                                    arguments: [
                                     Function(
                                      Function {
                                       head: Simple(
                                        FunctionHeadSimple {
                                         identifier: "type",
                                        },
                                       ),
                                       body: Function(
                                        Function {
                                         head: Simple(
                                          FunctionHeadSimple {
                                           identifier: "def",
                                          },
                                         ),
                                         body: IfThenElse(
                                          IfThenElse {
                                           predicate: BinaryOperation(
                                            BinaryOperation {
                                             left: FunctionApplication(
                                              FunctionApplication {
                                               function: Identifier(
                                                Identifier {
                                                 id: "getType",
                                                 span: Span {
                                                  start: Position {
                                                   line: 237,
                                                   column: 16,
                                                  },
                                                  end: Position {
                                                   line: 237,
                                                   column: 23,
                                                  },
                                                 },
                                                },
                                               ),
                                               arguments: [
                                                PropertyAccess(
                                                 PropertyAccess {
                                                  expression: Identifier(
                                                   Identifier {
                                                    id: "def",
                                                    span: Span {
                                                     start: Position {
                                                      line: 237,
                                                      column: 24,
                                                     },
                                                     end: Position {
                                                      line: 237,
                                                      column: 27,
                                                     },
                                                    },
                                                   },
                                                  ),
                                                  attribute_path: [
                                                   Raw(
                                                    PartRaw {
                                                     content: "value",
                                                     span: Span {
                                                      start: Position {
                                                       line: 237,
                                                       column: 28,
                                                      },
                                                      end: Position {
                                                       line: 237,
                                                       column: 33,
                                                      },
                                                     },
                                                    },
                                                   ),
                                                  ],
                                                  default: None,
                                                 },
                                                ),
                                               ],
                                              },
                                             ),
                                             operator: EqualTo,
                                             right: Identifier(
                                              Identifier {
                                               id: "type",
                                               span: Span {
                                                start: Position {
                                                 line: 237,
                                                 column: 37,
                                                },
                                                end: Position {
                                                 line: 237,
                                                 column: 41,
                                                },
                                               },
                                              },
                                             ),
                                            },
                                           ),
                                           then: Identifier(
                                            Identifier {
                                             id: "type",
                                             span: Span {
                                              start: Position {
                                               line: 238,
                                               column: 18,
                                              },
                                              end: Position {
                                               line: 238,
                                               column: 22,
                                              },
                                             },
                                            },
                                           ),
                                           else_: FunctionApplication(
                                            FunctionApplication {
                                             function: Identifier(
                                              Identifier {
                                               id: "throw",
                                               span: Span {
                                                start: Position {
                                                 line: 239,
                                                 column: 18,
                                                },
                                                end: Position {
                                                 line: 239,
                                                 column: 23,
                                                },
                                               },
                                              },
                                             ),
                                             arguments: [
                                              String(
                                               String_ {
                                                parts: [
                                                 Raw(
                                                  PartRaw {
                                                   content: "The option `",
                                                   span: Span {
                                                    start: Position {
                                                     line: 239,
                                                     column: 25,
                                                    },
                                                    end: Position {
                                                     line: 239,
                                                     column: 54,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                 Interpolation(
                                                  PartInterpolation {
                                                   expression: FunctionApplication(
                                                    FunctionApplication {
                                                     function: Identifier(
                                                      Identifier {
                                                       id: "showOption",
                                                       span: Span {
                                                        start: Position {
                                                         line: 239,
                                                         column: 39,
                                                        },
                                                        end: Position {
                                                         line: 239,
                                                         column: 49,
                                                        },
                                                       },
                                                      },
                                                     ),
                                                     arguments: [
                                                      Identifier(
                                                       Identifier {
                                                        id: "loc",
                                                        span: Span {
                                                         start: Position {
                                                          line: 239,
                                                          column: 50,
                                                         },
                                                         end: Position {
                                                          line: 239,
                                                          column: 53,
                                                         },
                                                        },
                                                       },
                                                      ),
                                                     ],
                                                    },
                                                   ),
                                                  },
                                                 ),
                                                 Raw(
                                                  PartRaw {
                                                   content: "' has conflicting option types in ",
                                                   span: Span {
                                                    start: Position {
                                                     line: 239,
                                                     column: 25,
                                                    },
                                                    end: Position {
                                                     line: 239,
                                                     column: 88,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                 Interpolation(
                                                  PartInterpolation {
                                                   expression: FunctionApplication(
                                                    FunctionApplication {
                                                     function: Identifier(
                                                      Identifier {
                                                       id: "showFiles",
                                                       span: Span {
                                                        start: Position {
                                                         line: 239,
                                                         column: 90,
                                                        },
                                                        end: Position {
                                                         line: 239,
                                                         column: 99,
                                                        },
                                                       },
                                                      },
                                                     ),
                                                     arguments: [
                                                      FunctionApplication(
                                                       FunctionApplication {
                                                        function: Identifier(
                                                         Identifier {
                                                          id: "getFiles",
                                                          span: Span {
                                                           start: Position {
                                                            line: 239,
                                                            column: 101,
                                                           },
                                                           end: Position {
                                                            line: 239,
                                                            column: 109,
                                                           },
                                                          },
                                                         },
                                                        ),
                                                        arguments: [
                                                         Identifier(
                                                          Identifier {
                                                           id: "defs",
                                                           span: Span {
                                                            start: Position {
                                                             line: 239,
                                                             column: 110,
                                                            },
                                                            end: Position {
                                                             line: 239,
                                                             column: 114,
                                                            },
                                                           },
                                                          },
                                                         ),
                                                        ],
                                                       },
                                                      ),
                                                     ],
                                                    },
                                                   ),
                                                  },
                                                 ),
                                                ],
                                                span: Span {
                                                 start: Position {
                                                  line: 239,
                                                  column: 24,
                                                 },
                                                 end: Position {
                                                  line: 239,
                                                  column: 117,
                                                 },
                                                },
                                               },
                                              ),
                                             ],
                                            },
                                           ),
                                           span: Span {
                                            start: Position {
                                             line: 237,
                                             column: 13,
                                            },
                                            end: Position {
                                             line: 239,
                                             column: 117,
                                            },
                                           },
                                          },
                                         ),
                                         span: Span {
                                          start: Position {
                                           line: 236,
                                           column: 38,
                                          },
                                          end: Position {
                                           line: 239,
                                           column: 117,
                                          },
                                         },
                                        },
                                       ),
                                       span: Span {
                                        start: Position {
                                         line: 236,
                                         column: 32,
                                        },
                                        end: Position {
                                         line: 239,
                                         column: 117,
                                        },
                                       },
                                      },
                                     ),
                                     FunctionApplication(
                                      FunctionApplication {
                                       function: Identifier(
                                        Identifier {
                                         id: "getType",
                                         span: Span {
                                          start: Position {
                                           line: 240,
                                           column: 14,
                                          },
                                          end: Position {
                                           line: 240,
                                           column: 21,
                                          },
                                         },
                                        },
                                       ),
                                       arguments: [
                                        PropertyAccess(
                                         PropertyAccess {
                                          expression: FunctionApplication(
                                           FunctionApplication {
                                            function: Identifier(
                                             Identifier {
                                              id: "head",
                                              span: Span {
                                               start: Position {
                                                line: 240,
                                                column: 23,
                                               },
                                               end: Position {
                                                line: 240,
                                                column: 27,
                                               },
                                              },
                                             },
                                            ),
                                            arguments: [
                                             Identifier(
                                              Identifier {
                                               id: "defs",
                                               span: Span {
                                                start: Position {
                                                 line: 240,
                                                 column: 28,
                                                },
                                                end: Position {
                                                 line: 240,
                                                 column: 32,
                                                },
                                               },
                                              },
                                             ),
                                            ],
                                           },
                                          ),
                                          attribute_path: [
                                           Raw(
                                            PartRaw {
                                             content: "value",
                                             span: Span {
                                              start: Position {
                                               line: 240,
                                               column: 34,
                                              },
                                              end: Position {
                                               line: 240,
                                               column: 39,
                                              },
                                             },
                                            },
                                           ),
                                          ],
                                          default: None,
                                         },
                                        ),
                                       ],
                                      },
                                     ),
                                     Identifier(
                                      Identifier {
                                       id: "defs",
                                       span: Span {
                                        start: Position {
                                         line: 240,
                                         column: 41,
                                        },
                                        end: Position {
                                         line: 240,
                                         column: 45,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                   },
                                  ),
                                 },
                                ),
                                KeyValue(
                                 BindingKeyValue {
                                  from: [
                                   Raw(
                                    PartRaw {
                                     content: "mergeFunction",
                                     span: Span {
                                      start: Position {
                                       line: 242,
                                       column: 11,
                                      },
                                      end: Position {
                                       line: 242,
                                       column: 24,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  to: PropertyAccess(
                                   PropertyAccess {
                                    expression: Map(
                                     Map {
                                      recursive: false,
                                      bindings: [
                                       KeyValue(
                                        BindingKeyValue {
                                         from: [
                                          Raw(
                                           PartRaw {
                                            content: "set",
                                            span: Span {
                                             start: Position {
                                              line: 244,
                                              column: 13,
                                             },
                                             end: Position {
                                              line: 244,
                                              column: 16,
                                             },
                                            },
                                           },
                                          ),
                                         ],
                                         to: PropertyAccess(
                                          PropertyAccess {
                                           expression: FunctionApplication(
                                            FunctionApplication {
                                             function: Identifier(
                                              Identifier {
                                               id: "attrsOf",
                                               span: Span {
                                                start: Position {
                                                 line: 244,
                                                 column: 20,
                                                },
                                                end: Position {
                                                 line: 244,
                                                 column: 27,
                                                },
                                               },
                                              },
                                             ),
                                             arguments: [
                                              Identifier(
                                               Identifier {
                                                id: "anything",
                                                span: Span {
                                                 start: Position {
                                                  line: 244,
                                                  column: 28,
                                                 },
                                                 end: Position {
                                                  line: 244,
                                                  column: 36,
                                                 },
                                                },
                                               },
                                              ),
                                             ],
                                            },
                                           ),
                                           attribute_path: [
                                            Raw(
                                             PartRaw {
                                              content: "merge",
                                              span: Span {
                                               start: Position {
                                                line: 244,
                                                column: 38,
                                               },
                                               end: Position {
                                                line: 244,
                                                column: 43,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                           default: None,
                                          },
                                         ),
                                        },
                                       ),
                                       KeyValue(
                                        BindingKeyValue {
                                         from: [
                                          Raw(
                                           PartRaw {
                                            content: "list",
                                            span: Span {
                                             start: Position {
                                              line: 247,
                                              column: 13,
                                             },
                                             end: Position {
                                              line: 247,
                                              column: 17,
                                             },
                                            },
                                           },
                                          ),
                                         ],
                                         to: IfThenElse(
                                          IfThenElse {
                                           predicate: BinaryOperation(
                                            BinaryOperation {
                                             left: FunctionApplication(
                                              FunctionApplication {
                                               function: Identifier(
                                                Identifier {
                                                 id: "length",
                                                 span: Span {
                                                  start: Position {
                                                   line: 248,
                                                   column: 18,
                                                  },
                                                  end: Position {
                                                   line: 248,
                                                   column: 24,
                                                  },
                                                 },
                                                },
                                               ),
                                               arguments: [
                                                Identifier(
                                                 Identifier {
                                                  id: "defs",
                                                  span: Span {
                                                   start: Position {
                                                    line: 248,
                                                    column: 25,
                                                   },
                                                   end: Position {
                                                    line: 248,
                                                    column: 29,
                                                   },
                                                  },
                                                 },
                                                ),
                                               ],
                                              },
                                             ),
                                             operator: GreaterThan,
                                             right: Integer(
                                              Integer {
                                               value: "1",
                                               span: Span {
                                                start: Position {
                                                 line: 248,
                                                 column: 32,
                                                },
                                                end: Position {
                                                 line: 248,
                                                 column: 33,
                                                },
                                               },
                                              },
                                             ),
                                            },
                                           ),
                                           then: FunctionApplication(
                                            FunctionApplication {
                                             function: Identifier(
                                              Identifier {
                                               id: "throw",
                                               span: Span {
                                                start: Position {
                                                 line: 249,
                                                 column: 20,
                                                },
                                                end: Position {
                                                 line: 249,
                                                 column: 25,
                                                },
                                               },
                                              },
                                             ),
                                             arguments: [
                                              String(
                                               String_ {
                                                parts: [
                                                 Raw(
                                                  PartRaw {
                                                   content: "The option `",
                                                   span: Span {
                                                    start: Position {
                                                     line: 249,
                                                     column: 27,
                                                    },
                                                    end: Position {
                                                     line: 249,
                                                     column: 56,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                 Interpolation(
                                                  PartInterpolation {
                                                   expression: FunctionApplication(
                                                    FunctionApplication {
                                                     function: Identifier(
                                                      Identifier {
                                                       id: "showOption",
                                                       span: Span {
                                                        start: Position {
                                                         line: 249,
                                                         column: 41,
                                                        },
                                                        end: Position {
                                                         line: 249,
                                                         column: 51,
                                                        },
                                                       },
                                                      },
                                                     ),
                                                     arguments: [
                                                      Identifier(
                                                       Identifier {
                                                        id: "loc",
                                                        span: Span {
                                                         start: Position {
                                                          line: 249,
                                                          column: 52,
                                                         },
                                                         end: Position {
                                                          line: 249,
                                                          column: 55,
                                                         },
                                                        },
                                                       },
                                                      ),
                                                     ],
                                                    },
                                                   ),
                                                  },
                                                 ),
                                                 Raw(
                                                  PartRaw {
                                                   content: "' has conflicting definitions, in ",
                                                   span: Span {
                                                    start: Position {
                                                     line: 249,
                                                     column: 27,
                                                    },
                                                    end: Position {
                                                     line: 249,
                                                     column: 90,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                 Interpolation(
                                                  PartInterpolation {
                                                   expression: FunctionApplication(
                                                    FunctionApplication {
                                                     function: Identifier(
                                                      Identifier {
                                                       id: "showFiles",
                                                       span: Span {
                                                        start: Position {
                                                         line: 249,
                                                         column: 92,
                                                        },
                                                        end: Position {
                                                         line: 249,
                                                         column: 101,
                                                        },
                                                       },
                                                      },
                                                     ),
                                                     arguments: [
                                                      FunctionApplication(
                                                       FunctionApplication {
                                                        function: Identifier(
                                                         Identifier {
                                                          id: "getFiles",
                                                          span: Span {
                                                           start: Position {
                                                            line: 249,
                                                            column: 103,
                                                           },
                                                           end: Position {
                                                            line: 249,
                                                            column: 111,
                                                           },
                                                          },
                                                         },
                                                        ),
                                                        arguments: [
                                                         Identifier(
                                                          Identifier {
                                                           id: "defs",
                                                           span: Span {
                                                            start: Position {
                                                             line: 249,
                                                             column: 112,
                                                            },
                                                            end: Position {
                                                             line: 249,
                                                             column: 116,
                                                            },
                                                           },
                                                          },
                                                         ),
                                                        ],
                                                       },
                                                      ),
                                                     ],
                                                    },
                                                   ),
                                                  },
                                                 ),
                                                 Raw(
                                                  PartRaw {
                                                   content: ".",
                                                   span: Span {
                                                    start: Position {
                                                     line: 249,
                                                     column: 27,
                                                    },
                                                    end: Position {
                                                     line: 249,
                                                     column: 119,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                ],
                                                span: Span {
                                                 start: Position {
                                                  line: 249,
                                                  column: 26,
                                                 },
                                                 end: Position {
                                                  line: 249,
                                                  column: 120,
                                                 },
                                                },
                                               },
                                              ),
                                             ],
                                            },
                                           ),
                                           else_: PropertyAccess(
                                            PropertyAccess {
                                             expression: FunctionApplication(
                                              FunctionApplication {
                                               function: Identifier(
                                                Identifier {
                                                 id: "listOf",
                                                 span: Span {
                                                  start: Position {
                                                   line: 250,
                                                   column: 21,
                                                  },
                                                  end: Position {
                                                   line: 250,
                                                   column: 27,
                                                  },
                                                 },
                                                },
                                               ),
                                               arguments: [
                                                Identifier(
                                                 Identifier {
                                                  id: "anything",
                                                  span: Span {
                                                   start: Position {
                                                    line: 250,
                                                    column: 28,
                                                   },
                                                   end: Position {
                                                    line: 250,
                                                    column: 36,
                                                   },
                                                  },
                                                 },
                                                ),
                                               ],
                                              },
                                             ),
                                             attribute_path: [
                                              Raw(
                                               PartRaw {
                                                content: "merge",
                                                span: Span {
                                                 start: Position {
                                                  line: 250,
                                                  column: 38,
                                                 },
                                                 end: Position {
                                                  line: 250,
                                                  column: 43,
                                                 },
                                                },
                                               },
                                              ),
                                             ],
                                             default: None,
                                            },
                                           ),
                                           span: Span {
                                            start: Position {
                                             line: 248,
                                             column: 15,
                                            },
                                            end: Position {
                                             line: 250,
                                             column: 43,
                                            },
                                           },
                                          },
                                         ),
                                        },
                                       ),
                                       KeyValue(
                                        BindingKeyValue {
                                         from: [
                                          Raw(
                                           PartRaw {
                                            content: "stringCoercibleSet",
                                            span: Span {
                                             start: Position {
                                              line: 252,
                                              column: 13,
                                             },
                                             end: Position {
                                              line: 252,
                                              column: 31,
                                             },
                                            },
                                           },
                                          ),
                                         ],
                                         to: Identifier(
                                          Identifier {
                                           id: "mergeOneOption",
                                           span: Span {
                                            start: Position {
                                             line: 252,
                                             column: 34,
                                            },
                                            end: Position {
                                             line: 252,
                                             column: 48,
                                            },
                                           },
                                          },
                                         ),
                                        },
                                       ),
                                       KeyValue(
                                        BindingKeyValue {
                                         from: [
                                          Raw(
                                           PartRaw {
                                            content: "lambda",
                                            span: Span {
                                             start: Position {
                                              line: 253,
                                              column: 13,
                                             },
                                             end: Position {
                                              line: 253,
                                              column: 19,
                                             },
                                            },
                                           },
                                          ),
                                         ],
                                         to: Function(
                                          Function {
                                           head: Simple(
                                            FunctionHeadSimple {
                                             identifier: "loc",
                                            },
                                           ),
                                           body: Function(
                                            Function {
                                             head: Simple(
                                              FunctionHeadSimple {
                                               identifier: "defs",
                                              },
                                             ),
                                             body: Function(
                                              Function {
                                               head: Simple(
                                                FunctionHeadSimple {
                                                 identifier: "arg",
                                                },
                                               ),
                                               body: FunctionApplication(
                                                FunctionApplication {
                                                 function: PropertyAccess(
                                                  PropertyAccess {
                                                   expression: Identifier(
                                                    Identifier {
                                                     id: "anything",
                                                     span: Span {
                                                      start: Position {
                                                       line: 253,
                                                       column: 38,
                                                      },
                                                      end: Position {
                                                       line: 253,
                                                       column: 46,
                                                      },
                                                     },
                                                    },
                                                   ),
                                                   attribute_path: [
                                                    Raw(
                                                     PartRaw {
                                                      content: "merge",
                                                      span: Span {
                                                       start: Position {
                                                        line: 253,
                                                        column: 47,
                                                       },
                                                       end: Position {
                                                        line: 253,
                                                        column: 52,
                                                       },
                                                      },
                                                     },
                                                    ),
                                                   ],
                                                   default: None,
                                                  },
                                                 ),
                                                 arguments: [
                                                  BinaryOperation(
                                                   BinaryOperation {
                                                    left: Identifier(
                                                     Identifier {
                                                      id: "loc",
                                                      span: Span {
                                                       start: Position {
                                                        line: 254,
                                                        column: 16,
                                                       },
                                                       end: Position {
                                                        line: 254,
                                                        column: 19,
                                                       },
                                                      },
                                                     },
                                                    ),
                                                    operator: Concatenation,
                                                    right: List(
                                                     List {
                                                      elements: [
                                                       String(
                                                        String_ {
                                                         parts: [
                                                          Raw(
                                                           PartRaw {
                                                            content: "<function body>",
                                                            span: Span {
                                                             start: Position {
                                                              line: 254,
                                                              column: 26,
                                                             },
                                                             end: Position {
                                                              line: 254,
                                                              column: 41,
                                                             },
                                                            },
                                                           },
                                                          ),
                                                         ],
                                                         span: Span {
                                                          start: Position {
                                                           line: 254,
                                                           column: 25,
                                                          },
                                                          end: Position {
                                                           line: 254,
                                                           column: 42,
                                                          },
                                                         },
                                                        },
                                                       ),
                                                      ],
                                                      span: Span {
                                                       start: Position {
                                                        line: 254,
                                                        column: 23,
                                                       },
                                                       end: Position {
                                                        line: 254,
                                                        column: 44,
                                                       },
                                                      },
                                                     },
                                                    ),
                                                   },
                                                  ),
                                                  FunctionApplication(
                                                   FunctionApplication {
                                                    function: Identifier(
                                                     Identifier {
                                                      id: "map",
                                                      span: Span {
                                                       start: Position {
                                                        line: 255,
                                                        column: 16,
                                                       },
                                                       end: Position {
                                                        line: 255,
                                                        column: 19,
                                                       },
                                                      },
                                                     },
                                                    ),
                                                    arguments: [
                                                     Function(
                                                      Function {
                                                       head: Simple(
                                                        FunctionHeadSimple {
                                                         identifier: "def",
                                                        },
                                                       ),
                                                       body: Map(
                                                        Map {
                                                         recursive: false,
                                                         bindings: [
                                                          KeyValue(
                                                           BindingKeyValue {
                                                            from: [
                                                             Raw(
                                                              PartRaw {
                                                               content: "file",
                                                               span: Span {
                                                                start: Position {
                                                                 line: 256,
                                                                 column: 17,
                                                                },
                                                                end: Position {
                                                                 line: 256,
                                                                 column: 21,
                                                                },
                                                               },
                                                              },
                                                             ),
                                                            ],
                                                            to: PropertyAccess(
                                                             PropertyAccess {
                                                              expression: Identifier(
                                                               Identifier {
                                                                id: "def",
                                                                span: Span {
                                                                 start: Position {
                                                                  line: 256,
                                                                  column: 24,
                                                                 },
                                                                 end: Position {
                                                                  line: 256,
                                                                  column: 27,
                                                                 },
                                                                },
                                                               },
                                                              ),
                                                              attribute_path: [
                                                               Raw(
                                                                PartRaw {
                                                                 content: "file",
                                                                 span: Span {
                                                                  start: Position {
                                                                   line: 256,
                                                                   column: 28,
                                                                  },
                                                                  end: Position {
                                                                   line: 256,
                                                                   column: 32,
                                                                  },
                                                                 },
                                                                },
                                                               ),
                                                              ],
                                                              default: None,
                                                             },
                                                            ),
                                                           },
                                                          ),
                                                          KeyValue(
                                                           BindingKeyValue {
                                                            from: [
                                                             Raw(
                                                              PartRaw {
                                                               content: "value",
                                                               span: Span {
                                                                start: Position {
                                                                 line: 257,
                                                                 column: 17,
                                                                },
                                                                end: Position {
                                                                 line: 257,
                                                                 column: 22,
                                                                },
                                                               },
                                                              },
                                                             ),
                                                            ],
                                                            to: FunctionApplication(
                                                             FunctionApplication {
                                                              function: PropertyAccess(
                                                               PropertyAccess {
                                                                expression: Identifier(
                                                                 Identifier {
                                                                  id: "def",
                                                                  span: Span {
                                                                   start: Position {
                                                                    line: 257,
                                                                    column: 25,
                                                                   },
                                                                   end: Position {
                                                                    line: 257,
                                                                    column: 28,
                                                                   },
                                                                  },
                                                                 },
                                                                ),
                                                                attribute_path: [
                                                                 Raw(
                                                                  PartRaw {
                                                                   content: "value",
                                                                   span: Span {
                                                                    start: Position {
                                                                     line: 257,
                                                                     column: 29,
                                                                    },
                                                                    end: Position {
                                                                     line: 257,
                                                                     column: 34,
                                                                    },
                                                                   },
                                                                  },
                                                                 ),
                                                                ],
                                                                default: None,
                                                               },
                                                              ),
                                                              arguments: [
                                                               Identifier(
                                                                Identifier {
                                                                 id: "arg",
                                                                 span: Span {
                                                                  start: Position {
                                                                   line: 257,
                                                                   column: 35,
                                                                  },
                                                                  end: Position {
                                                                   line: 257,
                                                                   column: 38,
                                                                  },
                                                                 },
                                                                },
                                                               ),
                                                              ],
                                                             },
                                                            ),
                                                           },
                                                          ),
                                                         ],
                                                         span: Span {
                                                          start: Position {
                                                           line: 255,
                                                           column: 26,
                                                          },
                                                          end: Position {
                                                           line: 258,
                                                           column: 16,
                                                          },
                                                         },
                                                        },
                                                       ),
                                                       span: Span {
                                                        start: Position {
                                                         line: 255,
                                                         column: 21,
                                                        },
                                                        end: Position {
                                                         line: 258,
                                                         column: 16,
                                                        },
                                                       },
                                                      },
                                                     ),
                                                     Identifier(
                                                      Identifier {
                                                       id: "defs",
                                                       span: Span {
                                                        start: Position {
                                                         line: 258,
                                                         column: 18,
                                                        },
                                                        end: Position {
                                                         line: 258,
                                                         column: 22,
                                                        },
                                                       },
                                                      },
                                                     ),
                                                    ],
                                                   },
                                                  ),
                                                 ],
                                                },
                                               ),
                                               span: Span {
                                                start: Position {
                                                 line: 253,
                                                 column: 33,
                                                },
                                                end: Position {
                                                 line: 258,
                                                 column: 23,
                                                },
                                               },
                                              },
                                             ),
                                             span: Span {
                                              start: Position {
                                               line: 253,
                                               column: 27,
                                              },
                                              end: Position {
                                               line: 258,
                                               column: 23,
                                              },
                                             },
                                            },
                                           ),
                                           span: Span {
                                            start: Position {
                                             line: 253,
                                             column: 22,
                                            },
                                            end: Position {
                                             line: 258,
                                             column: 23,
                                            },
                                           },
                                          },
                                         ),
                                        },
                                       ),
                                      ],
                                      span: Span {
                                       start: Position {
                                        line: 242,
                                        column: 27,
                                       },
                                       end: Position {
                                        line: 260,
                                        column: 12,
                                       },
                                      },
                                     },
                                    ),
                                    attribute_path: [
                                     Interpolation(
                                      PartInterpolation {
                                       expression: Identifier(
                                        Identifier {
                                         id: "commonType",
                                         span: Span {
                                          start: Position {
                                           line: 260,
                                           column: 15,
                                          },
                                          end: Position {
                                           line: 260,
                                           column: 25,
                                          },
                                         },
                                        },
                                       ),
                                      },
                                     ),
                                    ],
                                    default: Some(
                                     Identifier(
                                      Identifier {
                                       id: "mergeEqualOption",
                                       span: Span {
                                        start: Position {
                                         line: 260,
                                         column: 30,
                                        },
                                        end: Position {
                                         line: 260,
                                         column: 46,
                                        },
                                       },
                                      },
                                     ),
                                    ),
                                   },
                                  ),
                                 },
                                ),
                               ],
                               target: FunctionApplication(
                                FunctionApplication {
                                 function: Identifier(
                                  Identifier {
                                   id: "mergeFunction",
                                   span: Span {
                                    start: Position {
                                     line: 261,
                                     column: 12,
                                    },
                                    end: Position {
                                     line: 261,
                                     column: 25,
                                    },
                                   },
                                  },
                                 ),
                                 arguments: [
                                  Identifier(
                                   Identifier {
                                    id: "loc",
                                    span: Span {
                                     start: Position {
                                      line: 261,
                                      column: 26,
                                     },
                                     end: Position {
                                      line: 261,
                                      column: 29,
                                     },
                                    },
                                   },
                                  ),
                                  Identifier(
                                   Identifier {
                                    id: "defs",
                                    span: Span {
                                     start: Position {
                                      line: 261,
                                      column: 30,
                                     },
                                     end: Position {
                                      line: 261,
                                      column: 34,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 228,
                                 column: 9,
                                },
                                end: Position {
                                 line: 261,
                                 column: 34,
                                },
                               },
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 227,
                               column: 20,
                              },
                              end: Position {
                               line: 261,
                               column: 34,
                              },
                             },
                            },
                           ),
                           span: Span {
                            start: Position {
                             line: 227,
                             column: 15,
                            },
                            end: Position {
                             line: 261,
                             column: 34,
                            },
                           },
                          },
                         ),
                        },
                       ),
                      ],
                      span: Span {
                       start: Position {
                        line: 222,
                        column: 29,
                       },
                       end: Position {
                        line: 262,
                        column: 6,
                       },
                      },
                     },
                    ),
                   ],
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "unspecified",
                    span: Span {
                     start: Position {
                      line: 264,
                      column: 5,
                     },
                     end: Position {
                      line: 264,
                      column: 16,
                     },
                    },
                   },
                  ),
                 ],
                 to: FunctionApplication(
                  FunctionApplication {
                   function: Identifier(
                    Identifier {
                     id: "mkOptionType",
                     span: Span {
                      start: Position {
                       line: 264,
                       column: 19,
                      },
                      end: Position {
                       line: 264,
                       column: 31,
                      },
                     },
                    },
                   ),
                   arguments: [
                    Map(
                     Map {
                      recursive: false,
                      bindings: [
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "name",
                            span: Span {
                             start: Position {
                              line: 265,
                              column: 7,
                             },
                             end: Position {
                              line: 265,
                              column: 11,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "unspecified",
                              span: Span {
                               start: Position {
                                line: 265,
                                column: 15,
                               },
                               end: Position {
                                line: 265,
                                column: 26,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 265,
                             column: 14,
                            },
                            end: Position {
                             line: 265,
                             column: 27,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "description",
                            span: Span {
                             start: Position {
                              line: 266,
                              column: 7,
                             },
                             end: Position {
                              line: 266,
                              column: 18,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "unspecified value",
                              span: Span {
                               start: Position {
                                line: 266,
                                column: 22,
                               },
                               end: Position {
                                line: 266,
                                column: 39,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 266,
                             column: 21,
                            },
                            end: Position {
                             line: 266,
                             column: 40,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "descriptionClass",
                            span: Span {
                             start: Position {
                              line: 267,
                              column: 7,
                             },
                             end: Position {
                              line: 267,
                              column: 23,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "noun",
                              span: Span {
                               start: Position {
                                line: 267,
                                column: 27,
                               },
                               end: Position {
                                line: 267,
                                column: 31,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 267,
                             column: 26,
                            },
                            end: Position {
                             line: 267,
                             column: 32,
                            },
                           },
                          },
                         ),
                        },
                       ),
                      ],
                      span: Span {
                       start: Position {
                        line: 264,
                        column: 32,
                       },
                       end: Position {
                        line: 268,
                        column: 6,
                       },
                      },
                     },
                    ),
                   ],
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "bool",
                    span: Span {
                     start: Position {
                      line: 270,
                      column: 5,
                     },
                     end: Position {
                      line: 270,
                      column: 9,
                     },
                    },
                   },
                  ),
                 ],
                 to: FunctionApplication(
                  FunctionApplication {
                   function: Identifier(
                    Identifier {
                     id: "mkOptionType",
                     span: Span {
                      start: Position {
                       line: 270,
                       column: 12,
                      },
                      end: Position {
                       line: 270,
                       column: 24,
                      },
                     },
                    },
                   ),
                   arguments: [
                    Map(
                     Map {
                      recursive: false,
                      bindings: [
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "name",
                            span: Span {
                             start: Position {
                              line: 271,
                              column: 7,
                             },
                             end: Position {
                              line: 271,
                              column: 11,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "bool",
                              span: Span {
                               start: Position {
                                line: 271,
                                column: 15,
                               },
                               end: Position {
                                line: 271,
                                column: 19,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 271,
                             column: 14,
                            },
                            end: Position {
                             line: 271,
                             column: 20,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "description",
                            span: Span {
                             start: Position {
                              line: 272,
                              column: 7,
                             },
                             end: Position {
                              line: 272,
                              column: 18,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "boolean",
                              span: Span {
                               start: Position {
                                line: 272,
                                column: 22,
                               },
                               end: Position {
                                line: 272,
                                column: 29,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 272,
                             column: 21,
                            },
                            end: Position {
                             line: 272,
                             column: 30,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "descriptionClass",
                            span: Span {
                             start: Position {
                              line: 273,
                              column: 7,
                             },
                             end: Position {
                              line: 273,
                              column: 23,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "noun",
                              span: Span {
                               start: Position {
                                line: 273,
                                column: 27,
                               },
                               end: Position {
                                line: 273,
                                column: 31,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 273,
                             column: 26,
                            },
                            end: Position {
                             line: 273,
                             column: 32,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "check",
                            span: Span {
                             start: Position {
                              line: 274,
                              column: 7,
                             },
                             end: Position {
                              line: 274,
                              column: 12,
                             },
                            },
                           },
                          ),
                         ],
                         to: Identifier(
                          Identifier {
                           id: "isBool",
                           span: Span {
                            start: Position {
                             line: 274,
                             column: 15,
                            },
                            end: Position {
                             line: 274,
                             column: 21,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "merge",
                            span: Span {
                             start: Position {
                              line: 275,
                              column: 7,
                             },
                             end: Position {
                              line: 275,
                              column: 12,
                             },
                            },
                           },
                          ),
                         ],
                         to: Identifier(
                          Identifier {
                           id: "mergeEqualOption",
                           span: Span {
                            start: Position {
                             line: 275,
                             column: 15,
                            },
                            end: Position {
                             line: 275,
                             column: 31,
                            },
                           },
                          },
                         ),
                        },
                       ),
                      ],
                      span: Span {
                       start: Position {
                        line: 270,
                        column: 25,
                       },
                       end: Position {
                        line: 276,
                        column: 6,
                       },
                      },
                     },
                    ),
                   ],
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "int",
                    span: Span {
                     start: Position {
                      line: 278,
                      column: 5,
                     },
                     end: Position {
                      line: 278,
                      column: 8,
                     },
                    },
                   },
                  ),
                 ],
                 to: FunctionApplication(
                  FunctionApplication {
                   function: Identifier(
                    Identifier {
                     id: "mkOptionType",
                     span: Span {
                      start: Position {
                       line: 278,
                       column: 11,
                      },
                      end: Position {
                       line: 278,
                       column: 23,
                      },
                     },
                    },
                   ),
                   arguments: [
                    Map(
                     Map {
                      recursive: false,
                      bindings: [
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "name",
                            span: Span {
                             start: Position {
                              line: 279,
                              column: 7,
                             },
                             end: Position {
                              line: 279,
                              column: 11,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "int",
                              span: Span {
                               start: Position {
                                line: 279,
                                column: 15,
                               },
                               end: Position {
                                line: 279,
                                column: 18,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 279,
                             column: 14,
                            },
                            end: Position {
                             line: 279,
                             column: 19,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "description",
                            span: Span {
                             start: Position {
                              line: 280,
                              column: 7,
                             },
                             end: Position {
                              line: 280,
                              column: 18,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "signed integer",
                              span: Span {
                               start: Position {
                                line: 280,
                                column: 22,
                               },
                               end: Position {
                                line: 280,
                                column: 36,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 280,
                             column: 21,
                            },
                            end: Position {
                             line: 280,
                             column: 37,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "descriptionClass",
                            span: Span {
                             start: Position {
                              line: 281,
                              column: 7,
                             },
                             end: Position {
                              line: 281,
                              column: 23,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "noun",
                              span: Span {
                               start: Position {
                                line: 281,
                                column: 27,
                               },
                               end: Position {
                                line: 281,
                                column: 31,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 281,
                             column: 26,
                            },
                            end: Position {
                             line: 281,
                             column: 32,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "check",
                            span: Span {
                             start: Position {
                              line: 282,
                              column: 7,
                             },
                             end: Position {
                              line: 282,
                              column: 12,
                             },
                            },
                           },
                          ),
                         ],
                         to: Identifier(
                          Identifier {
                           id: "isInt",
                           span: Span {
                            start: Position {
                             line: 282,
                             column: 15,
                            },
                            end: Position {
                             line: 282,
                             column: 20,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "merge",
                            span: Span {
                             start: Position {
                              line: 283,
                              column: 7,
                             },
                             end: Position {
                              line: 283,
                              column: 12,
                             },
                            },
                           },
                          ),
                         ],
                         to: Identifier(
                          Identifier {
                           id: "mergeEqualOption",
                           span: Span {
                            start: Position {
                             line: 283,
                             column: 15,
                            },
                            end: Position {
                             line: 283,
                             column: 31,
                            },
                           },
                          },
                         ),
                        },
                       ),
                      ],
                      span: Span {
                       start: Position {
                        line: 278,
                        column: 24,
                       },
                       end: Position {
                        line: 284,
                        column: 6,
                       },
                      },
                     },
                    ),
                   ],
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "ints",
                    span: Span {
                     start: Position {
                      line: 287,
                      column: 5,
                     },
                     end: Position {
                      line: 287,
                      column: 9,
                     },
                    },
                   },
                  ),
                 ],
                 to: LetIn(
                  LetIn {
                   bindings: [
                    KeyValue(
                     BindingKeyValue {
                      from: [
                       Raw(
                        PartRaw {
                         content: "betweenDesc",
                         span: Span {
                          start: Position {
                           line: 289,
                           column: 9,
                          },
                          end: Position {
                           line: 289,
                           column: 20,
                          },
                         },
                        },
                       ),
                      ],
                      to: Function(
                       Function {
                        head: Simple(
                         FunctionHeadSimple {
                          identifier: "lowest",
                         },
                        ),
                        body: Function(
                         Function {
                          head: Simple(
                           FunctionHeadSimple {
                            identifier: "highest",
                           },
                          ),
                          body: String(
                           String_ {
                            parts: [
                             Interpolation(
                              PartInterpolation {
                               expression: FunctionApplication(
                                FunctionApplication {
                                 function: Identifier(
                                  Identifier {
                                   id: "toString",
                                   span: Span {
                                    start: Position {
                                     line: 290,
                                     column: 14,
                                    },
                                    end: Position {
                                     line: 290,
                                     column: 22,
                                    },
                                   },
                                  },
                                 ),
                                 arguments: [
                                  Identifier(
                                   Identifier {
                                    id: "lowest",
                                    span: Span {
                                     start: Position {
                                      line: 290,
                                      column: 23,
                                     },
                                     end: Position {
                                      line: 290,
                                      column: 29,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                },
                               ),
                              },
                             ),
                             Raw(
                              PartRaw {
                               content: " and ",
                               span: Span {
                                start: Position {
                                 line: 290,
                                 column: 12,
                                },
                                end: Position {
                                 line: 290,
                                 column: 35,
                                },
                               },
                              },
                             ),
                             Interpolation(
                              PartInterpolation {
                               expression: FunctionApplication(
                                FunctionApplication {
                                 function: Identifier(
                                  Identifier {
                                   id: "toString",
                                   span: Span {
                                    start: Position {
                                     line: 290,
                                     column: 37,
                                    },
                                    end: Position {
                                     line: 290,
                                     column: 45,
                                    },
                                   },
                                  },
                                 ),
                                 arguments: [
                                  Identifier(
                                   Identifier {
                                    id: "highest",
                                    span: Span {
                                     start: Position {
                                      line: 290,
                                      column: 46,
                                     },
                                     end: Position {
                                      line: 290,
                                      column: 53,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                },
                               ),
                              },
                             ),
                             Raw(
                              PartRaw {
                               content: " (both inclusive)",
                               span: Span {
                                start: Position {
                                 line: 290,
                                 column: 12,
                                },
                                end: Position {
                                 line: 290,
                                 column: 71,
                                },
                               },
                              },
                             ),
                            ],
                            span: Span {
                             start: Position {
                              line: 290,
                              column: 11,
                             },
                             end: Position {
                              line: 290,
                              column: 72,
                             },
                            },
                           },
                          ),
                          span: Span {
                           start: Position {
                            line: 289,
                            column: 31,
                           },
                           end: Position {
                            line: 290,
                            column: 72,
                           },
                          },
                         },
                        ),
                        span: Span {
                         start: Position {
                          line: 289,
                          column: 23,
                         },
                         end: Position {
                          line: 290,
                          column: 72,
                         },
                        },
                       },
                      ),
                     },
                    ),
                    KeyValue(
                     BindingKeyValue {
                      from: [
                       Raw(
                        PartRaw {
                         content: "between",
                         span: Span {
                          start: Position {
                           line: 291,
                           column: 9,
                          },
                          end: Position {
                           line: 291,
                           column: 16,
                          },
                         },
                        },
                       ),
                      ],
                      to: Function(
                       Function {
                        head: Simple(
                         FunctionHeadSimple {
                          identifier: "lowest",
                         },
                        ),
                        body: Function(
                         Function {
                          head: Simple(
                           FunctionHeadSimple {
                            identifier: "highest",
                           },
                          ),
                          body: Assert(
                           Assert {
                            expression: FunctionApplication(
                             FunctionApplication {
                              function: PropertyAccess(
                               PropertyAccess {
                                expression: Identifier(
                                 Identifier {
                                  id: "lib",
                                  span: Span {
                                   start: Position {
                                    line: 292,
                                    column: 18,
                                   },
                                   end: Position {
                                    line: 292,
                                    column: 21,
                                   },
                                  },
                                 },
                                ),
                                attribute_path: [
                                 Raw(
                                  PartRaw {
                                   content: "assertMsg",
                                   span: Span {
                                    start: Position {
                                     line: 292,
                                     column: 22,
                                    },
                                    end: Position {
                                     line: 292,
                                     column: 31,
                                    },
                                   },
                                  },
                                 ),
                                ],
                                default: None,
                               },
                              ),
                              arguments: [
                               BinaryOperation(
                                BinaryOperation {
                                 left: Identifier(
                                  Identifier {
                                   id: "lowest",
                                   span: Span {
                                    start: Position {
                                     line: 292,
                                     column: 33,
                                    },
                                    end: Position {
                                     line: 292,
                                     column: 39,
                                    },
                                   },
                                  },
                                 ),
                                 operator: LessThanOrEqualTo,
                                 right: Identifier(
                                  Identifier {
                                   id: "highest",
                                   span: Span {
                                    start: Position {
                                     line: 292,
                                     column: 43,
                                    },
                                    end: Position {
                                     line: 292,
                                     column: 50,
                                    },
                                   },
                                  },
                                 ),
                                },
                               ),
                               String(
                                String_ {
                                 parts: [
                                  Raw(
                                   PartRaw {
                                    content: "ints.between: lowest must be smaller than highest",
                                    span: Span {
                                     start: Position {
                                      line: 293,
                                      column: 14,
                                     },
                                     end: Position {
                                      line: 293,
                                      column: 63,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 span: Span {
                                  start: Position {
                                   line: 293,
                                   column: 13,
                                  },
                                  end: Position {
                                   line: 293,
                                   column: 64,
                                  },
                                 },
                                },
                               ),
                              ],
                             },
                            ),
                            target: BinaryOperation(
                             BinaryOperation {
                              left: FunctionApplication(
                               FunctionApplication {
                                function: Identifier(
                                 Identifier {
                                  id: "addCheck",
                                  span: Span {
                                   start: Position {
                                    line: 294,
                                    column: 11,
                                   },
                                   end: Position {
                                    line: 294,
                                    column: 19,
                                   },
                                  },
                                 },
                                ),
                                arguments: [
                                 Identifier(
                                  Identifier {
                                   id: "int",
                                   span: Span {
                                    start: Position {
                                     line: 294,
                                     column: 20,
                                    },
                                    end: Position {
                                     line: 294,
                                     column: 23,
                                    },
                                   },
                                  },
                                 ),
                                 Function(
                                  Function {
                                   head: Simple(
                                    FunctionHeadSimple {
                                     identifier: "x",
                                    },
                                   ),
                                   body: BinaryOperation(
                                    BinaryOperation {
                                     left: BinaryOperation(
                                      BinaryOperation {
                                       left: Identifier(
                                        Identifier {
                                         id: "x",
                                         span: Span {
                                          start: Position {
                                           line: 294,
                                           column: 28,
                                          },
                                          end: Position {
                                           line: 294,
                                           column: 29,
                                          },
                                         },
                                        },
                                       ),
                                       operator: GreaterThanOrEqualTo,
                                       right: Identifier(
                                        Identifier {
                                         id: "lowest",
                                         span: Span {
                                          start: Position {
                                           line: 294,
                                           column: 33,
                                          },
                                          end: Position {
                                           line: 294,
                                           column: 39,
                                          },
                                         },
                                        },
                                       ),
                                      },
                                     ),
                                     operator: LogicalAnd,
                                     right: BinaryOperation(
                                      BinaryOperation {
                                       left: Identifier(
                                        Identifier {
                                         id: "x",
                                         span: Span {
                                          start: Position {
                                           line: 294,
                                           column: 43,
                                          },
                                          end: Position {
                                           line: 294,
                                           column: 44,
                                          },
                                         },
                                        },
                                       ),
                                       operator: LessThanOrEqualTo,
                                       right: Identifier(
                                        Identifier {
                                         id: "highest",
                                         span: Span {
                                          start: Position {
                                           line: 294,
                                           column: 48,
                                          },
                                          end: Position {
                                           line: 294,
                                           column: 55,
                                          },
                                         },
                                        },
                                       ),
                                      },
                                     ),
                                    },
                                   ),
                                   span: Span {
                                    start: Position {
                                     line: 294,
                                     column: 25,
                                    },
                                    end: Position {
                                     line: 294,
                                     column: 55,
                                    },
                                   },
                                  },
                                 ),
                                ],
                               },
                              ),
                              operator: Update,
                              right: Map(
                               Map {
                                recursive: false,
                                bindings: [
                                 KeyValue(
                                  BindingKeyValue {
                                   from: [
                                    Raw(
                                     PartRaw {
                                      content: "name",
                                      span: Span {
                                       start: Position {
                                        line: 295,
                                        column: 13,
                                       },
                                       end: Position {
                                        line: 295,
                                        column: 17,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   to: String(
                                    String_ {
                                     parts: [
                                      Raw(
                                       PartRaw {
                                        content: "intBetween",
                                        span: Span {
                                         start: Position {
                                          line: 295,
                                          column: 21,
                                         },
                                         end: Position {
                                          line: 295,
                                          column: 31,
                                         },
                                        },
                                       },
                                      ),
                                     ],
                                     span: Span {
                                      start: Position {
                                       line: 295,
                                       column: 20,
                                      },
                                      end: Position {
                                       line: 295,
                                       column: 32,
                                      },
                                     },
                                    },
                                   ),
                                  },
                                 ),
                                 KeyValue(
                                  BindingKeyValue {
                                   from: [
                                    Raw(
                                     PartRaw {
                                      content: "description",
                                      span: Span {
                                       start: Position {
                                        line: 296,
                                        column: 13,
                                       },
                                       end: Position {
                                        line: 296,
                                        column: 24,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   to: String(
                                    String_ {
                                     parts: [
                                      Raw(
                                       PartRaw {
                                        content: "integer between ",
                                        span: Span {
                                         start: Position {
                                          line: 296,
                                          column: 28,
                                         },
                                         end: Position {
                                          line: 296,
                                          column: 73,
                                         },
                                        },
                                       },
                                      ),
                                      Interpolation(
                                       PartInterpolation {
                                        expression: FunctionApplication(
                                         FunctionApplication {
                                          function: Identifier(
                                           Identifier {
                                            id: "betweenDesc",
                                            span: Span {
                                             start: Position {
                                              line: 296,
                                              column: 46,
                                             },
                                             end: Position {
                                              line: 296,
                                              column: 57,
                                             },
                                            },
                                           },
                                          ),
                                          arguments: [
                                           Identifier(
                                            Identifier {
                                             id: "lowest",
                                             span: Span {
                                              start: Position {
                                               line: 296,
                                               column: 58,
                                              },
                                              end: Position {
                                               line: 296,
                                               column: 64,
                                              },
                                             },
                                            },
                                           ),
                                           Identifier(
                                            Identifier {
                                             id: "highest",
                                             span: Span {
                                              start: Position {
                                               line: 296,
                                               column: 65,
                                              },
                                              end: Position {
                                               line: 296,
                                               column: 72,
                                              },
                                             },
                                            },
                                           ),
                                          ],
                                         },
                                        ),
                                       },
                                      ),
                                     ],
                                     span: Span {
                                      start: Position {
                                       line: 296,
                                       column: 27,
                                      },
                                      end: Position {
                                       line: 296,
                                       column: 74,
                                      },
                                     },
                                    },
                                   ),
                                  },
                                 ),
                                ],
                                span: Span {
                                 start: Position {
                                  line: 294,
                                  column: 60,
                                 },
                                 end: Position {
                                  line: 297,
                                  column: 12,
                                 },
                                },
                               },
                              ),
                             },
                            ),
                            span: Span {
                             start: Position {
                              line: 292,
                              column: 11,
                             },
                             end: Position {
                              line: 297,
                              column: 12,
                             },
                            },
                           },
                          ),
                          span: Span {
                           start: Position {
                            line: 291,
                            column: 27,
                           },
                           end: Position {
                            line: 297,
                            column: 12,
                           },
                          },
                         },
                        ),
                        span: Span {
                         start: Position {
                          line: 291,
                          column: 19,
                         },
                         end: Position {
                          line: 297,
                          column: 12,
                         },
                        },
                       },
                      ),
                     },
                    ),
                    KeyValue(
                     BindingKeyValue {
                      from: [
                       Raw(
                        PartRaw {
                         content: "ign",
                         span: Span {
                          start: Position {
                           line: 298,
                           column: 9,
                          },
                          end: Position {
                           line: 298,
                           column: 12,
                          },
                         },
                        },
                       ),
                      ],
                      to: Function(
                       Function {
                        head: Simple(
                         FunctionHeadSimple {
                          identifier: "lowest",
                         },
                        ),
                        body: Function(
                         Function {
                          head: Simple(
                           FunctionHeadSimple {
                            identifier: "highest",
                           },
                          ),
                          body: Function(
                           Function {
                            head: Simple(
                             FunctionHeadSimple {
                              identifier: "name",
                             },
                            ),
                            body: Function(
                             Function {
                              head: Simple(
                               FunctionHeadSimple {
                                identifier: "docStart",
                               },
                              ),
                              body: BinaryOperation(
                               BinaryOperation {
                                left: FunctionApplication(
                                 FunctionApplication {
                                  function: Identifier(
                                   Identifier {
                                    id: "between",
                                    span: Span {
                                     start: Position {
                                      line: 299,
                                      column: 11,
                                     },
                                     end: Position {
                                      line: 299,
                                      column: 18,
                                     },
                                    },
                                   },
                                  ),
                                  arguments: [
                                   Identifier(
                                    Identifier {
                                     id: "lowest",
                                     span: Span {
                                      start: Position {
                                       line: 299,
                                       column: 19,
                                      },
                                      end: Position {
                                       line: 299,
                                       column: 25,
                                      },
                                     },
                                    },
                                   ),
                                   Identifier(
                                    Identifier {
                                     id: "highest",
                                     span: Span {
                                      start: Position {
                                       line: 299,
                                       column: 26,
                                      },
                                      end: Position {
                                       line: 299,
                                       column: 33,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                 },
                                ),
                                operator: Update,
                                right: Map(
                                 Map {
                                  recursive: false,
                                  bindings: [
                                   Inherit(
                                    BindingInherit {
                                     from: None,
                                     attributes: [
                                      Raw(
                                       PartRaw {
                                        content: "name",
                                        span: Span {
                                         start: Position {
                                          line: 300,
                                          column: 21,
                                         },
                                         end: Position {
                                          line: 300,
                                          column: 25,
                                         },
                                        },
                                       },
                                      ),
                                     ],
                                     span: Span {
                                      start: Position {
                                       line: 299,
                                       column: 38,
                                      },
                                      end: Position {
                                       line: 300,
                                       column: 26,
                                      },
                                     },
                                    },
                                   ),
                                   KeyValue(
                                    BindingKeyValue {
                                     from: [
                                      Raw(
                                       PartRaw {
                                        content: "description",
                                        span: Span {
                                         start: Position {
                                          line: 301,
                                          column: 13,
                                         },
                                         end: Position {
                                          line: 301,
                                          column: 24,
                                         },
                                        },
                                       },
                                      ),
                                     ],
                                     to: BinaryOperation(
                                      BinaryOperation {
                                       left: Identifier(
                                        Identifier {
                                         id: "docStart",
                                         span: Span {
                                          start: Position {
                                           line: 301,
                                           column: 27,
                                          },
                                          end: Position {
                                           line: 301,
                                           column: 35,
                                          },
                                         },
                                        },
                                       ),
                                       operator: Addition,
                                       right: String(
                                        String_ {
                                         parts: [
                                          Raw(
                                           PartRaw {
                                            content: "; between ",
                                            span: Span {
                                             start: Position {
                                              line: 301,
                                              column: 39,
                                             },
                                             end: Position {
                                              line: 301,
                                              column: 78,
                                             },
                                            },
                                           },
                                          ),
                                          Interpolation(
                                           PartInterpolation {
                                            expression: FunctionApplication(
                                             FunctionApplication {
                                              function: Identifier(
                                               Identifier {
                                                id: "betweenDesc",
                                                span: Span {
                                                 start: Position {
                                                  line: 301,
                                                  column: 51,
                                                 },
                                                 end: Position {
                                                  line: 301,
                                                  column: 62,
                                                 },
                                                },
                                               },
                                              ),
                                              arguments: [
                                               Identifier(
                                                Identifier {
                                                 id: "lowest",
                                                 span: Span {
                                                  start: Position {
                                                   line: 301,
                                                   column: 63,
                                                  },
                                                  end: Position {
                                                   line: 301,
                                                   column: 69,
                                                  },
                                                 },
                                                },
                                               ),
                                               Identifier(
                                                Identifier {
                                                 id: "highest",
                                                 span: Span {
                                                  start: Position {
                                                   line: 301,
                                                   column: 70,
                                                  },
                                                  end: Position {
                                                   line: 301,
                                                   column: 77,
                                                  },
                                                 },
                                                },
                                               ),
                                              ],
                                             },
                                            ),
                                           },
                                          ),
                                         ],
                                         span: Span {
                                          start: Position {
                                           line: 301,
                                           column: 38,
                                          },
                                          end: Position {
                                           line: 301,
                                           column: 79,
                                          },
                                         },
                                        },
                                       ),
                                      },
                                     ),
                                    },
                                   ),
                                  ],
                                  span: Span {
                                   start: Position {
                                    line: 299,
                                    column: 37,
                                   },
                                   end: Position {
                                    line: 302,
                                    column: 12,
                                   },
                                  },
                                 },
                                ),
                               },
                              ),
                              span: Span {
                               start: Position {
                                line: 298,
                                column: 38,
                               },
                               end: Position {
                                line: 302,
                                column: 12,
                               },
                              },
                             },
                            ),
                            span: Span {
                             start: Position {
                              line: 298,
                              column: 32,
                             },
                             end: Position {
                              line: 302,
                              column: 12,
                             },
                            },
                           },
                          ),
                          span: Span {
                           start: Position {
                            line: 298,
                            column: 23,
                           },
                           end: Position {
                            line: 302,
                            column: 12,
                           },
                          },
                         },
                        ),
                        span: Span {
                         start: Position {
                          line: 298,
                          column: 15,
                         },
                         end: Position {
                          line: 302,
                          column: 12,
                         },
                        },
                       },
                      ),
                     },
                    ),
                    KeyValue(
                     BindingKeyValue {
                      from: [
                       Raw(
                        PartRaw {
                         content: "unsign",
                         span: Span {
                          start: Position {
                           line: 303,
                           column: 9,
                          },
                          end: Position {
                           line: 303,
                           column: 15,
                          },
                         },
                        },
                       ),
                      ],
                      to: Function(
                       Function {
                        head: Simple(
                         FunctionHeadSimple {
                          identifier: "bit",
                         },
                        ),
                        body: Function(
                         Function {
                          head: Simple(
                           FunctionHeadSimple {
                            identifier: "range",
                           },
                          ),
                          body: FunctionApplication(
                           FunctionApplication {
                            function: Identifier(
                             Identifier {
                              id: "ign",
                              span: Span {
                               start: Position {
                                line: 303,
                                column: 30,
                               },
                               end: Position {
                                line: 303,
                                column: 33,
                               },
                              },
                             },
                            ),
                            arguments: [
                             Integer(
                              Integer {
                               value: "0",
                               span: Span {
                                start: Position {
                                 line: 303,
                                 column: 34,
                                },
                                end: Position {
                                 line: 303,
                                 column: 35,
                                },
                               },
                              },
                             ),
                             BinaryOperation(
                              BinaryOperation {
                               left: Identifier(
                                Identifier {
                                 id: "range",
                                 span: Span {
                                  start: Position {
                                   line: 303,
                                   column: 37,
                                  },
                                  end: Position {
                                   line: 303,
                                   column: 42,
                                  },
                                 },
                                },
                               ),
                               operator: Subtraction,
                               right: Integer(
                                Integer {
                                 value: "1",
                                 span: Span {
                                  start: Position {
                                   line: 303,
                                   column: 45,
                                  },
                                  end: Position {
                                   line: 303,
                                   column: 46,
                                  },
                                 },
                                },
                               ),
                              },
                             ),
                             String(
                              String_ {
                               parts: [
                                Raw(
                                 PartRaw {
                                  content: "unsignedInt",
                                  span: Span {
                                   start: Position {
                                    line: 304,
                                    column: 12,
                                   },
                                   end: Position {
                                    line: 304,
                                    column: 38,
                                   },
                                  },
                                 },
                                ),
                                Interpolation(
                                 PartInterpolation {
                                  expression: FunctionApplication(
                                   FunctionApplication {
                                    function: Identifier(
                                     Identifier {
                                      id: "toString",
                                      span: Span {
                                       start: Position {
                                        line: 304,
                                        column: 25,
                                       },
                                       end: Position {
                                        line: 304,
                                        column: 33,
                                       },
                                      },
                                     },
                                    ),
                                    arguments: [
                                     Identifier(
                                      Identifier {
                                       id: "bit",
                                       span: Span {
                                        start: Position {
                                         line: 304,
                                         column: 34,
                                        },
                                        end: Position {
                                         line: 304,
                                         column: 37,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                   },
                                  ),
                                 },
                                ),
                               ],
                               span: Span {
                                start: Position {
                                 line: 304,
                                 column: 11,
                                },
                                end: Position {
                                 line: 304,
                                 column: 39,
                                },
                               },
                              },
                             ),
                             String(
                              String_ {
                               parts: [
                                Interpolation(
                                 PartInterpolation {
                                  expression: FunctionApplication(
                                   FunctionApplication {
                                    function: Identifier(
                                     Identifier {
                                      id: "toString",
                                      span: Span {
                                       start: Position {
                                        line: 304,
                                        column: 43,
                                       },
                                       end: Position {
                                        line: 304,
                                        column: 51,
                                       },
                                      },
                                     },
                                    ),
                                    arguments: [
                                     Identifier(
                                      Identifier {
                                       id: "bit",
                                       span: Span {
                                        start: Position {
                                         line: 304,
                                         column: 52,
                                        },
                                        end: Position {
                                         line: 304,
                                         column: 55,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                   },
                                  ),
                                 },
                                ),
                                Raw(
                                 PartRaw {
                                  content: " bit unsigned integer",
                                  span: Span {
                                   start: Position {
                                    line: 304,
                                    column: 41,
                                   },
                                   end: Position {
                                    line: 304,
                                    column: 77,
                                   },
                                  },
                                 },
                                ),
                               ],
                               span: Span {
                                start: Position {
                                 line: 304,
                                 column: 40,
                                },
                                end: Position {
                                 line: 304,
                                 column: 78,
                                },
                               },
                              },
                             ),
                            ],
                           },
                          ),
                          span: Span {
                           start: Position {
                            line: 303,
                            column: 23,
                           },
                           end: Position {
                            line: 304,
                            column: 78,
                           },
                          },
                         },
                        ),
                        span: Span {
                         start: Position {
                          line: 303,
                          column: 18,
                         },
                         end: Position {
                          line: 304,
                          column: 78,
                         },
                        },
                       },
                      ),
                     },
                    ),
                    KeyValue(
                     BindingKeyValue {
                      from: [
                       Raw(
                        PartRaw {
                         content: "sign",
                         span: Span {
                          start: Position {
                           line: 305,
                           column: 9,
                          },
                          end: Position {
                           line: 305,
                           column: 13,
                          },
                         },
                        },
                       ),
                      ],
                      to: Function(
                       Function {
                        head: Simple(
                         FunctionHeadSimple {
                          identifier: "bit",
                         },
                        ),
                        body: Function(
                         Function {
                          head: Simple(
                           FunctionHeadSimple {
                            identifier: "range",
                           },
                          ),
                          body: FunctionApplication(
                           FunctionApplication {
                            function: Identifier(
                             Identifier {
                              id: "ign",
                              span: Span {
                               start: Position {
                                line: 305,
                                column: 28,
                               },
                               end: Position {
                                line: 305,
                                column: 31,
                               },
                              },
                             },
                            ),
                            arguments: [
                             BinaryOperation(
                              BinaryOperation {
                               left: Integer(
                                Integer {
                                 value: "0",
                                 span: Span {
                                  start: Position {
                                   line: 305,
                                   column: 33,
                                  },
                                  end: Position {
                                   line: 305,
                                   column: 34,
                                  },
                                 },
                                },
                               ),
                               operator: Subtraction,
                               right: BinaryOperation(
                                BinaryOperation {
                                 left: Identifier(
                                  Identifier {
                                   id: "range",
                                   span: Span {
                                    start: Position {
                                     line: 305,
                                     column: 38,
                                    },
                                    end: Position {
                                     line: 305,
                                     column: 43,
                                    },
                                   },
                                  },
                                 ),
                                 operator: Division,
                                 right: Integer(
                                  Integer {
                                   value: "2",
                                   span: Span {
                                    start: Position {
                                     line: 305,
                                     column: 46,
                                    },
                                    end: Position {
                                     line: 305,
                                     column: 47,
                                    },
                                   },
                                  },
                                 ),
                                },
                               ),
                              },
                             ),
                             BinaryOperation(
                              BinaryOperation {
                               left: BinaryOperation(
                                BinaryOperation {
                                 left: Identifier(
                                  Identifier {
                                   id: "range",
                                   span: Span {
                                    start: Position {
                                     line: 305,
                                     column: 51,
                                    },
                                    end: Position {
                                     line: 305,
                                     column: 56,
                                    },
                                   },
                                  },
                                 ),
                                 operator: Division,
                                 right: Integer(
                                  Integer {
                                   value: "2",
                                   span: Span {
                                    start: Position {
                                     line: 305,
                                     column: 59,
                                    },
                                    end: Position {
                                     line: 305,
                                     column: 60,
                                    },
                                   },
                                  },
                                 ),
                                },
                               ),
                               operator: Subtraction,
                               right: Integer(
                                Integer {
                                 value: "1",
                                 span: Span {
                                  start: Position {
                                   line: 305,
                                   column: 63,
                                  },
                                  end: Position {
                                   line: 305,
                                   column: 64,
                                  },
                                 },
                                },
                               ),
                              },
                             ),
                             String(
                              String_ {
                               parts: [
                                Raw(
                                 PartRaw {
                                  content: "signedInt",
                                  span: Span {
                                   start: Position {
                                    line: 306,
                                    column: 12,
                                   },
                                   end: Position {
                                    line: 306,
                                    column: 36,
                                   },
                                  },
                                 },
                                ),
                                Interpolation(
                                 PartInterpolation {
                                  expression: FunctionApplication(
                                   FunctionApplication {
                                    function: Identifier(
                                     Identifier {
                                      id: "toString",
                                      span: Span {
                                       start: Position {
                                        line: 306,
                                        column: 23,
                                       },
                                       end: Position {
                                        line: 306,
                                        column: 31,
                                       },
                                      },
                                     },
                                    ),
                                    arguments: [
                                     Identifier(
                                      Identifier {
                                       id: "bit",
                                       span: Span {
                                        start: Position {
                                         line: 306,
                                         column: 32,
                                        },
                                        end: Position {
                                         line: 306,
                                         column: 35,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                   },
                                  ),
                                 },
                                ),
                               ],
                               span: Span {
                                start: Position {
                                 line: 306,
                                 column: 11,
                                },
                                end: Position {
                                 line: 306,
                                 column: 37,
                                },
                               },
                              },
                             ),
                             String(
                              String_ {
                               parts: [
                                Interpolation(
                                 PartInterpolation {
                                  expression: FunctionApplication(
                                   FunctionApplication {
                                    function: Identifier(
                                     Identifier {
                                      id: "toString",
                                      span: Span {
                                       start: Position {
                                        line: 306,
                                        column: 41,
                                       },
                                       end: Position {
                                        line: 306,
                                        column: 49,
                                       },
                                      },
                                     },
                                    ),
                                    arguments: [
                                     Identifier(
                                      Identifier {
                                       id: "bit",
                                       span: Span {
                                        start: Position {
                                         line: 306,
                                         column: 50,
                                        },
                                        end: Position {
                                         line: 306,
                                         column: 53,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                   },
                                  ),
                                 },
                                ),
                                Raw(
                                 PartRaw {
                                  content: " bit signed integer",
                                  span: Span {
                                   start: Position {
                                    line: 306,
                                    column: 39,
                                   },
                                   end: Position {
                                    line: 306,
                                    column: 73,
                                   },
                                  },
                                 },
                                ),
                               ],
                               span: Span {
                                start: Position {
                                 line: 306,
                                 column: 38,
                                },
                                end: Position {
                                 line: 306,
                                 column: 74,
                                },
                               },
                              },
                             ),
                            ],
                           },
                          ),
                          span: Span {
                           start: Position {
                            line: 305,
                            column: 21,
                           },
                           end: Position {
                            line: 306,
                            column: 74,
                           },
                          },
                         },
                        ),
                        span: Span {
                         start: Position {
                          line: 305,
                          column: 16,
                         },
                         end: Position {
                          line: 306,
                          column: 74,
                         },
                        },
                       },
                      ),
                     },
                    ),
                   ],
                   target: Map(
                    Map {
                     recursive: false,
                     bindings: [
                      Inherit(
                       BindingInherit {
                        from: None,
                        attributes: [
                         Raw(
                          PartRaw {
                           content: "between",
                           span: Span {
                            start: Position {
                             line: 319,
                             column: 17,
                            },
                            end: Position {
                             line: 319,
                             column: 24,
                            },
                           },
                          },
                         ),
                        ],
                        span: Span {
                         start: Position {
                          line: 308,
                          column: 11,
                         },
                         end: Position {
                          line: 319,
                          column: 25,
                         },
                        },
                       },
                      ),
                      KeyValue(
                       BindingKeyValue {
                        from: [
                         Raw(
                          PartRaw {
                           content: "unsigned",
                           span: Span {
                            start: Position {
                             line: 321,
                             column: 9,
                            },
                            end: Position {
                             line: 321,
                             column: 17,
                            },
                           },
                          },
                         ),
                        ],
                        to: BinaryOperation(
                         BinaryOperation {
                          left: FunctionApplication(
                           FunctionApplication {
                            function: Identifier(
                             Identifier {
                              id: "addCheck",
                              span: Span {
                               start: Position {
                                line: 321,
                                column: 20,
                               },
                               end: Position {
                                line: 321,
                                column: 28,
                               },
                              },
                             },
                            ),
                            arguments: [
                             PropertyAccess(
                              PropertyAccess {
                               expression: Identifier(
                                Identifier {
                                 id: "types",
                                 span: Span {
                                  start: Position {
                                   line: 321,
                                   column: 29,
                                  },
                                  end: Position {
                                   line: 321,
                                   column: 34,
                                  },
                                 },
                                },
                               ),
                               attribute_path: [
                                Raw(
                                 PartRaw {
                                  content: "int",
                                  span: Span {
                                   start: Position {
                                    line: 321,
                                    column: 35,
                                   },
                                   end: Position {
                                    line: 321,
                                    column: 38,
                                   },
                                  },
                                 },
                                ),
                               ],
                               default: None,
                              },
                             ),
                             Function(
                              Function {
                               head: Simple(
                                FunctionHeadSimple {
                                 identifier: "x",
                                },
                               ),
                               body: BinaryOperation(
                                BinaryOperation {
                                 left: Identifier(
                                  Identifier {
                                   id: "x",
                                   span: Span {
                                    start: Position {
                                     line: 321,
                                     column: 43,
                                    },
                                    end: Position {
                                     line: 321,
                                     column: 44,
                                    },
                                   },
                                  },
                                 ),
                                 operator: GreaterThanOrEqualTo,
                                 right: Integer(
                                  Integer {
                                   value: "0",
                                   span: Span {
                                    start: Position {
                                     line: 321,
                                     column: 48,
                                    },
                                    end: Position {
                                     line: 321,
                                     column: 49,
                                    },
                                   },
                                  },
                                 ),
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 321,
                                 column: 40,
                                },
                                end: Position {
                                 line: 321,
                                 column: 49,
                                },
                               },
                              },
                             ),
                            ],
                           },
                          ),
                          operator: Update,
                          right: Map(
                           Map {
                            recursive: false,
                            bindings: [
                             KeyValue(
                              BindingKeyValue {
                               from: [
                                Raw(
                                 PartRaw {
                                  content: "name",
                                  span: Span {
                                   start: Position {
                                    line: 322,
                                    column: 11,
                                   },
                                   end: Position {
                                    line: 322,
                                    column: 15,
                                   },
                                  },
                                 },
                                ),
                               ],
                               to: String(
                                String_ {
                                 parts: [
                                  Raw(
                                   PartRaw {
                                    content: "unsignedInt",
                                    span: Span {
                                     start: Position {
                                      line: 322,
                                      column: 19,
                                     },
                                     end: Position {
                                      line: 322,
                                      column: 30,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 span: Span {
                                  start: Position {
                                   line: 322,
                                   column: 18,
                                  },
                                  end: Position {
                                   line: 322,
                                   column: 31,
                                  },
                                 },
                                },
                               ),
                              },
                             ),
                             KeyValue(
                              BindingKeyValue {
                               from: [
                                Raw(
                                 PartRaw {
                                  content: "description",
                                  span: Span {
                                   start: Position {
                                    line: 323,
                                    column: 11,
                                   },
                                   end: Position {
                                    line: 323,
                                    column: 22,
                                   },
                                  },
                                 },
                                ),
                               ],
                               to: String(
                                String_ {
                                 parts: [
                                  Raw(
                                   PartRaw {
                                    content: "unsigned integer, meaning >=0",
                                    span: Span {
                                     start: Position {
                                      line: 323,
                                      column: 26,
                                     },
                                     end: Position {
                                      line: 323,
                                      column: 55,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 span: Span {
                                  start: Position {
                                   line: 323,
                                   column: 25,
                                  },
                                  end: Position {
                                   line: 323,
                                   column: 56,
                                  },
                                 },
                                },
                               ),
                              },
                             ),
                            ],
                            span: Span {
                             start: Position {
                              line: 321,
                              column: 54,
                             },
                             end: Position {
                              line: 324,
                              column: 10,
                             },
                            },
                           },
                          ),
                         },
                        ),
                       },
                      ),
                      KeyValue(
                       BindingKeyValue {
                        from: [
                         Raw(
                          PartRaw {
                           content: "positive",
                           span: Span {
                            start: Position {
                             line: 325,
                             column: 9,
                            },
                            end: Position {
                             line: 325,
                             column: 17,
                            },
                           },
                          },
                         ),
                        ],
                        to: BinaryOperation(
                         BinaryOperation {
                          left: FunctionApplication(
                           FunctionApplication {
                            function: Identifier(
                             Identifier {
                              id: "addCheck",
                              span: Span {
                               start: Position {
                                line: 325,
                                column: 20,
                               },
                               end: Position {
                                line: 325,
                                column: 28,
                               },
                              },
                             },
                            ),
                            arguments: [
                             PropertyAccess(
                              PropertyAccess {
                               expression: Identifier(
                                Identifier {
                                 id: "types",
                                 span: Span {
                                  start: Position {
                                   line: 325,
                                   column: 29,
                                  },
                                  end: Position {
                                   line: 325,
                                   column: 34,
                                  },
                                 },
                                },
                               ),
                               attribute_path: [
                                Raw(
                                 PartRaw {
                                  content: "int",
                                  span: Span {
                                   start: Position {
                                    line: 325,
                                    column: 35,
                                   },
                                   end: Position {
                                    line: 325,
                                    column: 38,
                                   },
                                  },
                                 },
                                ),
                               ],
                               default: None,
                              },
                             ),
                             Function(
                              Function {
                               head: Simple(
                                FunctionHeadSimple {
                                 identifier: "x",
                                },
                               ),
                               body: BinaryOperation(
                                BinaryOperation {
                                 left: Identifier(
                                  Identifier {
                                   id: "x",
                                   span: Span {
                                    start: Position {
                                     line: 325,
                                     column: 43,
                                    },
                                    end: Position {
                                     line: 325,
                                     column: 44,
                                    },
                                   },
                                  },
                                 ),
                                 operator: GreaterThan,
                                 right: Integer(
                                  Integer {
                                   value: "0",
                                   span: Span {
                                    start: Position {
                                     line: 325,
                                     column: 47,
                                    },
                                    end: Position {
                                     line: 325,
                                     column: 48,
                                    },
                                   },
                                  },
                                 ),
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 325,
                                 column: 40,
                                },
                                end: Position {
                                 line: 325,
                                 column: 48,
                                },
                               },
                              },
                             ),
                            ],
                           },
                          ),
                          operator: Update,
                          right: Map(
                           Map {
                            recursive: false,
                            bindings: [
                             KeyValue(
                              BindingKeyValue {
                               from: [
                                Raw(
                                 PartRaw {
                                  content: "name",
                                  span: Span {
                                   start: Position {
                                    line: 326,
                                    column: 11,
                                   },
                                   end: Position {
                                    line: 326,
                                    column: 15,
                                   },
                                  },
                                 },
                                ),
                               ],
                               to: String(
                                String_ {
                                 parts: [
                                  Raw(
                                   PartRaw {
                                    content: "positiveInt",
                                    span: Span {
                                     start: Position {
                                      line: 326,
                                      column: 19,
                                     },
                                     end: Position {
                                      line: 326,
                                      column: 30,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 span: Span {
                                  start: Position {
                                   line: 326,
                                   column: 18,
                                  },
                                  end: Position {
                                   line: 326,
                                   column: 31,
                                  },
                                 },
                                },
                               ),
                              },
                             ),
                             KeyValue(
                              BindingKeyValue {
                               from: [
                                Raw(
                                 PartRaw {
                                  content: "description",
                                  span: Span {
                                   start: Position {
                                    line: 327,
                                    column: 11,
                                   },
                                   end: Position {
                                    line: 327,
                                    column: 22,
                                   },
                                  },
                                 },
                                ),
                               ],
                               to: String(
                                String_ {
                                 parts: [
                                  Raw(
                                   PartRaw {
                                    content: "positive integer, meaning >0",
                                    span: Span {
                                     start: Position {
                                      line: 327,
                                      column: 26,
                                     },
                                     end: Position {
                                      line: 327,
                                      column: 54,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 span: Span {
                                  start: Position {
                                   line: 327,
                                   column: 25,
                                  },
                                  end: Position {
                                   line: 327,
                                   column: 55,
                                  },
                                 },
                                },
                               ),
                              },
                             ),
                            ],
                            span: Span {
                             start: Position {
                              line: 325,
                              column: 53,
                             },
                             end: Position {
                              line: 328,
                              column: 10,
                             },
                            },
                           },
                          ),
                         },
                        ),
                       },
                      ),
                      KeyValue(
                       BindingKeyValue {
                        from: [
                         Raw(
                          PartRaw {
                           content: "u8",
                           span: Span {
                            start: Position {
                             line: 329,
                             column: 9,
                            },
                            end: Position {
                             line: 329,
                             column: 11,
                            },
                           },
                          },
                         ),
                        ],
                        to: FunctionApplication(
                         FunctionApplication {
                          function: Identifier(
                           Identifier {
                            id: "unsign",
                            span: Span {
                             start: Position {
                              line: 329,
                              column: 14,
                             },
                             end: Position {
                              line: 329,
                              column: 20,
                             },
                            },
                           },
                          ),
                          arguments: [
                           Integer(
                            Integer {
                             value: "8",
                             span: Span {
                              start: Position {
                               line: 329,
                               column: 21,
                              },
                              end: Position {
                               line: 329,
                               column: 22,
                              },
                             },
                            },
                           ),
                           Integer(
                            Integer {
                             value: "256",
                             span: Span {
                              start: Position {
                               line: 329,
                               column: 23,
                              },
                              end: Position {
                               line: 329,
                               column: 26,
                              },
                             },
                            },
                           ),
                          ],
                         },
                        ),
                       },
                      ),
                      KeyValue(
                       BindingKeyValue {
                        from: [
                         Raw(
                          PartRaw {
                           content: "u16",
                           span: Span {
                            start: Position {
                             line: 330,
                             column: 9,
                            },
                            end: Position {
                             line: 330,
                             column: 12,
                            },
                           },
                          },
                         ),
                        ],
                        to: FunctionApplication(
                         FunctionApplication {
                          function: Identifier(
                           Identifier {
                            id: "unsign",
                            span: Span {
                             start: Position {
                              line: 330,
                              column: 15,
                             },
                             end: Position {
                              line: 330,
                              column: 21,
                             },
                            },
                           },
                          ),
                          arguments: [
                           Integer(
                            Integer {
                             value: "16",
                             span: Span {
                              start: Position {
                               line: 330,
                               column: 22,
                              },
                              end: Position {
                               line: 330,
                               column: 24,
                              },
                             },
                            },
                           ),
                           Integer(
                            Integer {
                             value: "65536",
                             span: Span {
                              start: Position {
                               line: 330,
                               column: 25,
                              },
                              end: Position {
                               line: 330,
                               column: 30,
                              },
                             },
                            },
                           ),
                          ],
                         },
                        ),
                       },
                      ),
                      KeyValue(
                       BindingKeyValue {
                        from: [
                         Raw(
                          PartRaw {
                           content: "u32",
                           span: Span {
                            start: Position {
                             line: 333,
                             column: 9,
                            },
                            end: Position {
                             line: 333,
                             column: 12,
                            },
                           },
                          },
                         ),
                        ],
                        to: FunctionApplication(
                         FunctionApplication {
                          function: Identifier(
                           Identifier {
                            id: "unsign",
                            span: Span {
                             start: Position {
                              line: 333,
                              column: 15,
                             },
                             end: Position {
                              line: 333,
                              column: 21,
                             },
                            },
                           },
                          ),
                          arguments: [
                           Integer(
                            Integer {
                             value: "32",
                             span: Span {
                              start: Position {
                               line: 333,
                               column: 22,
                              },
                              end: Position {
                               line: 333,
                               column: 24,
                              },
                             },
                            },
                           ),
                           Integer(
                            Integer {
                             value: "4294967296",
                             span: Span {
                              start: Position {
                               line: 333,
                               column: 25,
                              },
                              end: Position {
                               line: 333,
                               column: 35,
                              },
                             },
                            },
                           ),
                          ],
                         },
                        ),
                       },
                      ),
                      KeyValue(
                       BindingKeyValue {
                        from: [
                         Raw(
                          PartRaw {
                           content: "s8",
                           span: Span {
                            start: Position {
                             line: 336,
                             column: 9,
                            },
                            end: Position {
                             line: 336,
                             column: 11,
                            },
                           },
                          },
                         ),
                        ],
                        to: FunctionApplication(
                         FunctionApplication {
                          function: Identifier(
                           Identifier {
                            id: "sign",
                            span: Span {
                             start: Position {
                              line: 336,
                              column: 14,
                             },
                             end: Position {
                              line: 336,
                              column: 18,
                             },
                            },
                           },
                          ),
                          arguments: [
                           Integer(
                            Integer {
                             value: "8",
                             span: Span {
                              start: Position {
                               line: 336,
                               column: 19,
                              },
                              end: Position {
                               line: 336,
                               column: 20,
                              },
                             },
                            },
                           ),
                           Integer(
                            Integer {
                             value: "256",
                             span: Span {
                              start: Position {
                               line: 336,
                               column: 21,
                              },
                              end: Position {
                               line: 336,
                               column: 24,
                              },
                             },
                            },
                           ),
                          ],
                         },
                        ),
                       },
                      ),
                      KeyValue(
                       BindingKeyValue {
                        from: [
                         Raw(
                          PartRaw {
                           content: "s16",
                           span: Span {
                            start: Position {
                             line: 337,
                             column: 9,
                            },
                            end: Position {
                             line: 337,
                             column: 12,
                            },
                           },
                          },
                         ),
                        ],
                        to: FunctionApplication(
                         FunctionApplication {
                          function: Identifier(
                           Identifier {
                            id: "sign",
                            span: Span {
                             start: Position {
                              line: 337,
                              column: 15,
                             },
                             end: Position {
                              line: 337,
                              column: 19,
                             },
                            },
                           },
                          ),
                          arguments: [
                           Integer(
                            Integer {
                             value: "16",
                             span: Span {
                              start: Position {
                               line: 337,
                               column: 20,
                              },
                              end: Position {
                               line: 337,
                               column: 22,
                              },
                             },
                            },
                           ),
                           Integer(
                            Integer {
                             value: "65536",
                             span: Span {
                              start: Position {
                               line: 337,
                               column: 23,
                              },
                              end: Position {
                               line: 337,
                               column: 28,
                              },
                             },
                            },
                           ),
                          ],
                         },
                        ),
                       },
                      ),
                      KeyValue(
                       BindingKeyValue {
                        from: [
                         Raw(
                          PartRaw {
                           content: "s32",
                           span: Span {
                            start: Position {
                             line: 338,
                             column: 9,
                            },
                            end: Position {
                             line: 338,
                             column: 12,
                            },
                           },
                          },
                         ),
                        ],
                        to: FunctionApplication(
                         FunctionApplication {
                          function: Identifier(
                           Identifier {
                            id: "sign",
                            span: Span {
                             start: Position {
                              line: 338,
                              column: 15,
                             },
                             end: Position {
                              line: 338,
                              column: 19,
                             },
                            },
                           },
                          ),
                          arguments: [
                           Integer(
                            Integer {
                             value: "32",
                             span: Span {
                              start: Position {
                               line: 338,
                               column: 20,
                              },
                              end: Position {
                               line: 338,
                               column: 22,
                              },
                             },
                            },
                           ),
                           Integer(
                            Integer {
                             value: "4294967296",
                             span: Span {
                              start: Position {
                               line: 338,
                               column: 23,
                              },
                              end: Position {
                               line: 338,
                               column: 33,
                              },
                             },
                            },
                           ),
                          ],
                         },
                        ),
                       },
                      ),
                     ],
                     span: Span {
                      start: Position {
                       line: 308,
                       column: 10,
                      },
                      end: Position {
                       line: 339,
                       column: 8,
                      },
                     },
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 288,
                     column: 7,
                    },
                    end: Position {
                     line: 339,
                     column: 8,
                    },
                   },
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "port",
                    span: Span {
                     start: Position {
                      line: 342,
                      column: 5,
                     },
                     end: Position {
                      line: 342,
                      column: 9,
                     },
                    },
                   },
                  ),
                 ],
                 to: PropertyAccess(
                  PropertyAccess {
                   expression: Identifier(
                    Identifier {
                     id: "ints",
                     span: Span {
                      start: Position {
                       line: 342,
                       column: 12,
                      },
                      end: Position {
                       line: 342,
                       column: 16,
                      },
                     },
                    },
                   ),
                   attribute_path: [
                    Raw(
                     PartRaw {
                      content: "u16",
                      span: Span {
                       start: Position {
                        line: 342,
                        column: 17,
                       },
                       end: Position {
                        line: 342,
                        column: 20,
                       },
                      },
                     },
                    ),
                   ],
                   default: None,
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "float",
                    span: Span {
                     start: Position {
                      line: 344,
                      column: 5,
                     },
                     end: Position {
                      line: 344,
                      column: 10,
                     },
                    },
                   },
                  ),
                 ],
                 to: FunctionApplication(
                  FunctionApplication {
                   function: Identifier(
                    Identifier {
                     id: "mkOptionType",
                     span: Span {
                      start: Position {
                       line: 344,
                       column: 13,
                      },
                      end: Position {
                       line: 344,
                       column: 25,
                      },
                     },
                    },
                   ),
                   arguments: [
                    Map(
                     Map {
                      recursive: false,
                      bindings: [
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "name",
                            span: Span {
                             start: Position {
                              line: 345,
                              column: 7,
                             },
                             end: Position {
                              line: 345,
                              column: 11,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "float",
                              span: Span {
                               start: Position {
                                line: 345,
                                column: 15,
                               },
                               end: Position {
                                line: 345,
                                column: 20,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 345,
                             column: 14,
                            },
                            end: Position {
                             line: 345,
                             column: 21,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "description",
                            span: Span {
                             start: Position {
                              line: 346,
                              column: 7,
                             },
                             end: Position {
                              line: 346,
                              column: 18,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "floating point number",
                              span: Span {
                               start: Position {
                                line: 346,
                                column: 22,
                               },
                               end: Position {
                                line: 346,
                                column: 43,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 346,
                             column: 21,
                            },
                            end: Position {
                             line: 346,
                             column: 44,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "descriptionClass",
                            span: Span {
                             start: Position {
                              line: 347,
                              column: 7,
                             },
                             end: Position {
                              line: 347,
                              column: 23,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "noun",
                              span: Span {
                               start: Position {
                                line: 347,
                                column: 27,
                               },
                               end: Position {
                                line: 347,
                                column: 31,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 347,
                             column: 26,
                            },
                            end: Position {
                             line: 347,
                             column: 32,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "check",
                            span: Span {
                             start: Position {
                              line: 348,
                              column: 7,
                             },
                             end: Position {
                              line: 348,
                              column: 12,
                             },
                            },
                           },
                          ),
                         ],
                         to: Identifier(
                          Identifier {
                           id: "isFloat",
                           span: Span {
                            start: Position {
                             line: 348,
                             column: 15,
                            },
                            end: Position {
                             line: 348,
                             column: 22,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "merge",
                            span: Span {
                             start: Position {
                              line: 349,
                              column: 7,
                             },
                             end: Position {
                              line: 349,
                              column: 12,
                             },
                            },
                           },
                          ),
                         ],
                         to: Identifier(
                          Identifier {
                           id: "mergeEqualOption",
                           span: Span {
                            start: Position {
                             line: 349,
                             column: 15,
                            },
                            end: Position {
                             line: 349,
                             column: 31,
                            },
                           },
                          },
                         ),
                        },
                       ),
                      ],
                      span: Span {
                       start: Position {
                        line: 344,
                        column: 26,
                       },
                       end: Position {
                        line: 350,
                        column: 6,
                       },
                      },
                     },
                    ),
                   ],
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "number",
                    span: Span {
                     start: Position {
                      line: 352,
                      column: 5,
                     },
                     end: Position {
                      line: 352,
                      column: 11,
                     },
                    },
                   },
                  ),
                 ],
                 to: FunctionApplication(
                  FunctionApplication {
                   function: Identifier(
                    Identifier {
                     id: "either",
                     span: Span {
                      start: Position {
                       line: 352,
                       column: 14,
                      },
                      end: Position {
                       line: 352,
                       column: 20,
                      },
                     },
                    },
                   ),
                   arguments: [
                    Identifier(
                     Identifier {
                      id: "int",
                      span: Span {
                       start: Position {
                        line: 352,
                        column: 21,
                       },
                       end: Position {
                        line: 352,
                        column: 24,
                       },
                      },
                     },
                    ),
                    Identifier(
                     Identifier {
                      id: "float",
                      span: Span {
                       start: Position {
                        line: 352,
                        column: 25,
                       },
                       end: Position {
                        line: 352,
                        column: 30,
                       },
                      },
                     },
                    ),
                   ],
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "numbers",
                    span: Span {
                     start: Position {
                      line: 354,
                      column: 5,
                     },
                     end: Position {
                      line: 354,
                      column: 12,
                     },
                    },
                   },
                  ),
                 ],
                 to: LetIn(
                  LetIn {
                   bindings: [
                    KeyValue(
                     BindingKeyValue {
                      from: [
                       Raw(
                        PartRaw {
                         content: "betweenDesc",
                         span: Span {
                          start: Position {
                           line: 355,
                           column: 7,
                          },
                          end: Position {
                           line: 355,
                           column: 18,
                          },
                         },
                        },
                       ),
                      ],
                      to: Function(
                       Function {
                        head: Simple(
                         FunctionHeadSimple {
                          identifier: "lowest",
                         },
                        ),
                        body: Function(
                         Function {
                          head: Simple(
                           FunctionHeadSimple {
                            identifier: "highest",
                           },
                          ),
                          body: String(
                           String_ {
                            parts: [
                             Interpolation(
                              PartInterpolation {
                               expression: FunctionApplication(
                                FunctionApplication {
                                 function: PropertyAccess(
                                  PropertyAccess {
                                   expression: Identifier(
                                    Identifier {
                                     id: "builtins",
                                     span: Span {
                                      start: Position {
                                       line: 356,
                                       column: 12,
                                      },
                                      end: Position {
                                       line: 356,
                                       column: 20,
                                      },
                                     },
                                    },
                                   ),
                                   attribute_path: [
                                    Raw(
                                     PartRaw {
                                      content: "toJSON",
                                      span: Span {
                                       start: Position {
                                        line: 356,
                                        column: 21,
                                       },
                                       end: Position {
                                        line: 356,
                                        column: 27,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   default: None,
                                  },
                                 ),
                                 arguments: [
                                  Identifier(
                                   Identifier {
                                    id: "lowest",
                                    span: Span {
                                     start: Position {
                                      line: 356,
                                      column: 28,
                                     },
                                     end: Position {
                                      line: 356,
                                      column: 34,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                },
                               ),
                              },
                             ),
                             Raw(
                              PartRaw {
                               content: " and ",
                               span: Span {
                                start: Position {
                                 line: 356,
                                 column: 10,
                                },
                                end: Position {
                                 line: 356,
                                 column: 40,
                                },
                               },
                              },
                             ),
                             Interpolation(
                              PartInterpolation {
                               expression: FunctionApplication(
                                FunctionApplication {
                                 function: PropertyAccess(
                                  PropertyAccess {
                                   expression: Identifier(
                                    Identifier {
                                     id: "builtins",
                                     span: Span {
                                      start: Position {
                                       line: 356,
                                       column: 42,
                                      },
                                      end: Position {
                                       line: 356,
                                       column: 50,
                                      },
                                     },
                                    },
                                   ),
                                   attribute_path: [
                                    Raw(
                                     PartRaw {
                                      content: "toJSON",
                                      span: Span {
                                       start: Position {
                                        line: 356,
                                        column: 51,
                                       },
                                       end: Position {
                                        line: 356,
                                        column: 57,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   default: None,
                                  },
                                 ),
                                 arguments: [
                                  Identifier(
                                   Identifier {
                                    id: "highest",
                                    span: Span {
                                     start: Position {
                                      line: 356,
                                      column: 58,
                                     },
                                     end: Position {
                                      line: 356,
                                      column: 65,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                },
                               ),
                              },
                             ),
                             Raw(
                              PartRaw {
                               content: " (both inclusive)",
                               span: Span {
                                start: Position {
                                 line: 356,
                                 column: 10,
                                },
                                end: Position {
                                 line: 356,
                                 column: 83,
                                },
                               },
                              },
                             ),
                            ],
                            span: Span {
                             start: Position {
                              line: 356,
                              column: 9,
                             },
                             end: Position {
                              line: 356,
                              column: 84,
                             },
                            },
                           },
                          ),
                          span: Span {
                           start: Position {
                            line: 355,
                            column: 29,
                           },
                           end: Position {
                            line: 356,
                            column: 84,
                           },
                          },
                         },
                        ),
                        span: Span {
                         start: Position {
                          line: 355,
                          column: 21,
                         },
                         end: Position {
                          line: 356,
                          column: 84,
                         },
                        },
                       },
                      ),
                     },
                    ),
                   ],
                   target: Map(
                    Map {
                     recursive: false,
                     bindings: [
                      KeyValue(
                       BindingKeyValue {
                        from: [
                         Raw(
                          PartRaw {
                           content: "between",
                           span: Span {
                            start: Position {
                             line: 358,
                             column: 7,
                            },
                            end: Position {
                             line: 358,
                             column: 14,
                            },
                           },
                          },
                         ),
                        ],
                        to: Function(
                         Function {
                          head: Simple(
                           FunctionHeadSimple {
                            identifier: "lowest",
                           },
                          ),
                          body: Function(
                           Function {
                            head: Simple(
                             FunctionHeadSimple {
                              identifier: "highest",
                             },
                            ),
                            body: Assert(
                             Assert {
                              expression: FunctionApplication(
                               FunctionApplication {
                                function: PropertyAccess(
                                 PropertyAccess {
                                  expression: Identifier(
                                   Identifier {
                                    id: "lib",
                                    span: Span {
                                     start: Position {
                                      line: 359,
                                      column: 16,
                                     },
                                     end: Position {
                                      line: 359,
                                      column: 19,
                                     },
                                    },
                                   },
                                  ),
                                  attribute_path: [
                                   Raw(
                                    PartRaw {
                                     content: "assertMsg",
                                     span: Span {
                                      start: Position {
                                       line: 359,
                                       column: 20,
                                      },
                                      end: Position {
                                       line: 359,
                                       column: 29,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  default: None,
                                 },
                                ),
                                arguments: [
                                 BinaryOperation(
                                  BinaryOperation {
                                   left: Identifier(
                                    Identifier {
                                     id: "lowest",
                                     span: Span {
                                      start: Position {
                                       line: 359,
                                       column: 31,
                                      },
                                      end: Position {
                                       line: 359,
                                       column: 37,
                                      },
                                     },
                                    },
                                   ),
                                   operator: LessThanOrEqualTo,
                                   right: Identifier(
                                    Identifier {
                                     id: "highest",
                                     span: Span {
                                      start: Position {
                                       line: 359,
                                       column: 41,
                                      },
                                      end: Position {
                                       line: 359,
                                       column: 48,
                                      },
                                     },
                                    },
                                   ),
                                  },
                                 ),
                                 String(
                                  String_ {
                                   parts: [
                                    Raw(
                                     PartRaw {
                                      content: "numbers.between: lowest must be smaller than highest",
                                      span: Span {
                                       start: Position {
                                        line: 360,
                                        column: 12,
                                       },
                                       end: Position {
                                        line: 360,
                                        column: 64,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   span: Span {
                                    start: Position {
                                     line: 360,
                                     column: 11,
                                    },
                                    end: Position {
                                     line: 360,
                                     column: 65,
                                    },
                                   },
                                  },
                                 ),
                                ],
                               },
                              ),
                              target: BinaryOperation(
                               BinaryOperation {
                                left: FunctionApplication(
                                 FunctionApplication {
                                  function: Identifier(
                                   Identifier {
                                    id: "addCheck",
                                    span: Span {
                                     start: Position {
                                      line: 361,
                                      column: 9,
                                     },
                                     end: Position {
                                      line: 361,
                                      column: 17,
                                     },
                                    },
                                   },
                                  ),
                                  arguments: [
                                   Identifier(
                                    Identifier {
                                     id: "number",
                                     span: Span {
                                      start: Position {
                                       line: 361,
                                       column: 18,
                                      },
                                      end: Position {
                                       line: 361,
                                       column: 24,
                                      },
                                     },
                                    },
                                   ),
                                   Function(
                                    Function {
                                     head: Simple(
                                      FunctionHeadSimple {
                                       identifier: "x",
                                      },
                                     ),
                                     body: BinaryOperation(
                                      BinaryOperation {
                                       left: BinaryOperation(
                                        BinaryOperation {
                                         left: Identifier(
                                          Identifier {
                                           id: "x",
                                           span: Span {
                                            start: Position {
                                             line: 361,
                                             column: 29,
                                            },
                                            end: Position {
                                             line: 361,
                                             column: 30,
                                            },
                                           },
                                          },
                                         ),
                                         operator: GreaterThanOrEqualTo,
                                         right: Identifier(
                                          Identifier {
                                           id: "lowest",
                                           span: Span {
                                            start: Position {
                                             line: 361,
                                             column: 34,
                                            },
                                            end: Position {
                                             line: 361,
                                             column: 40,
                                            },
                                           },
                                          },
                                         ),
                                        },
                                       ),
                                       operator: LogicalAnd,
                                       right: BinaryOperation(
                                        BinaryOperation {
                                         left: Identifier(
                                          Identifier {
                                           id: "x",
                                           span: Span {
                                            start: Position {
                                             line: 361,
                                             column: 44,
                                            },
                                            end: Position {
                                             line: 361,
                                             column: 45,
                                            },
                                           },
                                          },
                                         ),
                                         operator: LessThanOrEqualTo,
                                         right: Identifier(
                                          Identifier {
                                           id: "highest",
                                           span: Span {
                                            start: Position {
                                             line: 361,
                                             column: 49,
                                            },
                                            end: Position {
                                             line: 361,
                                             column: 56,
                                            },
                                           },
                                          },
                                         ),
                                        },
                                       ),
                                      },
                                     ),
                                     span: Span {
                                      start: Position {
                                       line: 361,
                                       column: 26,
                                      },
                                      end: Position {
                                       line: 361,
                                       column: 56,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                 },
                                ),
                                operator: Update,
                                right: Map(
                                 Map {
                                  recursive: false,
                                  bindings: [
                                   KeyValue(
                                    BindingKeyValue {
                                     from: [
                                      Raw(
                                       PartRaw {
                                        content: "name",
                                        span: Span {
                                         start: Position {
                                          line: 362,
                                          column: 11,
                                         },
                                         end: Position {
                                          line: 362,
                                          column: 15,
                                         },
                                        },
                                       },
                                      ),
                                     ],
                                     to: String(
                                      String_ {
                                       parts: [
                                        Raw(
                                         PartRaw {
                                          content: "numberBetween",
                                          span: Span {
                                           start: Position {
                                            line: 362,
                                            column: 19,
                                           },
                                           end: Position {
                                            line: 362,
                                            column: 32,
                                           },
                                          },
                                         },
                                        ),
                                       ],
                                       span: Span {
                                        start: Position {
                                         line: 362,
                                         column: 18,
                                        },
                                        end: Position {
                                         line: 362,
                                         column: 33,
                                        },
                                       },
                                      },
                                     ),
                                    },
                                   ),
                                   KeyValue(
                                    BindingKeyValue {
                                     from: [
                                      Raw(
                                       PartRaw {
                                        content: "description",
                                        span: Span {
                                         start: Position {
                                          line: 363,
                                          column: 11,
                                         },
                                         end: Position {
                                          line: 363,
                                          column: 22,
                                         },
                                        },
                                       },
                                      ),
                                     ],
                                     to: String(
                                      String_ {
                                       parts: [
                                        Raw(
                                         PartRaw {
                                          content: "integer or floating point number between ",
                                          span: Span {
                                           start: Position {
                                            line: 363,
                                            column: 26,
                                           },
                                           end: Position {
                                            line: 363,
                                            column: 96,
                                           },
                                          },
                                         },
                                        ),
                                        Interpolation(
                                         PartInterpolation {
                                          expression: FunctionApplication(
                                           FunctionApplication {
                                            function: Identifier(
                                             Identifier {
                                              id: "betweenDesc",
                                              span: Span {
                                               start: Position {
                                                line: 363,
                                                column: 69,
                                               },
                                               end: Position {
                                                line: 363,
                                                column: 80,
                                               },
                                              },
                                             },
                                            ),
                                            arguments: [
                                             Identifier(
                                              Identifier {
                                               id: "lowest",
                                               span: Span {
                                                start: Position {
                                                 line: 363,
                                                 column: 81,
                                                },
                                                end: Position {
                                                 line: 363,
                                                 column: 87,
                                                },
                                               },
                                              },
                                             ),
                                             Identifier(
                                              Identifier {
                                               id: "highest",
                                               span: Span {
                                                start: Position {
                                                 line: 363,
                                                 column: 88,
                                                },
                                                end: Position {
                                                 line: 363,
                                                 column: 95,
                                                },
                                               },
                                              },
                                             ),
                                            ],
                                           },
                                          ),
                                         },
                                        ),
                                       ],
                                       span: Span {
                                        start: Position {
                                         line: 363,
                                         column: 25,
                                        },
                                        end: Position {
                                         line: 363,
                                         column: 97,
                                        },
                                       },
                                      },
                                     ),
                                    },
                                   ),
                                  ],
                                  span: Span {
                                   start: Position {
                                    line: 361,
                                    column: 61,
                                   },
                                   end: Position {
                                    line: 364,
                                    column: 10,
                                   },
                                  },
                                 },
                                ),
                               },
                              ),
                              span: Span {
                               start: Position {
                                line: 359,
                                column: 9,
                               },
                               end: Position {
                                line: 364,
                                column: 10,
                               },
                              },
                             },
                            ),
                            span: Span {
                             start: Position {
                              line: 358,
                              column: 25,
                             },
                             end: Position {
                              line: 364,
                              column: 10,
                             },
                            },
                           },
                          ),
                          span: Span {
                           start: Position {
                            line: 358,
                            column: 17,
                           },
                           end: Position {
                            line: 364,
                            column: 10,
                           },
                          },
                         },
                        ),
                       },
                      ),
                      KeyValue(
                       BindingKeyValue {
                        from: [
                         Raw(
                          PartRaw {
                           content: "nonnegative",
                           span: Span {
                            start: Position {
                             line: 366,
                             column: 7,
                            },
                            end: Position {
                             line: 366,
                             column: 18,
                            },
                           },
                          },
                         ),
                        ],
                        to: BinaryOperation(
                         BinaryOperation {
                          left: FunctionApplication(
                           FunctionApplication {
                            function: Identifier(
                             Identifier {
                              id: "addCheck",
                              span: Span {
                               start: Position {
                                line: 366,
                                column: 21,
                               },
                               end: Position {
                                line: 366,
                                column: 29,
                               },
                              },
                             },
                            ),
                            arguments: [
                             Identifier(
                              Identifier {
                               id: "number",
                               span: Span {
                                start: Position {
                                 line: 366,
                                 column: 30,
                                },
                                end: Position {
                                 line: 366,
                                 column: 36,
                                },
                               },
                              },
                             ),
                             Function(
                              Function {
                               head: Simple(
                                FunctionHeadSimple {
                                 identifier: "x",
                                },
                               ),
                               body: BinaryOperation(
                                BinaryOperation {
                                 left: Identifier(
                                  Identifier {
                                   id: "x",
                                   span: Span {
                                    start: Position {
                                     line: 366,
                                     column: 41,
                                    },
                                    end: Position {
                                     line: 366,
                                     column: 42,
                                    },
                                   },
                                  },
                                 ),
                                 operator: GreaterThanOrEqualTo,
                                 right: Integer(
                                  Integer {
                                   value: "0",
                                   span: Span {
                                    start: Position {
                                     line: 366,
                                     column: 46,
                                    },
                                    end: Position {
                                     line: 366,
                                     column: 47,
                                    },
                                   },
                                  },
                                 ),
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 366,
                                 column: 38,
                                },
                                end: Position {
                                 line: 366,
                                 column: 47,
                                },
                               },
                              },
                             ),
                            ],
                           },
                          ),
                          operator: Update,
                          right: Map(
                           Map {
                            recursive: false,
                            bindings: [
                             KeyValue(
                              BindingKeyValue {
                               from: [
                                Raw(
                                 PartRaw {
                                  content: "name",
                                  span: Span {
                                   start: Position {
                                    line: 367,
                                    column: 9,
                                   },
                                   end: Position {
                                    line: 367,
                                    column: 13,
                                   },
                                  },
                                 },
                                ),
                               ],
                               to: String(
                                String_ {
                                 parts: [
                                  Raw(
                                   PartRaw {
                                    content: "numberNonnegative",
                                    span: Span {
                                     start: Position {
                                      line: 367,
                                      column: 17,
                                     },
                                     end: Position {
                                      line: 367,
                                      column: 34,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 span: Span {
                                  start: Position {
                                   line: 367,
                                   column: 16,
                                  },
                                  end: Position {
                                   line: 367,
                                   column: 35,
                                  },
                                 },
                                },
                               ),
                              },
                             ),
                             KeyValue(
                              BindingKeyValue {
                               from: [
                                Raw(
                                 PartRaw {
                                  content: "description",
                                  span: Span {
                                   start: Position {
                                    line: 368,
                                    column: 9,
                                   },
                                   end: Position {
                                    line: 368,
                                    column: 20,
                                   },
                                  },
                                 },
                                ),
                               ],
                               to: String(
                                String_ {
                                 parts: [
                                  Raw(
                                   PartRaw {
                                    content: "nonnegative integer or floating point number, meaning >=0",
                                    span: Span {
                                     start: Position {
                                      line: 368,
                                      column: 24,
                                     },
                                     end: Position {
                                      line: 368,
                                      column: 81,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 span: Span {
                                  start: Position {
                                   line: 368,
                                   column: 23,
                                  },
                                  end: Position {
                                   line: 368,
                                   column: 82,
                                  },
                                 },
                                },
                               ),
                              },
                             ),
                            ],
                            span: Span {
                             start: Position {
                              line: 366,
                              column: 52,
                             },
                             end: Position {
                              line: 369,
                              column: 8,
                             },
                            },
                           },
                          ),
                         },
                        ),
                       },
                      ),
                      KeyValue(
                       BindingKeyValue {
                        from: [
                         Raw(
                          PartRaw {
                           content: "positive",
                           span: Span {
                            start: Position {
                             line: 370,
                             column: 7,
                            },
                            end: Position {
                             line: 370,
                             column: 15,
                            },
                           },
                          },
                         ),
                        ],
                        to: BinaryOperation(
                         BinaryOperation {
                          left: FunctionApplication(
                           FunctionApplication {
                            function: Identifier(
                             Identifier {
                              id: "addCheck",
                              span: Span {
                               start: Position {
                                line: 370,
                                column: 18,
                               },
                               end: Position {
                                line: 370,
                                column: 26,
                               },
                              },
                             },
                            ),
                            arguments: [
                             Identifier(
                              Identifier {
                               id: "number",
                               span: Span {
                                start: Position {
                                 line: 370,
                                 column: 27,
                                },
                                end: Position {
                                 line: 370,
                                 column: 33,
                                },
                               },
                              },
                             ),
                             Function(
                              Function {
                               head: Simple(
                                FunctionHeadSimple {
                                 identifier: "x",
                                },
                               ),
                               body: BinaryOperation(
                                BinaryOperation {
                                 left: Identifier(
                                  Identifier {
                                   id: "x",
                                   span: Span {
                                    start: Position {
                                     line: 370,
                                     column: 38,
                                    },
                                    end: Position {
                                     line: 370,
                                     column: 39,
                                    },
                                   },
                                  },
                                 ),
                                 operator: GreaterThan,
                                 right: Integer(
                                  Integer {
                                   value: "0",
                                   span: Span {
                                    start: Position {
                                     line: 370,
                                     column: 42,
                                    },
                                    end: Position {
                                     line: 370,
                                     column: 43,
                                    },
                                   },
                                  },
                                 ),
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 370,
                                 column: 35,
                                },
                                end: Position {
                                 line: 370,
                                 column: 43,
                                },
                               },
                              },
                             ),
                            ],
                           },
                          ),
                          operator: Update,
                          right: Map(
                           Map {
                            recursive: false,
                            bindings: [
                             KeyValue(
                              BindingKeyValue {
                               from: [
                                Raw(
                                 PartRaw {
                                  content: "name",
                                  span: Span {
                                   start: Position {
                                    line: 371,
                                    column: 9,
                                   },
                                   end: Position {
                                    line: 371,
                                    column: 13,
                                   },
                                  },
                                 },
                                ),
                               ],
                               to: String(
                                String_ {
                                 parts: [
                                  Raw(
                                   PartRaw {
                                    content: "numberPositive",
                                    span: Span {
                                     start: Position {
                                      line: 371,
                                      column: 17,
                                     },
                                     end: Position {
                                      line: 371,
                                      column: 31,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 span: Span {
                                  start: Position {
                                   line: 371,
                                   column: 16,
                                  },
                                  end: Position {
                                   line: 371,
                                   column: 32,
                                  },
                                 },
                                },
                               ),
                              },
                             ),
                             KeyValue(
                              BindingKeyValue {
                               from: [
                                Raw(
                                 PartRaw {
                                  content: "description",
                                  span: Span {
                                   start: Position {
                                    line: 372,
                                    column: 9,
                                   },
                                   end: Position {
                                    line: 372,
                                    column: 20,
                                   },
                                  },
                                 },
                                ),
                               ],
                               to: String(
                                String_ {
                                 parts: [
                                  Raw(
                                   PartRaw {
                                    content: "positive integer or floating point number, meaning >0",
                                    span: Span {
                                     start: Position {
                                      line: 372,
                                      column: 24,
                                     },
                                     end: Position {
                                      line: 372,
                                      column: 77,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 span: Span {
                                  start: Position {
                                   line: 372,
                                   column: 23,
                                  },
                                  end: Position {
                                   line: 372,
                                   column: 78,
                                  },
                                 },
                                },
                               ),
                              },
                             ),
                            ],
                            span: Span {
                             start: Position {
                              line: 370,
                              column: 48,
                             },
                             end: Position {
                              line: 373,
                              column: 8,
                             },
                            },
                           },
                          ),
                         },
                        ),
                       },
                      ),
                     ],
                     span: Span {
                      start: Position {
                       line: 357,
                       column: 8,
                      },
                      end: Position {
                       line: 374,
                       column: 6,
                      },
                     },
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 354,
                     column: 15,
                    },
                    end: Position {
                     line: 374,
                     column: 6,
                    },
                   },
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "str",
                    span: Span {
                     start: Position {
                      line: 376,
                      column: 5,
                     },
                     end: Position {
                      line: 376,
                      column: 8,
                     },
                    },
                   },
                  ),
                 ],
                 to: FunctionApplication(
                  FunctionApplication {
                   function: Identifier(
                    Identifier {
                     id: "mkOptionType",
                     span: Span {
                      start: Position {
                       line: 376,
                       column: 11,
                      },
                      end: Position {
                       line: 376,
                       column: 23,
                      },
                     },
                    },
                   ),
                   arguments: [
                    Map(
                     Map {
                      recursive: false,
                      bindings: [
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "name",
                            span: Span {
                             start: Position {
                              line: 377,
                              column: 7,
                             },
                             end: Position {
                              line: 377,
                              column: 11,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "str",
                              span: Span {
                               start: Position {
                                line: 377,
                                column: 15,
                               },
                               end: Position {
                                line: 377,
                                column: 18,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 377,
                             column: 14,
                            },
                            end: Position {
                             line: 377,
                             column: 19,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "description",
                            span: Span {
                             start: Position {
                              line: 378,
                              column: 7,
                             },
                             end: Position {
                              line: 378,
                              column: 18,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "string",
                              span: Span {
                               start: Position {
                                line: 378,
                                column: 22,
                               },
                               end: Position {
                                line: 378,
                                column: 28,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 378,
                             column: 21,
                            },
                            end: Position {
                             line: 378,
                             column: 29,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "descriptionClass",
                            span: Span {
                             start: Position {
                              line: 379,
                              column: 7,
                             },
                             end: Position {
                              line: 379,
                              column: 23,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "noun",
                              span: Span {
                               start: Position {
                                line: 379,
                                column: 27,
                               },
                               end: Position {
                                line: 379,
                                column: 31,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 379,
                             column: 26,
                            },
                            end: Position {
                             line: 379,
                             column: 32,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "check",
                            span: Span {
                             start: Position {
                              line: 380,
                              column: 7,
                             },
                             end: Position {
                              line: 380,
                              column: 12,
                             },
                            },
                           },
                          ),
                         ],
                         to: Identifier(
                          Identifier {
                           id: "isString",
                           span: Span {
                            start: Position {
                             line: 380,
                             column: 15,
                            },
                            end: Position {
                             line: 380,
                             column: 23,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "merge",
                            span: Span {
                             start: Position {
                              line: 381,
                              column: 7,
                             },
                             end: Position {
                              line: 381,
                              column: 12,
                             },
                            },
                           },
                          ),
                         ],
                         to: Identifier(
                          Identifier {
                           id: "mergeEqualOption",
                           span: Span {
                            start: Position {
                             line: 381,
                             column: 15,
                            },
                            end: Position {
                             line: 381,
                             column: 31,
                            },
                           },
                          },
                         ),
                        },
                       ),
                      ],
                      span: Span {
                       start: Position {
                        line: 376,
                        column: 24,
                       },
                       end: Position {
                        line: 382,
                        column: 6,
                       },
                      },
                     },
                    ),
                   ],
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "nonEmptyStr",
                    span: Span {
                     start: Position {
                      line: 384,
                      column: 5,
                     },
                     end: Position {
                      line: 384,
                      column: 16,
                     },
                    },
                   },
                  ),
                 ],
                 to: FunctionApplication(
                  FunctionApplication {
                   function: Identifier(
                    Identifier {
                     id: "mkOptionType",
                     span: Span {
                      start: Position {
                       line: 384,
                       column: 19,
                      },
                      end: Position {
                       line: 384,
                       column: 31,
                      },
                     },
                    },
                   ),
                   arguments: [
                    Map(
                     Map {
                      recursive: false,
                      bindings: [
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "name",
                            span: Span {
                             start: Position {
                              line: 385,
                              column: 7,
                             },
                             end: Position {
                              line: 385,
                              column: 11,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "nonEmptyStr",
                              span: Span {
                               start: Position {
                                line: 385,
                                column: 15,
                               },
                               end: Position {
                                line: 385,
                                column: 26,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 385,
                             column: 14,
                            },
                            end: Position {
                             line: 385,
                             column: 27,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "description",
                            span: Span {
                             start: Position {
                              line: 386,
                              column: 7,
                             },
                             end: Position {
                              line: 386,
                              column: 18,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "non-empty string",
                              span: Span {
                               start: Position {
                                line: 386,
                                column: 22,
                               },
                               end: Position {
                                line: 386,
                                column: 38,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 386,
                             column: 21,
                            },
                            end: Position {
                             line: 386,
                             column: 39,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "descriptionClass",
                            span: Span {
                             start: Position {
                              line: 387,
                              column: 7,
                             },
                             end: Position {
                              line: 387,
                              column: 23,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "noun",
                              span: Span {
                               start: Position {
                                line: 387,
                                column: 27,
                               },
                               end: Position {
                                line: 387,
                                column: 31,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 387,
                             column: 26,
                            },
                            end: Position {
                             line: 387,
                             column: 32,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "check",
                            span: Span {
                             start: Position {
                              line: 388,
                              column: 7,
                             },
                             end: Position {
                              line: 388,
                              column: 12,
                             },
                            },
                           },
                          ),
                         ],
                         to: Function(
                          Function {
                           head: Simple(
                            FunctionHeadSimple {
                             identifier: "x",
                            },
                           ),
                           body: BinaryOperation(
                            BinaryOperation {
                             left: FunctionApplication(
                              FunctionApplication {
                               function: PropertyAccess(
                                PropertyAccess {
                                 expression: Identifier(
                                  Identifier {
                                   id: "str",
                                   span: Span {
                                    start: Position {
                                     line: 388,
                                     column: 18,
                                    },
                                    end: Position {
                                     line: 388,
                                     column: 21,
                                    },
                                   },
                                  },
                                 ),
                                 attribute_path: [
                                  Raw(
                                   PartRaw {
                                    content: "check",
                                    span: Span {
                                     start: Position {
                                      line: 388,
                                      column: 22,
                                     },
                                     end: Position {
                                      line: 388,
                                      column: 27,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 default: None,
                                },
                               ),
                               arguments: [
                                Identifier(
                                 Identifier {
                                  id: "x",
                                  span: Span {
                                   start: Position {
                                    line: 388,
                                    column: 28,
                                   },
                                   end: Position {
                                    line: 388,
                                    column: 29,
                                   },
                                  },
                                 },
                                ),
                               ],
                              },
                             ),
                             operator: LogicalAnd,
                             right: BinaryOperation(
                              BinaryOperation {
                               left: FunctionApplication(
                                FunctionApplication {
                                 function: PropertyAccess(
                                  PropertyAccess {
                                   expression: Identifier(
                                    Identifier {
                                     id: "builtins",
                                     span: Span {
                                      start: Position {
                                       line: 388,
                                       column: 33,
                                      },
                                      end: Position {
                                       line: 388,
                                       column: 41,
                                      },
                                     },
                                    },
                                   ),
                                   attribute_path: [
                                    Raw(
                                     PartRaw {
                                      content: "match",
                                      span: Span {
                                       start: Position {
                                        line: 388,
                                        column: 42,
                                       },
                                       end: Position {
                                        line: 388,
                                        column: 47,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   default: None,
                                  },
                                 ),
                                 arguments: [
                                  String(
                                   String_ {
                                    parts: [
                                     Raw(
                                      PartRaw {
                                       content: "[ \t\n]*",
                                       span: Span {
                                        start: Position {
                                         line: 388,
                                         column: 49,
                                        },
                                        end: Position {
                                         line: 388,
                                         column: 57,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    span: Span {
                                     start: Position {
                                      line: 388,
                                      column: 48,
                                     },
                                     end: Position {
                                      line: 388,
                                      column: 58,
                                     },
                                    },
                                   },
                                  ),
                                  Identifier(
                                   Identifier {
                                    id: "x",
                                    span: Span {
                                     start: Position {
                                      line: 388,
                                      column: 59,
                                     },
                                     end: Position {
                                      line: 388,
                                      column: 60,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                },
                               ),
                               operator: EqualTo,
                               right: Identifier(
                                Identifier {
                                 id: "null",
                                 span: Span {
                                  start: Position {
                                   line: 388,
                                   column: 64,
                                  },
                                  end: Position {
                                   line: 388,
                                   column: 68,
                                  },
                                 },
                                },
                               ),
                              },
                             ),
                            },
                           ),
                           span: Span {
                            start: Position {
                             line: 388,
                             column: 15,
                            },
                            end: Position {
                             line: 388,
                             column: 68,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       Inherit(
                        BindingInherit {
                         from: Some(
                          Identifier(
                           Identifier {
                            id: "str",
                            span: Span {
                             start: Position {
                              line: 389,
                              column: 16,
                             },
                             end: Position {
                              line: 389,
                              column: 19,
                             },
                            },
                           },
                          ),
                         ),
                         attributes: [
                          Raw(
                           PartRaw {
                            content: "merge",
                            span: Span {
                             start: Position {
                              line: 389,
                              column: 21,
                             },
                             end: Position {
                              line: 389,
                              column: 26,
                             },
                            },
                           },
                          ),
                         ],
                         span: Span {
                          start: Position {
                           line: 384,
                           column: 33,
                          },
                          end: Position {
                           line: 389,
                           column: 27,
                          },
                         },
                        },
                       ),
                      ],
                      span: Span {
                       start: Position {
                        line: 384,
                        column: 32,
                       },
                       end: Position {
                        line: 390,
                        column: 6,
                       },
                      },
                     },
                    ),
                   ],
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "singleLineStr",
                    span: Span {
                     start: Position {
                      line: 393,
                      column: 5,
                     },
                     end: Position {
                      line: 393,
                      column: 18,
                     },
                    },
                   },
                  ),
                 ],
                 to: LetIn(
                  LetIn {
                   bindings: [
                    Inherit(
                     BindingInherit {
                      from: Some(
                       FunctionApplication(
                        FunctionApplication {
                         function: Identifier(
                          Identifier {
                           id: "strMatching",
                           span: Span {
                            start: Position {
                             line: 395,
                             column: 18,
                            },
                            end: Position {
                             line: 395,
                             column: 29,
                            },
                           },
                          },
                         ),
                         arguments: [
                          String(
                           String_ {
                            parts: [
                             Raw(
                              PartRaw {
                               content: "[^\n\r]*\n?",
                               span: Span {
                                start: Position {
                                 line: 395,
                                 column: 31,
                                },
                                end: Position {
                                 line: 395,
                                 column: 42,
                                },
                               },
                              },
                             ),
                            ],
                            span: Span {
                             start: Position {
                              line: 395,
                              column: 30,
                             },
                             end: Position {
                              line: 395,
                              column: 43,
                             },
                            },
                           },
                          ),
                         ],
                        },
                       ),
                      ),
                      attributes: [
                       Raw(
                        PartRaw {
                         content: "check",
                         span: Span {
                          start: Position {
                           line: 395,
                           column: 45,
                          },
                          end: Position {
                           line: 395,
                           column: 50,
                          },
                         },
                        },
                       ),
                       Raw(
                        PartRaw {
                         content: "merge",
                         span: Span {
                          start: Position {
                           line: 395,
                           column: 51,
                          },
                          end: Position {
                           line: 395,
                           column: 56,
                          },
                         },
                        },
                       ),
                      ],
                      span: Span {
                       start: Position {
                        line: 394,
                        column: 10,
                       },
                       end: Position {
                        line: 395,
                        column: 57,
                       },
                      },
                     },
                    ),
                   ],
                   target: FunctionApplication(
                    FunctionApplication {
                     function: Identifier(
                      Identifier {
                       id: "mkOptionType",
                       span: Span {
                        start: Position {
                         line: 397,
                         column: 7,
                        },
                        end: Position {
                         line: 397,
                         column: 19,
                        },
                       },
                      },
                     ),
                     arguments: [
                      Map(
                       Map {
                        recursive: false,
                        bindings: [
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "name",
                              span: Span {
                               start: Position {
                                line: 398,
                                column: 9,
                               },
                               end: Position {
                                line: 398,
                                column: 13,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "singleLineStr",
                                span: Span {
                                 start: Position {
                                  line: 398,
                                  column: 17,
                                 },
                                 end: Position {
                                  line: 398,
                                  column: 30,
                                 },
                                },
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 398,
                               column: 16,
                              },
                              end: Position {
                               line: 398,
                               column: 31,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "description",
                              span: Span {
                               start: Position {
                                line: 399,
                                column: 9,
                               },
                               end: Position {
                                line: 399,
                                column: 20,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "(optionally newline-terminated) single-line string",
                                span: Span {
                                 start: Position {
                                  line: 399,
                                  column: 24,
                                 },
                                 end: Position {
                                  line: 399,
                                  column: 74,
                                 },
                                },
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 399,
                               column: 23,
                              },
                              end: Position {
                               line: 399,
                               column: 75,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "descriptionClass",
                              span: Span {
                               start: Position {
                                line: 400,
                                column: 9,
                               },
                               end: Position {
                                line: 400,
                                column: 25,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "noun",
                                span: Span {
                                 start: Position {
                                  line: 400,
                                  column: 29,
                                 },
                                 end: Position {
                                  line: 400,
                                  column: 33,
                                 },
                                },
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 400,
                               column: 28,
                              },
                              end: Position {
                               line: 400,
                               column: 34,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         Inherit(
                          BindingInherit {
                           from: None,
                           attributes: [
                            Raw(
                             PartRaw {
                              content: "check",
                              span: Span {
                               start: Position {
                                line: 401,
                                column: 17,
                               },
                               end: Position {
                                line: 401,
                                column: 22,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 397,
                             column: 21,
                            },
                            end: Position {
                             line: 401,
                             column: 23,
                            },
                           },
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "merge",
                              span: Span {
                               start: Position {
                                line: 402,
                                column: 9,
                               },
                               end: Position {
                                line: 402,
                                column: 14,
                               },
                              },
                             },
                            ),
                           ],
                           to: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "loc",
                              },
                             ),
                             body: Function(
                              Function {
                               head: Simple(
                                FunctionHeadSimple {
                                 identifier: "defs",
                                },
                               ),
                               body: FunctionApplication(
                                FunctionApplication {
                                 function: PropertyAccess(
                                  PropertyAccess {
                                   expression: Identifier(
                                    Identifier {
                                     id: "lib",
                                     span: Span {
                                      start: Position {
                                       line: 403,
                                       column: 11,
                                      },
                                      end: Position {
                                       line: 403,
                                       column: 14,
                                      },
                                     },
                                    },
                                   ),
                                   attribute_path: [
                                    Raw(
                                     PartRaw {
                                      content: "removeSuffix",
                                      span: Span {
                                       start: Position {
                                        line: 403,
                                        column: 15,
                                       },
                                       end: Position {
                                        line: 403,
                                        column: 27,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   default: None,
                                  },
                                 ),
                                 arguments: [
                                  String(
                                   String_ {
                                    parts: [
                                     Raw(
                                      PartRaw {
                                       content: "\n",
                                       span: Span {
                                        start: Position {
                                         line: 403,
                                         column: 29,
                                        },
                                        end: Position {
                                         line: 403,
                                         column: 31,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    span: Span {
                                     start: Position {
                                      line: 403,
                                      column: 28,
                                     },
                                     end: Position {
                                      line: 403,
                                      column: 32,
                                     },
                                    },
                                   },
                                  ),
                                  FunctionApplication(
                                   FunctionApplication {
                                    function: Identifier(
                                     Identifier {
                                      id: "merge",
                                      span: Span {
                                       start: Position {
                                        line: 403,
                                        column: 34,
                                       },
                                       end: Position {
                                        line: 403,
                                        column: 39,
                                       },
                                      },
                                     },
                                    ),
                                    arguments: [
                                     Identifier(
                                      Identifier {
                                       id: "loc",
                                       span: Span {
                                        start: Position {
                                         line: 403,
                                         column: 40,
                                        },
                                        end: Position {
                                         line: 403,
                                         column: 43,
                                        },
                                       },
                                      },
                                     ),
                                     Identifier(
                                      Identifier {
                                       id: "defs",
                                       span: Span {
                                        start: Position {
                                         line: 403,
                                         column: 44,
                                        },
                                        end: Position {
                                         line: 403,
                                         column: 48,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                   },
                                  ),
                                 ],
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 402,
                                 column: 22,
                                },
                                end: Position {
                                 line: 403,
                                 column: 49,
                                },
                               },
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 402,
                               column: 17,
                              },
                              end: Position {
                               line: 403,
                               column: 49,
                              },
                             },
                            },
                           ),
                          },
                         ),
                        ],
                        span: Span {
                         start: Position {
                          line: 397,
                          column: 20,
                         },
                         end: Position {
                          line: 404,
                          column: 8,
                         },
                        },
                       },
                      ),
                     ],
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 394,
                     column: 7,
                    },
                    end: Position {
                     line: 404,
                     column: 8,
                    },
                   },
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "strMatching",
                    span: Span {
                     start: Position {
                      line: 406,
                      column: 5,
                     },
                     end: Position {
                      line: 406,
                      column: 16,
                     },
                    },
                   },
                  ),
                 ],
                 to: Function(
                  Function {
                   head: Simple(
                    FunctionHeadSimple {
                     identifier: "pattern",
                    },
                   ),
                   body: FunctionApplication(
                    FunctionApplication {
                     function: Identifier(
                      Identifier {
                       id: "mkOptionType",
                       span: Span {
                        start: Position {
                         line: 406,
                         column: 28,
                        },
                        end: Position {
                         line: 406,
                         column: 40,
                        },
                       },
                      },
                     ),
                     arguments: [
                      Map(
                       Map {
                        recursive: false,
                        bindings: [
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "name",
                              span: Span {
                               start: Position {
                                line: 407,
                                column: 7,
                               },
                               end: Position {
                                line: 407,
                                column: 11,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "strMatching ",
                                span: Span {
                                 start: Position {
                                  line: 407,
                                  column: 15,
                                 },
                                 end: Position {
                                  line: 407,
                                  column: 53,
                                 },
                                },
                               },
                              ),
                              Interpolation(
                               PartInterpolation {
                                expression: FunctionApplication(
                                 FunctionApplication {
                                  function: Identifier(
                                   Identifier {
                                    id: "escapeNixString",
                                    span: Span {
                                     start: Position {
                                      line: 407,
                                      column: 29,
                                     },
                                     end: Position {
                                      line: 407,
                                      column: 44,
                                     },
                                    },
                                   },
                                  ),
                                  arguments: [
                                   Identifier(
                                    Identifier {
                                     id: "pattern",
                                     span: Span {
                                      start: Position {
                                       line: 407,
                                       column: 45,
                                      },
                                      end: Position {
                                       line: 407,
                                       column: 52,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                 },
                                ),
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 407,
                               column: 14,
                              },
                              end: Position {
                               line: 407,
                               column: 54,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "description",
                              span: Span {
                               start: Position {
                                line: 408,
                                column: 7,
                               },
                               end: Position {
                                line: 408,
                                column: 18,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "string matching the pattern ",
                                span: Span {
                                 start: Position {
                                  line: 408,
                                  column: 22,
                                 },
                                 end: Position {
                                  line: 408,
                                  column: 60,
                                 },
                                },
                               },
                              ),
                              Interpolation(
                               PartInterpolation {
                                expression: Identifier(
                                 Identifier {
                                  id: "pattern",
                                  span: Span {
                                   start: Position {
                                    line: 408,
                                    column: 52,
                                   },
                                   end: Position {
                                    line: 408,
                                    column: 59,
                                   },
                                  },
                                 },
                                ),
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 408,
                               column: 21,
                              },
                              end: Position {
                               line: 408,
                               column: 61,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "descriptionClass",
                              span: Span {
                               start: Position {
                                line: 409,
                                column: 7,
                               },
                               end: Position {
                                line: 409,
                                column: 23,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "noun",
                                span: Span {
                                 start: Position {
                                  line: 409,
                                  column: 27,
                                 },
                                 end: Position {
                                  line: 409,
                                  column: 31,
                                 },
                                },
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 409,
                               column: 26,
                              },
                              end: Position {
                               line: 409,
                               column: 32,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "check",
                              span: Span {
                               start: Position {
                                line: 410,
                                column: 7,
                               },
                               end: Position {
                                line: 410,
                                column: 12,
                               },
                              },
                             },
                            ),
                           ],
                           to: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "x",
                              },
                             ),
                             body: BinaryOperation(
                              BinaryOperation {
                               left: FunctionApplication(
                                FunctionApplication {
                                 function: PropertyAccess(
                                  PropertyAccess {
                                   expression: Identifier(
                                    Identifier {
                                     id: "str",
                                     span: Span {
                                      start: Position {
                                       line: 410,
                                       column: 18,
                                      },
                                      end: Position {
                                       line: 410,
                                       column: 21,
                                      },
                                     },
                                    },
                                   ),
                                   attribute_path: [
                                    Raw(
                                     PartRaw {
                                      content: "check",
                                      span: Span {
                                       start: Position {
                                        line: 410,
                                        column: 22,
                                       },
                                       end: Position {
                                        line: 410,
                                        column: 27,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   default: None,
                                  },
                                 ),
                                 arguments: [
                                  Identifier(
                                   Identifier {
                                    id: "x",
                                    span: Span {
                                     start: Position {
                                      line: 410,
                                      column: 28,
                                     },
                                     end: Position {
                                      line: 410,
                                      column: 29,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                },
                               ),
                               operator: LogicalAnd,
                               right: BinaryOperation(
                                BinaryOperation {
                                 left: FunctionApplication(
                                  FunctionApplication {
                                   function: PropertyAccess(
                                    PropertyAccess {
                                     expression: Identifier(
                                      Identifier {
                                       id: "builtins",
                                       span: Span {
                                        start: Position {
                                         line: 410,
                                         column: 33,
                                        },
                                        end: Position {
                                         line: 410,
                                         column: 41,
                                        },
                                       },
                                      },
                                     ),
                                     attribute_path: [
                                      Raw(
                                       PartRaw {
                                        content: "match",
                                        span: Span {
                                         start: Position {
                                          line: 410,
                                          column: 42,
                                         },
                                         end: Position {
                                          line: 410,
                                          column: 47,
                                         },
                                        },
                                       },
                                      ),
                                     ],
                                     default: None,
                                    },
                                   ),
                                   arguments: [
                                    Identifier(
                                     Identifier {
                                      id: "pattern",
                                      span: Span {
                                       start: Position {
                                        line: 410,
                                        column: 48,
                                       },
                                       end: Position {
                                        line: 410,
                                        column: 55,
                                       },
                                      },
                                     },
                                    ),
                                    Identifier(
                                     Identifier {
                                      id: "x",
                                      span: Span {
                                       start: Position {
                                        line: 410,
                                        column: 56,
                                       },
                                       end: Position {
                                        line: 410,
                                        column: 57,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                  },
                                 ),
                                 operator: NotEqualTo,
                                 right: Identifier(
                                  Identifier {
                                   id: "null",
                                   span: Span {
                                    start: Position {
                                     line: 410,
                                     column: 61,
                                    },
                                    end: Position {
                                     line: 410,
                                     column: 65,
                                    },
                                   },
                                  },
                                 ),
                                },
                               ),
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 410,
                               column: 15,
                              },
                              end: Position {
                               line: 410,
                               column: 65,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         Inherit(
                          BindingInherit {
                           from: Some(
                            Identifier(
                             Identifier {
                              id: "str",
                              span: Span {
                               start: Position {
                                line: 411,
                                column: 16,
                               },
                               end: Position {
                                line: 411,
                                column: 19,
                               },
                              },
                             },
                            ),
                           ),
                           attributes: [
                            Raw(
                             PartRaw {
                              content: "merge",
                              span: Span {
                               start: Position {
                                line: 411,
                                column: 21,
                               },
                               end: Position {
                                line: 411,
                                column: 26,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 406,
                             column: 42,
                            },
                            end: Position {
                             line: 411,
                             column: 27,
                            },
                           },
                          },
                         ),
                        ],
                        span: Span {
                         start: Position {
                          line: 406,
                          column: 41,
                         },
                         end: Position {
                          line: 412,
                          column: 6,
                         },
                        },
                       },
                      ),
                     ],
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 406,
                     column: 19,
                    },
                    end: Position {
                     line: 412,
                     column: 6,
                    },
                   },
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "separatedString",
                    span: Span {
                     start: Position {
                      line: 416,
                      column: 5,
                     },
                     end: Position {
                      line: 416,
                      column: 20,
                     },
                    },
                   },
                  ),
                 ],
                 to: Function(
                  Function {
                   head: Simple(
                    FunctionHeadSimple {
                     identifier: "sep",
                    },
                   ),
                   body: FunctionApplication(
                    FunctionApplication {
                     function: Identifier(
                      Identifier {
                       id: "mkOptionType",
                       span: Span {
                        start: Position {
                         line: 416,
                         column: 28,
                        },
                        end: Position {
                         line: 416,
                         column: 40,
                        },
                       },
                      },
                     ),
                     arguments: [
                      Map(
                       Map {
                        recursive: true,
                        bindings: [
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "name",
                              span: Span {
                               start: Position {
                                line: 417,
                                column: 7,
                               },
                               end: Position {
                                line: 417,
                                column: 11,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "separatedString",
                                span: Span {
                                 start: Position {
                                  line: 417,
                                  column: 15,
                                 },
                                 end: Position {
                                  line: 417,
                                  column: 30,
                                 },
                                },
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 417,
                               column: 14,
                              },
                              end: Position {
                               line: 417,
                               column: 31,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "description",
                              span: Span {
                               start: Position {
                                line: 418,
                                column: 7,
                               },
                               end: Position {
                                line: 418,
                                column: 18,
                               },
                              },
                             },
                            ),
                           ],
                           to: IfThenElse(
                            IfThenElse {
                             predicate: BinaryOperation(
                              BinaryOperation {
                               left: Identifier(
                                Identifier {
                                 id: "sep",
                                 span: Span {
                                  start: Position {
                                   line: 418,
                                   column: 24,
                                  },
                                  end: Position {
                                   line: 418,
                                   column: 27,
                                  },
                                 },
                                },
                               ),
                               operator: EqualTo,
                               right: String(
                                String_ {
                                 parts: [],
                                 span: Span {
                                  start: Position {
                                   line: 418,
                                   column: 31,
                                  },
                                  end: Position {
                                   line: 418,
                                   column: 33,
                                  },
                                 },
                                },
                               ),
                              },
                             ),
                             then: String(
                              String_ {
                               parts: [
                                Raw(
                                 PartRaw {
                                  content: "Concatenated string",
                                  span: Span {
                                   start: Position {
                                    line: 419,
                                    column: 15,
                                   },
                                   end: Position {
                                    line: 419,
                                    column: 34,
                                   },
                                  },
                                 },
                                ),
                               ],
                               span: Span {
                                start: Position {
                                 line: 419,
                                 column: 14,
                                },
                                end: Position {
                                 line: 419,
                                 column: 35,
                                },
                               },
                              },
                             ),
                             else_: String(
                              String_ {
                               parts: [
                                Raw(
                                 PartRaw {
                                  content: "strings concatenated with ",
                                  span: Span {
                                   start: Position {
                                    line: 420,
                                    column: 15,
                                   },
                                   end: Position {
                                    line: 420,
                                    column: 63,
                                   },
                                  },
                                 },
                                ),
                                Interpolation(
                                 PartInterpolation {
                                  expression: FunctionApplication(
                                   FunctionApplication {
                                    function: PropertyAccess(
                                     PropertyAccess {
                                      expression: Identifier(
                                       Identifier {
                                        id: "builtins",
                                        span: Span {
                                         start: Position {
                                          line: 420,
                                          column: 43,
                                         },
                                         end: Position {
                                          line: 420,
                                          column: 51,
                                         },
                                        },
                                       },
                                      ),
                                      attribute_path: [
                                       Raw(
                                        PartRaw {
                                         content: "toJSON",
                                         span: Span {
                                          start: Position {
                                           line: 420,
                                           column: 52,
                                          },
                                          end: Position {
                                           line: 420,
                                           column: 58,
                                          },
                                         },
                                        },
                                       ),
                                      ],
                                      default: None,
                                     },
                                    ),
                                    arguments: [
                                     Identifier(
                                      Identifier {
                                       id: "sep",
                                       span: Span {
                                        start: Position {
                                         line: 420,
                                         column: 59,
                                        },
                                        end: Position {
                                         line: 420,
                                         column: 62,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                   },
                                  ),
                                 },
                                ),
                               ],
                               span: Span {
                                start: Position {
                                 line: 420,
                                 column: 14,
                                },
                                end: Position {
                                 line: 420,
                                 column: 64,
                                },
                               },
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 418,
                               column: 21,
                              },
                              end: Position {
                               line: 420,
                               column: 64,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "descriptionClass",
                              span: Span {
                               start: Position {
                                line: 422,
                                column: 7,
                               },
                               end: Position {
                                line: 422,
                                column: 23,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "noun",
                                span: Span {
                                 start: Position {
                                  line: 422,
                                  column: 27,
                                 },
                                 end: Position {
                                  line: 422,
                                  column: 31,
                                 },
                                },
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 422,
                               column: 26,
                              },
                              end: Position {
                               line: 422,
                               column: 32,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "check",
                              span: Span {
                               start: Position {
                                line: 423,
                                column: 7,
                               },
                               end: Position {
                                line: 423,
                                column: 12,
                               },
                              },
                             },
                            ),
                           ],
                           to: Identifier(
                            Identifier {
                             id: "isString",
                             span: Span {
                              start: Position {
                               line: 423,
                               column: 15,
                              },
                              end: Position {
                               line: 423,
                               column: 23,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "merge",
                              span: Span {
                               start: Position {
                                line: 424,
                                column: 7,
                               },
                               end: Position {
                                line: 424,
                                column: 12,
                               },
                              },
                             },
                            ),
                           ],
                           to: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "loc",
                              },
                             ),
                             body: Function(
                              Function {
                               head: Simple(
                                FunctionHeadSimple {
                                 identifier: "defs",
                                },
                               ),
                               body: FunctionApplication(
                                FunctionApplication {
                                 function: Identifier(
                                  Identifier {
                                   id: "concatStringsSep",
                                   span: Span {
                                    start: Position {
                                     line: 424,
                                     column: 26,
                                    },
                                    end: Position {
                                     line: 424,
                                     column: 42,
                                    },
                                   },
                                  },
                                 ),
                                 arguments: [
                                  Identifier(
                                   Identifier {
                                    id: "sep",
                                    span: Span {
                                     start: Position {
                                      line: 424,
                                      column: 43,
                                     },
                                     end: Position {
                                      line: 424,
                                      column: 46,
                                     },
                                    },
                                   },
                                  ),
                                  FunctionApplication(
                                   FunctionApplication {
                                    function: Identifier(
                                     Identifier {
                                      id: "getValues",
                                      span: Span {
                                       start: Position {
                                        line: 424,
                                        column: 48,
                                       },
                                       end: Position {
                                        line: 424,
                                        column: 57,
                                       },
                                      },
                                     },
                                    ),
                                    arguments: [
                                     Identifier(
                                      Identifier {
                                       id: "defs",
                                       span: Span {
                                        start: Position {
                                         line: 424,
                                         column: 58,
                                        },
                                        end: Position {
                                         line: 424,
                                         column: 62,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                   },
                                  ),
                                 ],
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 424,
                                 column: 20,
                                },
                                end: Position {
                                 line: 424,
                                 column: 63,
                                },
                               },
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 424,
                               column: 15,
                              },
                              end: Position {
                               line: 424,
                               column: 63,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "functor",
                              span: Span {
                               start: Position {
                                line: 425,
                                column: 7,
                               },
                               end: Position {
                                line: 425,
                                column: 14,
                               },
                              },
                             },
                            ),
                           ],
                           to: BinaryOperation(
                            BinaryOperation {
                             left: FunctionApplication(
                              FunctionApplication {
                               function: Identifier(
                                Identifier {
                                 id: "defaultFunctor",
                                 span: Span {
                                  start: Position {
                                   line: 425,
                                   column: 18,
                                  },
                                  end: Position {
                                   line: 425,
                                   column: 32,
                                  },
                                 },
                                },
                               ),
                               arguments: [
                                Identifier(
                                 Identifier {
                                  id: "name",
                                  span: Span {
                                   start: Position {
                                    line: 425,
                                    column: 33,
                                   },
                                   end: Position {
                                    line: 425,
                                    column: 37,
                                   },
                                  },
                                 },
                                ),
                               ],
                              },
                             ),
                             operator: Update,
                             right: Map(
                              Map {
                               recursive: false,
                               bindings: [
                                KeyValue(
                                 BindingKeyValue {
                                  from: [
                                   Raw(
                                    PartRaw {
                                     content: "payload",
                                     span: Span {
                                      start: Position {
                                       line: 426,
                                       column: 9,
                                      },
                                      end: Position {
                                       line: 426,
                                       column: 16,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  to: Identifier(
                                   Identifier {
                                    id: "sep",
                                    span: Span {
                                     start: Position {
                                      line: 426,
                                      column: 19,
                                     },
                                     end: Position {
                                      line: 426,
                                      column: 22,
                                     },
                                    },
                                   },
                                  ),
                                 },
                                ),
                                KeyValue(
                                 BindingKeyValue {
                                  from: [
                                   Raw(
                                    PartRaw {
                                     content: "binOp",
                                     span: Span {
                                      start: Position {
                                       line: 427,
                                       column: 9,
                                      },
                                      end: Position {
                                       line: 427,
                                       column: 14,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  to: Function(
                                   Function {
                                    head: Simple(
                                     FunctionHeadSimple {
                                      identifier: "sepLhs",
                                     },
                                    ),
                                    body: Function(
                                     Function {
                                      head: Simple(
                                       FunctionHeadSimple {
                                        identifier: "sepRhs",
                                       },
                                      ),
                                      body: IfThenElse(
                                       IfThenElse {
                                        predicate: BinaryOperation(
                                         BinaryOperation {
                                          left: Identifier(
                                           Identifier {
                                            id: "sepLhs",
                                            span: Span {
                                             start: Position {
                                              line: 428,
                                              column: 14,
                                             },
                                             end: Position {
                                              line: 428,
                                              column: 20,
                                             },
                                            },
                                           },
                                          ),
                                          operator: EqualTo,
                                          right: Identifier(
                                           Identifier {
                                            id: "sepRhs",
                                            span: Span {
                                             start: Position {
                                              line: 428,
                                              column: 24,
                                             },
                                             end: Position {
                                              line: 428,
                                              column: 30,
                                             },
                                            },
                                           },
                                          ),
                                         },
                                        ),
                                        then: Identifier(
                                         Identifier {
                                          id: "sepLhs",
                                          span: Span {
                                           start: Position {
                                            line: 428,
                                            column: 36,
                                           },
                                           end: Position {
                                            line: 428,
                                            column: 42,
                                           },
                                          },
                                         },
                                        ),
                                        else_: Identifier(
                                         Identifier {
                                          id: "null",
                                          span: Span {
                                           start: Position {
                                            line: 429,
                                            column: 16,
                                           },
                                           end: Position {
                                            line: 429,
                                            column: 20,
                                           },
                                          },
                                         },
                                        ),
                                        span: Span {
                                         start: Position {
                                          line: 428,
                                          column: 11,
                                         },
                                         end: Position {
                                          line: 429,
                                          column: 20,
                                         },
                                        },
                                       },
                                      ),
                                      span: Span {
                                       start: Position {
                                        line: 427,
                                        column: 25,
                                       },
                                       end: Position {
                                        line: 429,
                                        column: 20,
                                       },
                                      },
                                     },
                                    ),
                                    span: Span {
                                     start: Position {
                                      line: 427,
                                      column: 17,
                                     },
                                     end: Position {
                                      line: 429,
                                      column: 20,
                                     },
                                    },
                                   },
                                  ),
                                 },
                                ),
                               ],
                               span: Span {
                                start: Position {
                                 line: 425,
                                 column: 42,
                                },
                                end: Position {
                                 line: 430,
                                 column: 8,
                                },
                               },
                              },
                             ),
                            },
                           ),
                          },
                         ),
                        ],
                        span: Span {
                         start: Position {
                          line: 416,
                          column: 41,
                         },
                         end: Position {
                          line: 431,
                          column: 6,
                         },
                        },
                       },
                      ),
                     ],
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 416,
                     column: 23,
                    },
                    end: Position {
                     line: 431,
                     column: 6,
                    },
                   },
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "lines",
                    span: Span {
                     start: Position {
                      line: 433,
                      column: 5,
                     },
                     end: Position {
                      line: 433,
                      column: 10,
                     },
                    },
                   },
                  ),
                 ],
                 to: FunctionApplication(
                  FunctionApplication {
                   function: Identifier(
                    Identifier {
                     id: "separatedString",
                     span: Span {
                      start: Position {
                       line: 433,
                       column: 13,
                      },
                      end: Position {
                       line: 433,
                       column: 28,
                      },
                     },
                    },
                   ),
                   arguments: [
                    String(
                     String_ {
                      parts: [
                       Raw(
                        PartRaw {
                         content: "\n",
                         span: Span {
                          start: Position {
                           line: 433,
                           column: 30,
                          },
                          end: Position {
                           line: 433,
                           column: 32,
                          },
                         },
                        },
                       ),
                      ],
                      span: Span {
                       start: Position {
                        line: 433,
                        column: 29,
                       },
                       end: Position {
                        line: 433,
                        column: 33,
                       },
                      },
                     },
                    ),
                   ],
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "commas",
                    span: Span {
                     start: Position {
                      line: 434,
                      column: 5,
                     },
                     end: Position {
                      line: 434,
                      column: 11,
                     },
                    },
                   },
                  ),
                 ],
                 to: FunctionApplication(
                  FunctionApplication {
                   function: Identifier(
                    Identifier {
                     id: "separatedString",
                     span: Span {
                      start: Position {
                       line: 434,
                       column: 14,
                      },
                      end: Position {
                       line: 434,
                       column: 29,
                      },
                     },
                    },
                   ),
                   arguments: [
                    String(
                     String_ {
                      parts: [
                       Raw(
                        PartRaw {
                         content: ",",
                         span: Span {
                          start: Position {
                           line: 434,
                           column: 31,
                          },
                          end: Position {
                           line: 434,
                           column: 32,
                          },
                         },
                        },
                       ),
                      ],
                      span: Span {
                       start: Position {
                        line: 434,
                        column: 30,
                       },
                       end: Position {
                        line: 434,
                        column: 33,
                       },
                      },
                     },
                    ),
                   ],
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "envVar",
                    span: Span {
                     start: Position {
                      line: 435,
                      column: 5,
                     },
                     end: Position {
                      line: 435,
                      column: 11,
                     },
                    },
                   },
                  ),
                 ],
                 to: FunctionApplication(
                  FunctionApplication {
                   function: Identifier(
                    Identifier {
                     id: "separatedString",
                     span: Span {
                      start: Position {
                       line: 435,
                       column: 14,
                      },
                      end: Position {
                       line: 435,
                       column: 29,
                      },
                     },
                    },
                   ),
                   arguments: [
                    String(
                     String_ {
                      parts: [
                       Raw(
                        PartRaw {
                         content: ":",
                         span: Span {
                          start: Position {
                           line: 435,
                           column: 31,
                          },
                          end: Position {
                           line: 435,
                           column: 32,
                          },
                         },
                        },
                       ),
                      ],
                      span: Span {
                       start: Position {
                        line: 435,
                        column: 30,
                       },
                       end: Position {
                        line: 435,
                        column: 33,
                       },
                      },
                     },
                    ),
                   ],
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "string",
                    span: Span {
                     start: Position {
                      line: 439,
                      column: 5,
                     },
                     end: Position {
                      line: 439,
                      column: 11,
                     },
                    },
                   },
                  ),
                 ],
                 to: BinaryOperation(
                  BinaryOperation {
                   left: FunctionApplication(
                    FunctionApplication {
                     function: Identifier(
                      Identifier {
                       id: "separatedString",
                       span: Span {
                        start: Position {
                         line: 439,
                         column: 14,
                        },
                        end: Position {
                         line: 439,
                         column: 29,
                        },
                       },
                      },
                     ),
                     arguments: [
                      String(
                       String_ {
                        parts: [],
                        span: Span {
                         start: Position {
                          line: 439,
                          column: 30,
                         },
                         end: Position {
                          line: 439,
                          column: 32,
                         },
                        },
                       },
                      ),
                     ],
                    },
                   ),
                   operator: Update,
                   right: Map(
                    Map {
                     recursive: false,
                     bindings: [
                      KeyValue(
                       BindingKeyValue {
                        from: [
                         Raw(
                          PartRaw {
                           content: "name",
                           span: Span {
                            start: Position {
                             line: 440,
                             column: 7,
                            },
                            end: Position {
                             line: 440,
                             column: 11,
                            },
                           },
                          },
                         ),
                        ],
                        to: String(
                         String_ {
                          parts: [
                           Raw(
                            PartRaw {
                             content: "string",
                             span: Span {
                              start: Position {
                               line: 440,
                               column: 15,
                              },
                              end: Position {
                               line: 440,
                               column: 21,
                              },
                             },
                            },
                           ),
                          ],
                          span: Span {
                           start: Position {
                            line: 440,
                            column: 14,
                           },
                           end: Position {
                            line: 440,
                            column: 22,
                           },
                          },
                         },
                        ),
                       },
                      ),
                      KeyValue(
                       BindingKeyValue {
                        from: [
                         Raw(
                          PartRaw {
                           content: "deprecationMessage",
                           span: Span {
                            start: Position {
                             line: 441,
                             column: 7,
                            },
                            end: Position {
                             line: 441,
                             column: 25,
                            },
                           },
                          },
                         ),
                        ],
                        to: String(
                         String_ {
                          parts: [
                           Raw(
                            PartRaw {
                             content: "See https://github.com/NixOS/nixpkgs/pull/66346 for better alternative types.",
                             span: Span {
                              start: Position {
                               line: 441,
                               column: 29,
                              },
                              end: Position {
                               line: 441,
                               column: 106,
                              },
                             },
                            },
                           ),
                          ],
                          span: Span {
                           start: Position {
                            line: 441,
                            column: 28,
                           },
                           end: Position {
                            line: 441,
                            column: 107,
                           },
                          },
                         },
                        ),
                       },
                      ),
                     ],
                     span: Span {
                      start: Position {
                       line: 439,
                       column: 36,
                      },
                      end: Position {
                       line: 442,
                       column: 6,
                      },
                     },
                    },
                   ),
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "passwdEntry",
                    span: Span {
                     start: Position {
                      line: 444,
                      column: 5,
                     },
                     end: Position {
                      line: 444,
                      column: 16,
                     },
                    },
                   },
                  ),
                 ],
                 to: Function(
                  Function {
                   head: Simple(
                    FunctionHeadSimple {
                     identifier: "entryType",
                    },
                   ),
                   body: BinaryOperation(
                    BinaryOperation {
                     left: FunctionApplication(
                      FunctionApplication {
                       function: Identifier(
                        Identifier {
                         id: "addCheck",
                         span: Span {
                          start: Position {
                           line: 444,
                           column: 30,
                          },
                          end: Position {
                           line: 444,
                           column: 38,
                          },
                         },
                        },
                       ),
                       arguments: [
                        Identifier(
                         Identifier {
                          id: "entryType",
                          span: Span {
                           start: Position {
                            line: 444,
                            column: 39,
                           },
                           end: Position {
                            line: 444,
                            column: 48,
                           },
                          },
                         },
                        ),
                        Function(
                         Function {
                          head: Simple(
                           FunctionHeadSimple {
                            identifier: "str",
                           },
                          ),
                          body: UnaryOperation(
                           UnaryOperation {
                            operator: Not,
                            operand: BinaryOperation(
                             BinaryOperation {
                              left: FunctionApplication(
                               FunctionApplication {
                                function: Identifier(
                                 Identifier {
                                  id: "hasInfix",
                                  span: Span {
                                   start: Position {
                                    line: 444,
                                    column: 57,
                                   },
                                   end: Position {
                                    line: 444,
                                    column: 65,
                                   },
                                  },
                                 },
                                ),
                                arguments: [
                                 String(
                                  String_ {
                                   parts: [
                                    Raw(
                                     PartRaw {
                                      content: ":",
                                      span: Span {
                                       start: Position {
                                        line: 444,
                                        column: 67,
                                       },
                                       end: Position {
                                        line: 444,
                                        column: 68,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   span: Span {
                                    start: Position {
                                     line: 444,
                                     column: 66,
                                    },
                                    end: Position {
                                     line: 444,
                                     column: 69,
                                    },
                                   },
                                  },
                                 ),
                                 Identifier(
                                  Identifier {
                                   id: "str",
                                   span: Span {
                                    start: Position {
                                     line: 444,
                                     column: 70,
                                    },
                                    end: Position {
                                     line: 444,
                                     column: 73,
                                    },
                                   },
                                  },
                                 ),
                                ],
                               },
                              ),
                              operator: LogicalOr,
                              right: FunctionApplication(
                               FunctionApplication {
                                function: Identifier(
                                 Identifier {
                                  id: "hasInfix",
                                  span: Span {
                                   start: Position {
                                    line: 444,
                                    column: 77,
                                   },
                                   end: Position {
                                    line: 444,
                                    column: 85,
                                   },
                                  },
                                 },
                                ),
                                arguments: [
                                 String(
                                  String_ {
                                   parts: [
                                    Raw(
                                     PartRaw {
                                      content: "\n",
                                      span: Span {
                                       start: Position {
                                        line: 444,
                                        column: 87,
                                       },
                                       end: Position {
                                        line: 444,
                                        column: 89,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   span: Span {
                                    start: Position {
                                     line: 444,
                                     column: 86,
                                    },
                                    end: Position {
                                     line: 444,
                                     column: 90,
                                    },
                                   },
                                  },
                                 ),
                                 Identifier(
                                  Identifier {
                                   id: "str",
                                   span: Span {
                                    start: Position {
                                     line: 444,
                                     column: 91,
                                    },
                                    end: Position {
                                     line: 444,
                                     column: 94,
                                    },
                                   },
                                  },
                                 ),
                                ],
                               },
                              ),
                             },
                            ),
                            span: Span {
                             start: Position {
                              line: 444,
                              column: 55,
                             },
                             end: Position {
                              line: 444,
                              column: 95,
                             },
                            },
                           },
                          ),
                          span: Span {
                           start: Position {
                            line: 444,
                            column: 50,
                           },
                           end: Position {
                            line: 444,
                            column: 95,
                           },
                          },
                         },
                        ),
                       ],
                      },
                     ),
                     operator: Update,
                     right: Map(
                      Map {
                       recursive: false,
                       bindings: [
                        KeyValue(
                         BindingKeyValue {
                          from: [
                           Raw(
                            PartRaw {
                             content: "name",
                             span: Span {
                              start: Position {
                               line: 445,
                               column: 7,
                              },
                              end: Position {
                               line: 445,
                               column: 11,
                              },
                             },
                            },
                           ),
                          ],
                          to: String(
                           String_ {
                            parts: [
                             Raw(
                              PartRaw {
                               content: "passwdEntry ",
                               span: Span {
                                start: Position {
                                 line: 445,
                                 column: 15,
                                },
                                end: Position {
                                 line: 445,
                                 column: 44,
                                },
                               },
                              },
                             ),
                             Interpolation(
                              PartInterpolation {
                               expression: PropertyAccess(
                                PropertyAccess {
                                 expression: Identifier(
                                  Identifier {
                                   id: "entryType",
                                   span: Span {
                                    start: Position {
                                     line: 445,
                                     column: 29,
                                    },
                                    end: Position {
                                     line: 445,
                                     column: 38,
                                    },
                                   },
                                  },
                                 ),
                                 attribute_path: [
                                  Raw(
                                   PartRaw {
                                    content: "name",
                                    span: Span {
                                     start: Position {
                                      line: 445,
                                      column: 39,
                                     },
                                     end: Position {
                                      line: 445,
                                      column: 43,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 default: None,
                                },
                               ),
                              },
                             ),
                            ],
                            span: Span {
                             start: Position {
                              line: 445,
                              column: 14,
                             },
                             end: Position {
                              line: 445,
                              column: 45,
                             },
                            },
                           },
                          ),
                         },
                        ),
                        KeyValue(
                         BindingKeyValue {
                          from: [
                           Raw(
                            PartRaw {
                             content: "description",
                             span: Span {
                              start: Position {
                               line: 446,
                               column: 7,
                              },
                              end: Position {
                               line: 446,
                               column: 18,
                              },
                             },
                            },
                           ),
                          ],
                          to: String(
                           String_ {
                            parts: [
                             Interpolation(
                              PartInterpolation {
                               expression: FunctionApplication(
                                FunctionApplication {
                                 function: Identifier(
                                  Identifier {
                                   id: "optionDescriptionPhrase",
                                   span: Span {
                                    start: Position {
                                     line: 446,
                                     column: 24,
                                    },
                                    end: Position {
                                     line: 446,
                                     column: 47,
                                    },
                                   },
                                  },
                                 ),
                                 arguments: [
                                  Function(
                                   Function {
                                    head: Simple(
                                     FunctionHeadSimple {
                                      identifier: "class",
                                     },
                                    ),
                                    body: BinaryOperation(
                                     BinaryOperation {
                                      left: Identifier(
                                       Identifier {
                                        id: "class",
                                        span: Span {
                                         start: Position {
                                          line: 446,
                                          column: 56,
                                         },
                                         end: Position {
                                          line: 446,
                                          column: 61,
                                         },
                                        },
                                       },
                                      ),
                                      operator: EqualTo,
                                      right: String(
                                       String_ {
                                        parts: [
                                         Raw(
                                          PartRaw {
                                           content: "noun",
                                           span: Span {
                                            start: Position {
                                             line: 446,
                                             column: 66,
                                            },
                                            end: Position {
                                             line: 446,
                                             column: 70,
                                            },
                                           },
                                          },
                                         ),
                                        ],
                                        span: Span {
                                         start: Position {
                                          line: 446,
                                          column: 65,
                                         },
                                         end: Position {
                                          line: 446,
                                          column: 71,
                                         },
                                        },
                                       },
                                      ),
                                     },
                                    ),
                                    span: Span {
                                     start: Position {
                                      line: 446,
                                      column: 49,
                                     },
                                     end: Position {
                                      line: 446,
                                      column: 71,
                                     },
                                    },
                                   },
                                  ),
                                  Identifier(
                                   Identifier {
                                    id: "entryType",
                                    span: Span {
                                     start: Position {
                                      line: 446,
                                      column: 73,
                                     },
                                     end: Position {
                                      line: 446,
                                      column: 82,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                },
                               ),
                              },
                             ),
                             Raw(
                              PartRaw {
                               content: ", not containing newlines or colons",
                               span: Span {
                                start: Position {
                                 line: 446,
                                 column: 22,
                                },
                                end: Position {
                                 line: 446,
                                 column: 118,
                                },
                               },
                              },
                             ),
                            ],
                            span: Span {
                             start: Position {
                              line: 446,
                              column: 21,
                             },
                             end: Position {
                              line: 446,
                              column: 119,
                             },
                            },
                           },
                          ),
                         },
                        ),
                       ],
                       span: Span {
                        start: Position {
                         line: 444,
                         column: 100,
                        },
                        end: Position {
                         line: 447,
                         column: 6,
                        },
                       },
                      },
                     ),
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 444,
                     column: 19,
                    },
                    end: Position {
                     line: 447,
                     column: 6,
                    },
                   },
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "attrs",
                    span: Span {
                     start: Position {
                      line: 449,
                      column: 5,
                     },
                     end: Position {
                      line: 449,
                      column: 10,
                     },
                    },
                   },
                  ),
                 ],
                 to: FunctionApplication(
                  FunctionApplication {
                   function: Identifier(
                    Identifier {
                     id: "mkOptionType",
                     span: Span {
                      start: Position {
                       line: 449,
                       column: 13,
                      },
                      end: Position {
                       line: 449,
                       column: 25,
                      },
                     },
                    },
                   ),
                   arguments: [
                    Map(
                     Map {
                      recursive: false,
                      bindings: [
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "name",
                            span: Span {
                             start: Position {
                              line: 450,
                              column: 7,
                             },
                             end: Position {
                              line: 450,
                              column: 11,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "attrs",
                              span: Span {
                               start: Position {
                                line: 450,
                                column: 15,
                               },
                               end: Position {
                                line: 450,
                                column: 20,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 450,
                             column: 14,
                            },
                            end: Position {
                             line: 450,
                             column: 21,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "description",
                            span: Span {
                             start: Position {
                              line: 451,
                              column: 7,
                             },
                             end: Position {
                              line: 451,
                              column: 18,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "attribute set",
                              span: Span {
                               start: Position {
                                line: 451,
                                column: 22,
                               },
                               end: Position {
                                line: 451,
                                column: 35,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 451,
                             column: 21,
                            },
                            end: Position {
                             line: 451,
                             column: 36,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "check",
                            span: Span {
                             start: Position {
                              line: 452,
                              column: 7,
                             },
                             end: Position {
                              line: 452,
                              column: 12,
                             },
                            },
                           },
                          ),
                         ],
                         to: Identifier(
                          Identifier {
                           id: "isAttrs",
                           span: Span {
                            start: Position {
                             line: 452,
                             column: 15,
                            },
                            end: Position {
                             line: 452,
                             column: 22,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "merge",
                            span: Span {
                             start: Position {
                              line: 453,
                              column: 7,
                             },
                             end: Position {
                              line: 453,
                              column: 12,
                             },
                            },
                           },
                          ),
                         ],
                         to: Function(
                          Function {
                           head: Simple(
                            FunctionHeadSimple {
                             identifier: "loc",
                            },
                           ),
                           body: FunctionApplication(
                            FunctionApplication {
                             function: Identifier(
                              Identifier {
                               id: "foldl'",
                               span: Span {
                                start: Position {
                                 line: 453,
                                 column: 20,
                                },
                                end: Position {
                                 line: 453,
                                 column: 26,
                                },
                               },
                              },
                             ),
                             arguments: [
                              Function(
                               Function {
                                head: Simple(
                                 FunctionHeadSimple {
                                  identifier: "res",
                                 },
                                ),
                                body: Function(
                                 Function {
                                  head: Simple(
                                   FunctionHeadSimple {
                                    identifier: "def",
                                   },
                                  ),
                                  body: BinaryOperation(
                                   BinaryOperation {
                                    left: Identifier(
                                     Identifier {
                                      id: "res",
                                      span: Span {
                                       start: Position {
                                        line: 453,
                                        column: 38,
                                       },
                                       end: Position {
                                        line: 453,
                                        column: 41,
                                       },
                                      },
                                     },
                                    ),
                                    operator: Update,
                                    right: PropertyAccess(
                                     PropertyAccess {
                                      expression: Identifier(
                                       Identifier {
                                        id: "def",
                                        span: Span {
                                         start: Position {
                                          line: 453,
                                          column: 45,
                                         },
                                         end: Position {
                                          line: 453,
                                          column: 48,
                                         },
                                        },
                                       },
                                      ),
                                      attribute_path: [
                                       Raw(
                                        PartRaw {
                                         content: "value",
                                         span: Span {
                                          start: Position {
                                           line: 453,
                                           column: 49,
                                          },
                                          end: Position {
                                           line: 453,
                                           column: 54,
                                          },
                                         },
                                        },
                                       ),
                                      ],
                                      default: None,
                                     },
                                    ),
                                   },
                                  ),
                                  span: Span {
                                   start: Position {
                                    line: 453,
                                    column: 33,
                                   },
                                   end: Position {
                                    line: 453,
                                    column: 54,
                                   },
                                  },
                                 },
                                ),
                                span: Span {
                                 start: Position {
                                  line: 453,
                                  column: 28,
                                 },
                                 end: Position {
                                  line: 453,
                                  column: 54,
                                 },
                                },
                               },
                              ),
                              Map(
                               Map {
                                recursive: false,
                                bindings: [],
                                span: Span {
                                 start: Position {
                                  line: 453,
                                  column: 56,
                                 },
                                 end: Position {
                                  line: 453,
                                  column: 58,
                                 },
                                },
                               },
                              ),
                             ],
                            },
                           ),
                           span: Span {
                            start: Position {
                             line: 453,
                             column: 15,
                            },
                            end: Position {
                             line: 453,
                             column: 58,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "emptyValue",
                            span: Span {
                             start: Position {
                              line: 454,
                              column: 7,
                             },
                             end: Position {
                              line: 454,
                              column: 17,
                             },
                            },
                           },
                          ),
                         ],
                         to: Map(
                          Map {
                           recursive: false,
                           bindings: [
                            KeyValue(
                             BindingKeyValue {
                              from: [
                               Raw(
                                PartRaw {
                                 content: "value",
                                 span: Span {
                                  start: Position {
                                   line: 454,
                                   column: 22,
                                  },
                                  end: Position {
                                   line: 454,
                                   column: 27,
                                  },
                                 },
                                },
                               ),
                              ],
                              to: Map(
                               Map {
                                recursive: false,
                                bindings: [],
                                span: Span {
                                 start: Position {
                                  line: 454,
                                  column: 30,
                                 },
                                 end: Position {
                                  line: 454,
                                  column: 32,
                                 },
                                },
                               },
                              ),
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 454,
                             column: 20,
                            },
                            end: Position {
                             line: 454,
                             column: 35,
                            },
                           },
                          },
                         ),
                        },
                       ),
                      ],
                      span: Span {
                       start: Position {
                        line: 449,
                        column: 26,
                       },
                       end: Position {
                        line: 455,
                        column: 6,
                       },
                      },
                     },
                    ),
                   ],
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "package",
                    span: Span {
                     start: Position {
                      line: 464,
                      column: 5,
                     },
                     end: Position {
                      line: 464,
                      column: 12,
                     },
                    },
                   },
                  ),
                 ],
                 to: FunctionApplication(
                  FunctionApplication {
                   function: Identifier(
                    Identifier {
                     id: "mkOptionType",
                     span: Span {
                      start: Position {
                       line: 464,
                       column: 15,
                      },
                      end: Position {
                       line: 464,
                       column: 27,
                      },
                     },
                    },
                   ),
                   arguments: [
                    Map(
                     Map {
                      recursive: false,
                      bindings: [
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "name",
                            span: Span {
                             start: Position {
                              line: 465,
                              column: 7,
                             },
                             end: Position {
                              line: 465,
                              column: 11,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "package",
                              span: Span {
                               start: Position {
                                line: 465,
                                column: 15,
                               },
                               end: Position {
                                line: 465,
                                column: 22,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 465,
                             column: 14,
                            },
                            end: Position {
                             line: 465,
                             column: 23,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "descriptionClass",
                            span: Span {
                             start: Position {
                              line: 466,
                              column: 7,
                             },
                             end: Position {
                              line: 466,
                              column: 23,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "noun",
                              span: Span {
                               start: Position {
                                line: 466,
                                column: 27,
                               },
                               end: Position {
                                line: 466,
                                column: 31,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 466,
                             column: 26,
                            },
                            end: Position {
                             line: 466,
                             column: 32,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "check",
                            span: Span {
                             start: Position {
                              line: 467,
                              column: 7,
                             },
                             end: Position {
                              line: 467,
                              column: 12,
                             },
                            },
                           },
                          ),
                         ],
                         to: Function(
                          Function {
                           head: Simple(
                            FunctionHeadSimple {
                             identifier: "x",
                            },
                           ),
                           body: BinaryOperation(
                            BinaryOperation {
                             left: FunctionApplication(
                              FunctionApplication {
                               function: Identifier(
                                Identifier {
                                 id: "isDerivation",
                                 span: Span {
                                  start: Position {
                                   line: 467,
                                   column: 18,
                                  },
                                  end: Position {
                                   line: 467,
                                   column: 30,
                                  },
                                 },
                                },
                               ),
                               arguments: [
                                Identifier(
                                 Identifier {
                                  id: "x",
                                  span: Span {
                                   start: Position {
                                    line: 467,
                                    column: 31,
                                   },
                                   end: Position {
                                    line: 467,
                                    column: 32,
                                   },
                                  },
                                 },
                                ),
                               ],
                              },
                             ),
                             operator: LogicalOr,
                             right: FunctionApplication(
                              FunctionApplication {
                               function: Identifier(
                                Identifier {
                                 id: "isStorePath",
                                 span: Span {
                                  start: Position {
                                   line: 467,
                                   column: 36,
                                  },
                                  end: Position {
                                   line: 467,
                                   column: 47,
                                  },
                                 },
                                },
                               ),
                               arguments: [
                                Identifier(
                                 Identifier {
                                  id: "x",
                                  span: Span {
                                   start: Position {
                                    line: 467,
                                    column: 48,
                                   },
                                   end: Position {
                                    line: 467,
                                    column: 49,
                                   },
                                  },
                                 },
                                ),
                               ],
                              },
                             ),
                            },
                           ),
                           span: Span {
                            start: Position {
                             line: 467,
                             column: 15,
                            },
                            end: Position {
                             line: 467,
                             column: 49,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "merge",
                            span: Span {
                             start: Position {
                              line: 468,
                              column: 7,
                             },
                             end: Position {
                              line: 468,
                              column: 12,
                             },
                            },
                           },
                          ),
                         ],
                         to: Function(
                          Function {
                           head: Simple(
                            FunctionHeadSimple {
                             identifier: "loc",
                            },
                           ),
                           body: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "defs",
                              },
                             ),
                             body: LetIn(
                              LetIn {
                               bindings: [
                                KeyValue(
                                 BindingKeyValue {
                                  from: [
                                   Raw(
                                    PartRaw {
                                     content: "res",
                                     span: Span {
                                      start: Position {
                                       line: 469,
                                       column: 13,
                                      },
                                      end: Position {
                                       line: 469,
                                       column: 16,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  to: FunctionApplication(
                                   FunctionApplication {
                                    function: Identifier(
                                     Identifier {
                                      id: "mergeOneOption",
                                      span: Span {
                                       start: Position {
                                        line: 469,
                                        column: 19,
                                       },
                                       end: Position {
                                        line: 469,
                                        column: 33,
                                       },
                                      },
                                     },
                                    ),
                                    arguments: [
                                     Identifier(
                                      Identifier {
                                       id: "loc",
                                       span: Span {
                                        start: Position {
                                         line: 469,
                                         column: 34,
                                        },
                                        end: Position {
                                         line: 469,
                                         column: 37,
                                        },
                                       },
                                      },
                                     ),
                                     Identifier(
                                      Identifier {
                                       id: "defs",
                                       span: Span {
                                        start: Position {
                                         line: 469,
                                         column: 38,
                                        },
                                        end: Position {
                                         line: 469,
                                         column: 42,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                   },
                                  ),
                                 },
                                ),
                               ],
                               target: IfThenElse(
                                IfThenElse {
                                 predicate: BinaryOperation(
                                  BinaryOperation {
                                   left: FunctionApplication(
                                    FunctionApplication {
                                     function: PropertyAccess(
                                      PropertyAccess {
                                       expression: Identifier(
                                        Identifier {
                                         id: "builtins",
                                         span: Span {
                                          start: Position {
                                           line: 470,
                                           column: 15,
                                          },
                                          end: Position {
                                           line: 470,
                                           column: 23,
                                          },
                                         },
                                        },
                                       ),
                                       attribute_path: [
                                        Raw(
                                         PartRaw {
                                          content: "isPath",
                                          span: Span {
                                           start: Position {
                                            line: 470,
                                            column: 24,
                                           },
                                           end: Position {
                                            line: 470,
                                            column: 30,
                                           },
                                          },
                                         },
                                        ),
                                       ],
                                       default: None,
                                      },
                                     ),
                                     arguments: [
                                      Identifier(
                                       Identifier {
                                        id: "res",
                                        span: Span {
                                         start: Position {
                                          line: 470,
                                          column: 31,
                                         },
                                         end: Position {
                                          line: 470,
                                          column: 34,
                                         },
                                        },
                                       },
                                      ),
                                     ],
                                    },
                                   ),
                                   operator: LogicalOr,
                                   right: BinaryOperation(
                                    BinaryOperation {
                                     left: FunctionApplication(
                                      FunctionApplication {
                                       function: PropertyAccess(
                                        PropertyAccess {
                                         expression: Identifier(
                                          Identifier {
                                           id: "builtins",
                                           span: Span {
                                            start: Position {
                                             line: 470,
                                             column: 39,
                                            },
                                            end: Position {
                                             line: 470,
                                             column: 47,
                                            },
                                           },
                                          },
                                         ),
                                         attribute_path: [
                                          Raw(
                                           PartRaw {
                                            content: "isString",
                                            span: Span {
                                             start: Position {
                                              line: 470,
                                              column: 48,
                                             },
                                             end: Position {
                                              line: 470,
                                              column: 56,
                                             },
                                            },
                                           },
                                          ),
                                         ],
                                         default: None,
                                        },
                                       ),
                                       arguments: [
                                        Identifier(
                                         Identifier {
                                          id: "res",
                                          span: Span {
                                           start: Position {
                                            line: 470,
                                            column: 57,
                                           },
                                           end: Position {
                                            line: 470,
                                            column: 60,
                                           },
                                          },
                                         },
                                        ),
                                       ],
                                      },
                                     ),
                                     operator: LogicalAnd,
                                     right: UnaryOperation(
                                      UnaryOperation {
                                       operator: Not,
                                       operand: FunctionApplication(
                                        FunctionApplication {
                                         function: PropertyAccess(
                                          PropertyAccess {
                                           expression: Identifier(
                                            Identifier {
                                             id: "builtins",
                                             span: Span {
                                              start: Position {
                                               line: 470,
                                               column: 66,
                                              },
                                              end: Position {
                                               line: 470,
                                               column: 74,
                                              },
                                             },
                                            },
                                           ),
                                           attribute_path: [
                                            Raw(
                                             PartRaw {
                                              content: "hasContext",
                                              span: Span {
                                               start: Position {
                                                line: 470,
                                                column: 75,
                                               },
                                               end: Position {
                                                line: 470,
                                                column: 85,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                           default: None,
                                          },
                                         ),
                                         arguments: [
                                          Identifier(
                                           Identifier {
                                            id: "res",
                                            span: Span {
                                             start: Position {
                                              line: 470,
                                              column: 86,
                                             },
                                             end: Position {
                                              line: 470,
                                              column: 89,
                                             },
                                            },
                                           },
                                          ),
                                         ],
                                        },
                                       ),
                                       span: Span {
                                        start: Position {
                                         line: 470,
                                         column: 64,
                                        },
                                        end: Position {
                                         line: 470,
                                         column: 89,
                                        },
                                       },
                                      },
                                     ),
                                    },
                                   ),
                                  },
                                 ),
                                 then: FunctionApplication(
                                  FunctionApplication {
                                   function: Identifier(
                                    Identifier {
                                     id: "toDerivation",
                                     span: Span {
                                      start: Position {
                                       line: 471,
                                       column: 16,
                                      },
                                      end: Position {
                                       line: 471,
                                       column: 28,
                                      },
                                     },
                                    },
                                   ),
                                   arguments: [
                                    Identifier(
                                     Identifier {
                                      id: "res",
                                      span: Span {
                                       start: Position {
                                        line: 471,
                                        column: 29,
                                       },
                                       end: Position {
                                        line: 471,
                                        column: 32,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                  },
                                 ),
                                 else_: Identifier(
                                  Identifier {
                                   id: "res",
                                   span: Span {
                                    start: Position {
                                     line: 472,
                                     column: 16,
                                    },
                                    end: Position {
                                     line: 472,
                                     column: 19,
                                    },
                                   },
                                  },
                                 ),
                                 span: Span {
                                  start: Position {
                                   line: 470,
                                   column: 12,
                                  },
                                  end: Position {
                                   line: 472,
                                   column: 19,
                                  },
                                 },
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 469,
                                 column: 9,
                                },
                                end: Position {
                                 line: 472,
                                 column: 19,
                                },
                               },
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 468,
                               column: 20,
                              },
                              end: Position {
                               line: 472,
                               column: 19,
                              },
                             },
                            },
                           ),
                           span: Span {
                            start: Position {
                             line: 468,
                             column: 15,
                            },
                            end: Position {
                             line: 472,
                             column: 19,
                            },
                           },
                          },
                         ),
                        },
                       ),
                      ],
                      span: Span {
                       start: Position {
                        line: 464,
                        column: 28,
                       },
                       end: Position {
                        line: 473,
                        column: 6,
                       },
                      },
                     },
                    ),
                   ],
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "shellPackage",
                    span: Span {
                     start: Position {
                      line: 475,
                      column: 5,
                     },
                     end: Position {
                      line: 475,
                      column: 17,
                     },
                    },
                   },
                  ),
                 ],
                 to: BinaryOperation(
                  BinaryOperation {
                   left: Identifier(
                    Identifier {
                     id: "package",
                     span: Span {
                      start: Position {
                       line: 475,
                       column: 20,
                      },
                      end: Position {
                       line: 475,
                       column: 27,
                      },
                     },
                    },
                   ),
                   operator: Update,
                   right: Map(
                    Map {
                     recursive: false,
                     bindings: [
                      KeyValue(
                       BindingKeyValue {
                        from: [
                         Raw(
                          PartRaw {
                           content: "check",
                           span: Span {
                            start: Position {
                             line: 476,
                             column: 7,
                            },
                            end: Position {
                             line: 476,
                             column: 12,
                            },
                           },
                          },
                         ),
                        ],
                        to: Function(
                         Function {
                          head: Simple(
                           FunctionHeadSimple {
                            identifier: "x",
                           },
                          ),
                          body: BinaryOperation(
                           BinaryOperation {
                            left: FunctionApplication(
                             FunctionApplication {
                              function: Identifier(
                               Identifier {
                                id: "isDerivation",
                                span: Span {
                                 start: Position {
                                  line: 476,
                                  column: 18,
                                 },
                                 end: Position {
                                  line: 476,
                                  column: 30,
                                 },
                                },
                               },
                              ),
                              arguments: [
                               Identifier(
                                Identifier {
                                 id: "x",
                                 span: Span {
                                  start: Position {
                                   line: 476,
                                   column: 31,
                                  },
                                  end: Position {
                                   line: 476,
                                   column: 32,
                                  },
                                 },
                                },
                               ),
                              ],
                             },
                            ),
                            operator: LogicalAnd,
                            right: FunctionApplication(
                             FunctionApplication {
                              function: Identifier(
                               Identifier {
                                id: "hasAttr",
                                span: Span {
                                 start: Position {
                                  line: 476,
                                  column: 36,
                                 },
                                 end: Position {
                                  line: 476,
                                  column: 43,
                                 },
                                },
                               },
                              ),
                              arguments: [
                               String(
                                String_ {
                                 parts: [
                                  Raw(
                                   PartRaw {
                                    content: "shellPath",
                                    span: Span {
                                     start: Position {
                                      line: 476,
                                      column: 45,
                                     },
                                     end: Position {
                                      line: 476,
                                      column: 54,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 span: Span {
                                  start: Position {
                                   line: 476,
                                   column: 44,
                                  },
                                  end: Position {
                                   line: 476,
                                   column: 55,
                                  },
                                 },
                                },
                               ),
                               Identifier(
                                Identifier {
                                 id: "x",
                                 span: Span {
                                  start: Position {
                                   line: 476,
                                   column: 56,
                                  },
                                  end: Position {
                                   line: 476,
                                   column: 57,
                                  },
                                 },
                                },
                               ),
                              ],
                             },
                            ),
                           },
                          ),
                          span: Span {
                           start: Position {
                            line: 476,
                            column: 15,
                           },
                           end: Position {
                            line: 476,
                            column: 57,
                           },
                          },
                         },
                        ),
                       },
                      ),
                     ],
                     span: Span {
                      start: Position {
                       line: 475,
                       column: 31,
                      },
                      end: Position {
                       line: 477,
                       column: 6,
                      },
                     },
                    },
                   ),
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "path",
                    span: Span {
                     start: Position {
                      line: 479,
                      column: 5,
                     },
                     end: Position {
                      line: 479,
                      column: 9,
                     },
                    },
                   },
                  ),
                 ],
                 to: FunctionApplication(
                  FunctionApplication {
                   function: Identifier(
                    Identifier {
                     id: "mkOptionType",
                     span: Span {
                      start: Position {
                       line: 479,
                       column: 12,
                      },
                      end: Position {
                       line: 479,
                       column: 24,
                      },
                     },
                    },
                   ),
                   arguments: [
                    Map(
                     Map {
                      recursive: false,
                      bindings: [
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "name",
                            span: Span {
                             start: Position {
                              line: 480,
                              column: 7,
                             },
                             end: Position {
                              line: 480,
                              column: 11,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "path",
                              span: Span {
                               start: Position {
                                line: 480,
                                column: 15,
                               },
                               end: Position {
                                line: 480,
                                column: 19,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 480,
                             column: 14,
                            },
                            end: Position {
                             line: 480,
                             column: 20,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "check",
                            span: Span {
                             start: Position {
                              line: 481,
                              column: 7,
                             },
                             end: Position {
                              line: 481,
                              column: 12,
                             },
                            },
                           },
                          ),
                         ],
                         to: Function(
                          Function {
                           head: Simple(
                            FunctionHeadSimple {
                             identifier: "x",
                            },
                           ),
                           body: BinaryOperation(
                            BinaryOperation {
                             left: FunctionApplication(
                              FunctionApplication {
                               function: Identifier(
                                Identifier {
                                 id: "isCoercibleToString",
                                 span: Span {
                                  start: Position {
                                   line: 481,
                                   column: 18,
                                  },
                                  end: Position {
                                   line: 481,
                                   column: 37,
                                  },
                                 },
                                },
                               ),
                               arguments: [
                                Identifier(
                                 Identifier {
                                  id: "x",
                                  span: Span {
                                   start: Position {
                                    line: 481,
                                    column: 38,
                                   },
                                   end: Position {
                                    line: 481,
                                    column: 39,
                                   },
                                  },
                                 },
                                ),
                               ],
                              },
                             ),
                             operator: LogicalAnd,
                             right: BinaryOperation(
                              BinaryOperation {
                               left: FunctionApplication(
                                FunctionApplication {
                                 function: PropertyAccess(
                                  PropertyAccess {
                                   expression: Identifier(
                                    Identifier {
                                     id: "builtins",
                                     span: Span {
                                      start: Position {
                                       line: 481,
                                       column: 43,
                                      },
                                      end: Position {
                                       line: 481,
                                       column: 51,
                                      },
                                     },
                                    },
                                   ),
                                   attribute_path: [
                                    Raw(
                                     PartRaw {
                                      content: "substring",
                                      span: Span {
                                       start: Position {
                                        line: 481,
                                        column: 52,
                                       },
                                       end: Position {
                                        line: 481,
                                        column: 61,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   default: None,
                                  },
                                 ),
                                 arguments: [
                                  Integer(
                                   Integer {
                                    value: "0",
                                    span: Span {
                                     start: Position {
                                      line: 481,
                                      column: 62,
                                     },
                                     end: Position {
                                      line: 481,
                                      column: 63,
                                     },
                                    },
                                   },
                                  ),
                                  Integer(
                                   Integer {
                                    value: "1",
                                    span: Span {
                                     start: Position {
                                      line: 481,
                                      column: 64,
                                     },
                                     end: Position {
                                      line: 481,
                                      column: 65,
                                     },
                                    },
                                   },
                                  ),
                                  FunctionApplication(
                                   FunctionApplication {
                                    function: Identifier(
                                     Identifier {
                                      id: "toString",
                                      span: Span {
                                       start: Position {
                                        line: 481,
                                        column: 67,
                                       },
                                       end: Position {
                                        line: 481,
                                        column: 75,
                                       },
                                      },
                                     },
                                    ),
                                    arguments: [
                                     Identifier(
                                      Identifier {
                                       id: "x",
                                       span: Span {
                                        start: Position {
                                         line: 481,
                                         column: 76,
                                        },
                                        end: Position {
                                         line: 481,
                                         column: 77,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                   },
                                  ),
                                 ],
                                },
                               ),
                               operator: EqualTo,
                               right: String(
                                String_ {
                                 parts: [
                                  Raw(
                                   PartRaw {
                                    content: "/",
                                    span: Span {
                                     start: Position {
                                      line: 481,
                                      column: 83,
                                     },
                                     end: Position {
                                      line: 481,
                                      column: 84,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 span: Span {
                                  start: Position {
                                   line: 481,
                                   column: 82,
                                  },
                                  end: Position {
                                   line: 481,
                                   column: 85,
                                  },
                                 },
                                },
                               ),
                              },
                             ),
                            },
                           ),
                           span: Span {
                            start: Position {
                             line: 481,
                             column: 15,
                            },
                            end: Position {
                             line: 481,
                             column: 85,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "merge",
                            span: Span {
                             start: Position {
                              line: 482,
                              column: 7,
                             },
                             end: Position {
                              line: 482,
                              column: 12,
                             },
                            },
                           },
                          ),
                         ],
                         to: Identifier(
                          Identifier {
                           id: "mergeEqualOption",
                           span: Span {
                            start: Position {
                             line: 482,
                             column: 15,
                            },
                            end: Position {
                             line: 482,
                             column: 31,
                            },
                           },
                          },
                         ),
                        },
                       ),
                      ],
                      span: Span {
                       start: Position {
                        line: 479,
                        column: 25,
                       },
                       end: Position {
                        line: 483,
                        column: 6,
                       },
                      },
                     },
                    ),
                   ],
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "listOf",
                    span: Span {
                     start: Position {
                      line: 485,
                      column: 5,
                     },
                     end: Position {
                      line: 485,
                      column: 11,
                     },
                    },
                   },
                  ),
                 ],
                 to: Function(
                  Function {
                   head: Simple(
                    FunctionHeadSimple {
                     identifier: "elemType",
                    },
                   ),
                   body: FunctionApplication(
                    FunctionApplication {
                     function: Identifier(
                      Identifier {
                       id: "mkOptionType",
                       span: Span {
                        start: Position {
                         line: 485,
                         column: 24,
                        },
                        end: Position {
                         line: 485,
                         column: 36,
                        },
                       },
                      },
                     ),
                     arguments: [
                      Map(
                       Map {
                        recursive: true,
                        bindings: [
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "name",
                              span: Span {
                               start: Position {
                                line: 486,
                                column: 7,
                               },
                               end: Position {
                                line: 486,
                                column: 11,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "listOf",
                                span: Span {
                                 start: Position {
                                  line: 486,
                                  column: 15,
                                 },
                                 end: Position {
                                  line: 486,
                                  column: 21,
                                 },
                                },
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 486,
                               column: 14,
                              },
                              end: Position {
                               line: 486,
                               column: 22,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "description",
                              span: Span {
                               start: Position {
                                line: 487,
                                column: 7,
                               },
                               end: Position {
                                line: 487,
                                column: 18,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "list of ",
                                span: Span {
                                 start: Position {
                                  line: 487,
                                  column: 22,
                                 },
                                 end: Position {
                                  line: 487,
                                  column: 114,
                                 },
                                },
                               },
                              ),
                              Interpolation(
                               PartInterpolation {
                                expression: FunctionApplication(
                                 FunctionApplication {
                                  function: Identifier(
                                   Identifier {
                                    id: "optionDescriptionPhrase",
                                    span: Span {
                                     start: Position {
                                      line: 487,
                                      column: 32,
                                     },
                                     end: Position {
                                      line: 487,
                                      column: 55,
                                     },
                                    },
                                   },
                                  ),
                                  arguments: [
                                   Function(
                                    Function {
                                     head: Simple(
                                      FunctionHeadSimple {
                                       identifier: "class",
                                      },
                                     ),
                                     body: BinaryOperation(
                                      BinaryOperation {
                                       left: BinaryOperation(
                                        BinaryOperation {
                                         left: Identifier(
                                          Identifier {
                                           id: "class",
                                           span: Span {
                                            start: Position {
                                             line: 487,
                                             column: 64,
                                            },
                                            end: Position {
                                             line: 487,
                                             column: 69,
                                            },
                                           },
                                          },
                                         ),
                                         operator: EqualTo,
                                         right: String(
                                          String_ {
                                           parts: [
                                            Raw(
                                             PartRaw {
                                              content: "noun",
                                              span: Span {
                                               start: Position {
                                                line: 487,
                                                column: 74,
                                               },
                                               end: Position {
                                                line: 487,
                                                column: 78,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                           span: Span {
                                            start: Position {
                                             line: 487,
                                             column: 73,
                                            },
                                            end: Position {
                                             line: 487,
                                             column: 79,
                                            },
                                           },
                                          },
                                         ),
                                        },
                                       ),
                                       operator: LogicalOr,
                                       right: BinaryOperation(
                                        BinaryOperation {
                                         left: Identifier(
                                          Identifier {
                                           id: "class",
                                           span: Span {
                                            start: Position {
                                             line: 487,
                                             column: 83,
                                            },
                                            end: Position {
                                             line: 487,
                                             column: 88,
                                            },
                                           },
                                          },
                                         ),
                                         operator: EqualTo,
                                         right: String(
                                          String_ {
                                           parts: [
                                            Raw(
                                             PartRaw {
                                              content: "composite",
                                              span: Span {
                                               start: Position {
                                                line: 487,
                                                column: 93,
                                               },
                                               end: Position {
                                                line: 487,
                                                column: 102,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                           span: Span {
                                            start: Position {
                                             line: 487,
                                             column: 92,
                                            },
                                            end: Position {
                                             line: 487,
                                             column: 103,
                                            },
                                           },
                                          },
                                         ),
                                        },
                                       ),
                                      },
                                     ),
                                     span: Span {
                                      start: Position {
                                       line: 487,
                                       column: 57,
                                      },
                                      end: Position {
                                       line: 487,
                                       column: 103,
                                      },
                                     },
                                    },
                                   ),
                                   Identifier(
                                    Identifier {
                                     id: "elemType",
                                     span: Span {
                                      start: Position {
                                       line: 487,
                                       column: 105,
                                      },
                                      end: Position {
                                       line: 487,
                                       column: 113,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                 },
                                ),
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 487,
                               column: 21,
                              },
                              end: Position {
                               line: 487,
                               column: 115,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "descriptionClass",
                              span: Span {
                               start: Position {
                                line: 488,
                                column: 7,
                               },
                               end: Position {
                                line: 488,
                                column: 23,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "composite",
                                span: Span {
                                 start: Position {
                                  line: 488,
                                  column: 27,
                                 },
                                 end: Position {
                                  line: 488,
                                  column: 36,
                                 },
                                },
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 488,
                               column: 26,
                              },
                              end: Position {
                               line: 488,
                               column: 37,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "check",
                              span: Span {
                               start: Position {
                                line: 489,
                                column: 7,
                               },
                               end: Position {
                                line: 489,
                                column: 12,
                               },
                              },
                             },
                            ),
                           ],
                           to: Identifier(
                            Identifier {
                             id: "isList",
                             span: Span {
                              start: Position {
                               line: 489,
                               column: 15,
                              },
                              end: Position {
                               line: 489,
                               column: 21,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "merge",
                              span: Span {
                               start: Position {
                                line: 490,
                                column: 7,
                               },
                               end: Position {
                                line: 490,
                                column: 12,
                               },
                              },
                             },
                            ),
                           ],
                           to: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "loc",
                              },
                             ),
                             body: Function(
                              Function {
                               head: Simple(
                                FunctionHeadSimple {
                                 identifier: "defs",
                                },
                               ),
                               body: FunctionApplication(
                                FunctionApplication {
                                 function: Identifier(
                                  Identifier {
                                   id: "map",
                                   span: Span {
                                    start: Position {
                                     line: 491,
                                     column: 9,
                                    },
                                    end: Position {
                                     line: 491,
                                     column: 12,
                                    },
                                   },
                                  },
                                 ),
                                 arguments: [
                                  Function(
                                   Function {
                                    head: Simple(
                                     FunctionHeadSimple {
                                      identifier: "x",
                                     },
                                    ),
                                    body: PropertyAccess(
                                     PropertyAccess {
                                      expression: Identifier(
                                       Identifier {
                                        id: "x",
                                        span: Span {
                                         start: Position {
                                          line: 491,
                                          column: 17,
                                         },
                                         end: Position {
                                          line: 491,
                                          column: 18,
                                         },
                                        },
                                       },
                                      ),
                                      attribute_path: [
                                       Raw(
                                        PartRaw {
                                         content: "value",
                                         span: Span {
                                          start: Position {
                                           line: 491,
                                           column: 19,
                                          },
                                          end: Position {
                                           line: 491,
                                           column: 24,
                                          },
                                         },
                                        },
                                       ),
                                      ],
                                      default: None,
                                     },
                                    ),
                                    span: Span {
                                     start: Position {
                                      line: 491,
                                      column: 14,
                                     },
                                     end: Position {
                                      line: 491,
                                      column: 24,
                                     },
                                    },
                                   },
                                  ),
                                  FunctionApplication(
                                   FunctionApplication {
                                    function: Identifier(
                                     Identifier {
                                      id: "filter",
                                      span: Span {
                                       start: Position {
                                        line: 491,
                                        column: 27,
                                       },
                                       end: Position {
                                        line: 491,
                                        column: 33,
                                       },
                                      },
                                     },
                                    ),
                                    arguments: [
                                     Function(
                                      Function {
                                       head: Simple(
                                        FunctionHeadSimple {
                                         identifier: "x",
                                        },
                                       ),
                                       body: HasAttribute(
                                        HasAttribute {
                                         expression: Identifier(
                                          Identifier {
                                           id: "x",
                                           span: Span {
                                            start: Position {
                                             line: 491,
                                             column: 38,
                                            },
                                            end: Position {
                                             line: 491,
                                             column: 39,
                                            },
                                           },
                                          },
                                         ),
                                         attribute_path: [
                                          Raw(
                                           PartRaw {
                                            content: "value",
                                            span: Span {
                                             start: Position {
                                              line: 491,
                                              column: 42,
                                             },
                                             end: Position {
                                              line: 491,
                                              column: 47,
                                             },
                                            },
                                           },
                                          ),
                                         ],
                                        },
                                       ),
                                       span: Span {
                                        start: Position {
                                         line: 491,
                                         column: 35,
                                        },
                                        end: Position {
                                         line: 491,
                                         column: 47,
                                        },
                                       },
                                      },
                                     ),
                                     FunctionApplication(
                                      FunctionApplication {
                                       function: Identifier(
                                        Identifier {
                                         id: "concatLists",
                                         span: Span {
                                          start: Position {
                                           line: 491,
                                           column: 50,
                                          },
                                          end: Position {
                                           line: 491,
                                           column: 61,
                                          },
                                         },
                                        },
                                       ),
                                       arguments: [
                                        FunctionApplication(
                                         FunctionApplication {
                                          function: Identifier(
                                           Identifier {
                                            id: "imap1",
                                            span: Span {
                                             start: Position {
                                              line: 491,
                                              column: 63,
                                             },
                                             end: Position {
                                              line: 491,
                                              column: 68,
                                             },
                                            },
                                           },
                                          ),
                                          arguments: [
                                           Function(
                                            Function {
                                             head: Simple(
                                              FunctionHeadSimple {
                                               identifier: "n",
                                              },
                                             ),
                                             body: Function(
                                              Function {
                                               head: Simple(
                                                FunctionHeadSimple {
                                                 identifier: "def",
                                                },
                                               ),
                                               body: FunctionApplication(
                                                FunctionApplication {
                                                 function: Identifier(
                                                  Identifier {
                                                   id: "imap1",
                                                   span: Span {
                                                    start: Position {
                                                     line: 492,
                                                     column: 11,
                                                    },
                                                    end: Position {
                                                     line: 492,
                                                     column: 16,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                 arguments: [
                                                  Function(
                                                   Function {
                                                    head: Simple(
                                                     FunctionHeadSimple {
                                                      identifier: "m",
                                                     },
                                                    ),
                                                    body: Function(
                                                     Function {
                                                      head: Simple(
                                                       FunctionHeadSimple {
                                                        identifier: "def'",
                                                       },
                                                      ),
                                                      body: PropertyAccess(
                                                       PropertyAccess {
                                                        expression: FunctionApplication(
                                                         FunctionApplication {
                                                          function: Identifier(
                                                           Identifier {
                                                            id: "mergeDefinitions",
                                                            span: Span {
                                                             start: Position {
                                                              line: 493,
                                                              column: 14,
                                                             },
                                                             end: Position {
                                                              line: 493,
                                                              column: 30,
                                                             },
                                                            },
                                                           },
                                                          ),
                                                          arguments: [
                                                           BinaryOperation(
                                                            BinaryOperation {
                                                             left: Identifier(
                                                              Identifier {
                                                               id: "loc",
                                                               span: Span {
                                                                start: Position {
                                                                 line: 494,
                                                                 column: 16,
                                                                },
                                                                end: Position {
                                                                 line: 494,
                                                                 column: 19,
                                                                },
                                                               },
                                                              },
                                                             ),
                                                             operator: Concatenation,
                                                             right: List(
                                                              List {
                                                               elements: [
                                                                String(
                                                                 String_ {
                                                                  parts: [
                                                                   Raw(
                                                                    PartRaw {
                                                                     content: "[definition ",
                                                                     span: Span {
                                                                      start: Position {
                                                                       line: 494,
                                                                       column: 25,
                                                                      },
                                                                      end: Position {
                                                                       line: 494,
                                                                       column: 50,
                                                                      },
                                                                     },
                                                                    },
                                                                   ),
                                                                   Interpolation(
                                                                    PartInterpolation {
                                                                     expression: FunctionApplication(
                                                                      FunctionApplication {
                                                                       function: Identifier(
                                                                        Identifier {
                                                                         id: "toString",
                                                                         span: Span {
                                                                          start: Position {
                                                                           line: 494,
                                                                           column: 39,
                                                                          },
                                                                          end: Position {
                                                                           line: 494,
                                                                           column: 47,
                                                                          },
                                                                         },
                                                                        },
                                                                       ),
                                                                       arguments: [
                                                                        Identifier(
                                                                         Identifier {
                                                                          id: "n",
                                                                          span: Span {
                                                                           start: Position {
                                                                            line: 494,
                                                                            column: 48,
                                                                           },
                                                                           end: Position {
                                                                            line: 494,
                                                                            column: 49,
                                                                           },
                                                                          },
                                                                         },
                                                                        ),
                                                                       ],
                                                                      },
                                                                     ),
                                                                    },
                                                                   ),
                                                                   Raw(
                                                                    PartRaw {
                                                                     content: "-entry ",
                                                                     span: Span {
                                                                      start: Position {
                                                                       line: 494,
                                                                       column: 25,
                                                                      },
                                                                      end: Position {
                                                                       line: 494,
                                                                       column: 57,
                                                                      },
                                                                     },
                                                                    },
                                                                   ),
                                                                   Interpolation(
                                                                    PartInterpolation {
                                                                     expression: FunctionApplication(
                                                                      FunctionApplication {
                                                                       function: Identifier(
                                                                        Identifier {
                                                                         id: "toString",
                                                                         span: Span {
                                                                          start: Position {
                                                                           line: 494,
                                                                           column: 59,
                                                                          },
                                                                          end: Position {
                                                                           line: 494,
                                                                           column: 67,
                                                                          },
                                                                         },
                                                                        },
                                                                       ),
                                                                       arguments: [
                                                                        Identifier(
                                                                         Identifier {
                                                                          id: "m",
                                                                          span: Span {
                                                                           start: Position {
                                                                            line: 494,
                                                                            column: 68,
                                                                           },
                                                                           end: Position {
                                                                            line: 494,
                                                                            column: 69,
                                                                           },
                                                                          },
                                                                         },
                                                                        ),
                                                                       ],
                                                                      },
                                                                     ),
                                                                    },
                                                                   ),
                                                                   Raw(
                                                                    PartRaw {
                                                                     content: "]",
                                                                     span: Span {
                                                                      start: Position {
                                                                       line: 494,
                                                                       column: 25,
                                                                      },
                                                                      end: Position {
                                                                       line: 494,
                                                                       column: 71,
                                                                      },
                                                                     },
                                                                    },
                                                                   ),
                                                                  ],
                                                                  span: Span {
                                                                   start: Position {
                                                                    line: 494,
                                                                    column: 24,
                                                                   },
                                                                   end: Position {
                                                                    line: 494,
                                                                    column: 72,
                                                                   },
                                                                  },
                                                                 },
                                                                ),
                                                               ],
                                                               span: Span {
                                                                start: Position {
                                                                 line: 494,
                                                                 column: 23,
                                                                },
                                                                end: Position {
                                                                 line: 494,
                                                                 column: 73,
                                                                },
                                                               },
                                                              },
                                                             ),
                                                            },
                                                           ),
                                                           Identifier(
                                                            Identifier {
                                                             id: "elemType",
                                                             span: Span {
                                                              start: Position {
                                                               line: 495,
                                                               column: 15,
                                                              },
                                                              end: Position {
                                                               line: 495,
                                                               column: 23,
                                                              },
                                                             },
                                                            },
                                                           ),
                                                           List(
                                                            List {
                                                             elements: [
                                                              Map(
                                                               Map {
                                                                recursive: false,
                                                                bindings: [
                                                                 Inherit(
                                                                  BindingInherit {
                                                                   from: Some(
                                                                    Identifier(
                                                                     Identifier {
                                                                      id: "def",
                                                                      span: Span {
                                                                       start: Position {
                                                                        line: 496,
                                                                        column: 27,
                                                                       },
                                                                       end: Position {
                                                                        line: 496,
                                                                        column: 30,
                                                                       },
                                                                      },
                                                                     },
                                                                    ),
                                                                   ),
                                                                   attributes: [
                                                                    Raw(
                                                                     PartRaw {
                                                                      content: "file",
                                                                      span: Span {
                                                                       start: Position {
                                                                        line: 496,
                                                                        column: 32,
                                                                       },
                                                                       end: Position {
                                                                        line: 496,
                                                                        column: 36,
                                                                       },
                                                                      },
                                                                     },
                                                                    ),
                                                                   ],
                                                                   span: Span {
                                                                    start: Position {
                                                                     line: 496,
                                                                     column: 17,
                                                                    },
                                                                    end: Position {
                                                                     line: 496,
                                                                     column: 37,
                                                                    },
                                                                   },
                                                                  },
                                                                 ),
                                                                 KeyValue(
                                                                  BindingKeyValue {
                                                                   from: [
                                                                    Raw(
                                                                     PartRaw {
                                                                      content: "value",
                                                                      span: Span {
                                                                       start: Position {
                                                                        line: 496,
                                                                        column: 38,
                                                                       },
                                                                       end: Position {
                                                                        line: 496,
                                                                        column: 43,
                                                                       },
                                                                      },
                                                                     },
                                                                    ),
                                                                   ],
                                                                   to: Identifier(
                                                                    Identifier {
                                                                     id: "def'",
                                                                     span: Span {
                                                                      start: Position {
                                                                       line: 496,
                                                                       column: 46,
                                                                      },
                                                                      end: Position {
                                                                       line: 496,
                                                                       column: 50,
                                                                      },
                                                                     },
                                                                    },
                                                                   ),
                                                                  },
                                                                 ),
                                                                ],
                                                                span: Span {
                                                                 start: Position {
                                                                  line: 496,
                                                                  column: 16,
                                                                 },
                                                                 end: Position {
                                                                  line: 496,
                                                                  column: 53,
                                                                 },
                                                                },
                                                               },
                                                              ),
                                                             ],
                                                             span: Span {
                                                              start: Position {
                                                               line: 496,
                                                               column: 15,
                                                              },
                                                              end: Position {
                                                               line: 496,
                                                               column: 54,
                                                              },
                                                             },
                                                            },
                                                           ),
                                                          ],
                                                         },
                                                        ),
                                                        attribute_path: [
                                                         Raw(
                                                          PartRaw {
                                                           content: "optionalValue",
                                                           span: Span {
                                                            start: Position {
                                                             line: 497,
                                                             column: 15,
                                                            },
                                                            end: Position {
                                                             line: 497,
                                                             column: 28,
                                                            },
                                                           },
                                                          },
                                                         ),
                                                        ],
                                                        default: None,
                                                       },
                                                      ),
                                                      span: Span {
                                                       start: Position {
                                                        line: 492,
                                                        column: 21,
                                                       },
                                                       end: Position {
                                                        line: 497,
                                                        column: 28,
                                                       },
                                                      },
                                                     },
                                                    ),
                                                    span: Span {
                                                     start: Position {
                                                      line: 492,
                                                      column: 18,
                                                     },
                                                     end: Position {
                                                      line: 497,
                                                      column: 28,
                                                     },
                                                    },
                                                   },
                                                  ),
                                                  PropertyAccess(
                                                   PropertyAccess {
                                                    expression: Identifier(
                                                     Identifier {
                                                      id: "def",
                                                      span: Span {
                                                       start: Position {
                                                        line: 498,
                                                        column: 13,
                                                       },
                                                       end: Position {
                                                        line: 498,
                                                        column: 16,
                                                       },
                                                      },
                                                     },
                                                    ),
                                                    attribute_path: [
                                                     Raw(
                                                      PartRaw {
                                                       content: "value",
                                                       span: Span {
                                                        start: Position {
                                                         line: 498,
                                                         column: 17,
                                                        },
                                                        end: Position {
                                                         line: 498,
                                                         column: 22,
                                                        },
                                                       },
                                                      },
                                                     ),
                                                    ],
                                                    default: None,
                                                   },
                                                  ),
                                                 ],
                                                },
                                               ),
                                               span: Span {
                                                start: Position {
                                                 line: 491,
                                                 column: 73,
                                                },
                                                end: Position {
                                                 line: 498,
                                                 column: 22,
                                                },
                                               },
                                              },
                                             ),
                                             span: Span {
                                              start: Position {
                                               line: 491,
                                               column: 70,
                                              },
                                              end: Position {
                                               line: 498,
                                               column: 22,
                                              },
                                             },
                                            },
                                           ),
                                           Identifier(
                                            Identifier {
                                             id: "defs",
                                             span: Span {
                                              start: Position {
                                               line: 499,
                                               column: 11,
                                              },
                                              end: Position {
                                               line: 499,
                                               column: 15,
                                              },
                                             },
                                            },
                                           ),
                                          ],
                                         },
                                        ),
                                       ],
                                      },
                                     ),
                                    ],
                                   },
                                  ),
                                 ],
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 490,
                                 column: 20,
                                },
                                end: Position {
                                 line: 499,
                                 column: 18,
                                },
                               },
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 490,
                               column: 15,
                              },
                              end: Position {
                               line: 499,
                               column: 18,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "emptyValue",
                              span: Span {
                               start: Position {
                                line: 500,
                                column: 7,
                               },
                               end: Position {
                                line: 500,
                                column: 17,
                               },
                              },
                             },
                            ),
                           ],
                           to: Map(
                            Map {
                             recursive: false,
                             bindings: [
                              KeyValue(
                               BindingKeyValue {
                                from: [
                                 Raw(
                                  PartRaw {
                                   content: "value",
                                   span: Span {
                                    start: Position {
                                     line: 500,
                                     column: 22,
                                    },
                                    end: Position {
                                     line: 500,
                                     column: 27,
                                    },
                                   },
                                  },
                                 ),
                                ],
                                to: List(
                                 List {
                                  elements: [],
                                  span: Span {
                                   start: Position {
                                    line: 500,
                                    column: 30,
                                   },
                                   end: Position {
                                    line: 500,
                                    column: 32,
                                   },
                                  },
                                 },
                                ),
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 500,
                               column: 20,
                              },
                              end: Position {
                               line: 500,
                               column: 35,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "getSubOptions",
                              span: Span {
                               start: Position {
                                line: 501,
                                column: 7,
                               },
                               end: Position {
                                line: 501,
                                column: 20,
                               },
                              },
                             },
                            ),
                           ],
                           to: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "prefix",
                              },
                             ),
                             body: FunctionApplication(
                              FunctionApplication {
                               function: PropertyAccess(
                                PropertyAccess {
                                 expression: Identifier(
                                  Identifier {
                                   id: "elemType",
                                   span: Span {
                                    start: Position {
                                     line: 501,
                                     column: 31,
                                    },
                                    end: Position {
                                     line: 501,
                                     column: 39,
                                    },
                                   },
                                  },
                                 ),
                                 attribute_path: [
                                  Raw(
                                   PartRaw {
                                    content: "getSubOptions",
                                    span: Span {
                                     start: Position {
                                      line: 501,
                                      column: 40,
                                     },
                                     end: Position {
                                      line: 501,
                                      column: 53,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 default: None,
                                },
                               ),
                               arguments: [
                                BinaryOperation(
                                 BinaryOperation {
                                  left: Identifier(
                                   Identifier {
                                    id: "prefix",
                                    span: Span {
                                     start: Position {
                                      line: 501,
                                      column: 55,
                                     },
                                     end: Position {
                                      line: 501,
                                      column: 61,
                                     },
                                    },
                                   },
                                  ),
                                  operator: Concatenation,
                                  right: List(
                                   List {
                                    elements: [
                                     String(
                                      String_ {
                                       parts: [
                                        Raw(
                                         PartRaw {
                                          content: "*",
                                          span: Span {
                                           start: Position {
                                            line: 501,
                                            column: 67,
                                           },
                                           end: Position {
                                            line: 501,
                                            column: 68,
                                           },
                                          },
                                         },
                                        ),
                                       ],
                                       span: Span {
                                        start: Position {
                                         line: 501,
                                         column: 66,
                                        },
                                        end: Position {
                                         line: 501,
                                         column: 69,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    span: Span {
                                     start: Position {
                                      line: 501,
                                      column: 65,
                                     },
                                     end: Position {
                                      line: 501,
                                      column: 70,
                                     },
                                    },
                                   },
                                  ),
                                 },
                                ),
                               ],
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 501,
                               column: 23,
                              },
                              end: Position {
                               line: 501,
                               column: 71,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "getSubModules",
                              span: Span {
                               start: Position {
                                line: 502,
                                column: 7,
                               },
                               end: Position {
                                line: 502,
                                column: 20,
                               },
                              },
                             },
                            ),
                           ],
                           to: PropertyAccess(
                            PropertyAccess {
                             expression: Identifier(
                              Identifier {
                               id: "elemType",
                               span: Span {
                                start: Position {
                                 line: 502,
                                 column: 23,
                                },
                                end: Position {
                                 line: 502,
                                 column: 31,
                                },
                               },
                              },
                             ),
                             attribute_path: [
                              Raw(
                               PartRaw {
                                content: "getSubModules",
                                span: Span {
                                 start: Position {
                                  line: 502,
                                  column: 32,
                                 },
                                 end: Position {
                                  line: 502,
                                  column: 45,
                                 },
                                },
                               },
                              ),
                             ],
                             default: None,
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "substSubModules",
                              span: Span {
                               start: Position {
                                line: 503,
                                column: 7,
                               },
                               end: Position {
                                line: 503,
                                column: 22,
                               },
                              },
                             },
                            ),
                           ],
                           to: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "m",
                              },
                             ),
                             body: FunctionApplication(
                              FunctionApplication {
                               function: Identifier(
                                Identifier {
                                 id: "listOf",
                                 span: Span {
                                  start: Position {
                                   line: 503,
                                   column: 28,
                                  },
                                  end: Position {
                                   line: 503,
                                   column: 34,
                                  },
                                 },
                                },
                               ),
                               arguments: [
                                FunctionApplication(
                                 FunctionApplication {
                                  function: PropertyAccess(
                                   PropertyAccess {
                                    expression: Identifier(
                                     Identifier {
                                      id: "elemType",
                                      span: Span {
                                       start: Position {
                                        line: 503,
                                        column: 36,
                                       },
                                       end: Position {
                                        line: 503,
                                        column: 44,
                                       },
                                      },
                                     },
                                    ),
                                    attribute_path: [
                                     Raw(
                                      PartRaw {
                                       content: "substSubModules",
                                       span: Span {
                                        start: Position {
                                         line: 503,
                                         column: 45,
                                        },
                                        end: Position {
                                         line: 503,
                                         column: 60,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    default: None,
                                   },
                                  ),
                                  arguments: [
                                   Identifier(
                                    Identifier {
                                     id: "m",
                                     span: Span {
                                      start: Position {
                                       line: 503,
                                       column: 61,
                                      },
                                      end: Position {
                                       line: 503,
                                       column: 62,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                 },
                                ),
                               ],
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 503,
                               column: 25,
                              },
                              end: Position {
                               line: 503,
                               column: 63,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "functor",
                              span: Span {
                               start: Position {
                                line: 504,
                                column: 7,
                               },
                               end: Position {
                                line: 504,
                                column: 14,
                               },
                              },
                             },
                            ),
                           ],
                           to: BinaryOperation(
                            BinaryOperation {
                             left: FunctionApplication(
                              FunctionApplication {
                               function: Identifier(
                                Identifier {
                                 id: "defaultFunctor",
                                 span: Span {
                                  start: Position {
                                   line: 504,
                                   column: 18,
                                  },
                                  end: Position {
                                   line: 504,
                                   column: 32,
                                  },
                                 },
                                },
                               ),
                               arguments: [
                                Identifier(
                                 Identifier {
                                  id: "name",
                                  span: Span {
                                   start: Position {
                                    line: 504,
                                    column: 33,
                                   },
                                   end: Position {
                                    line: 504,
                                    column: 37,
                                   },
                                  },
                                 },
                                ),
                               ],
                              },
                             ),
                             operator: Update,
                             right: Map(
                              Map {
                               recursive: false,
                               bindings: [
                                KeyValue(
                                 BindingKeyValue {
                                  from: [
                                   Raw(
                                    PartRaw {
                                     content: "wrapped",
                                     span: Span {
                                      start: Position {
                                       line: 504,
                                       column: 44,
                                      },
                                      end: Position {
                                       line: 504,
                                       column: 51,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  to: Identifier(
                                   Identifier {
                                    id: "elemType",
                                    span: Span {
                                     start: Position {
                                      line: 504,
                                      column: 54,
                                     },
                                     end: Position {
                                      line: 504,
                                      column: 62,
                                     },
                                    },
                                   },
                                  ),
                                 },
                                ),
                               ],
                               span: Span {
                                start: Position {
                                 line: 504,
                                 column: 42,
                                },
                                end: Position {
                                 line: 504,
                                 column: 65,
                                },
                               },
                              },
                             ),
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "nestedTypes",
                              span: Span {
                               start: Position {
                                line: 505,
                                column: 7,
                               },
                               end: Position {
                                line: 505,
                                column: 18,
                               },
                              },
                             },
                            ),
                            Raw(
                             PartRaw {
                              content: "elemType",
                              span: Span {
                               start: Position {
                                line: 505,
                                column: 19,
                               },
                               end: Position {
                                line: 505,
                                column: 27,
                               },
                              },
                             },
                            ),
                           ],
                           to: Identifier(
                            Identifier {
                             id: "elemType",
                             span: Span {
                              start: Position {
                               line: 505,
                               column: 30,
                              },
                              end: Position {
                               line: 505,
                               column: 38,
                              },
                             },
                            },
                           ),
                          },
                         ),
                        ],
                        span: Span {
                         start: Position {
                          line: 485,
                          column: 37,
                         },
                         end: Position {
                          line: 506,
                          column: 6,
                         },
                        },
                       },
                      ),
                     ],
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 485,
                     column: 14,
                    },
                    end: Position {
                     line: 506,
                     column: 6,
                    },
                   },
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "nonEmptyListOf",
                    span: Span {
                     start: Position {
                      line: 508,
                      column: 5,
                     },
                     end: Position {
                      line: 508,
                      column: 19,
                     },
                    },
                   },
                  ),
                 ],
                 to: Function(
                  Function {
                   head: Simple(
                    FunctionHeadSimple {
                     identifier: "elemType",
                    },
                   ),
                   body: LetIn(
                    LetIn {
                     bindings: [
                      KeyValue(
                       BindingKeyValue {
                        from: [
                         Raw(
                          PartRaw {
                           content: "list",
                           span: Span {
                            start: Position {
                             line: 509,
                             column: 11,
                            },
                            end: Position {
                             line: 509,
                             column: 15,
                            },
                           },
                          },
                         ),
                        ],
                        to: FunctionApplication(
                         FunctionApplication {
                          function: Identifier(
                           Identifier {
                            id: "addCheck",
                            span: Span {
                             start: Position {
                              line: 509,
                              column: 18,
                             },
                             end: Position {
                              line: 509,
                              column: 26,
                             },
                            },
                           },
                          ),
                          arguments: [
                           FunctionApplication(
                            FunctionApplication {
                             function: PropertyAccess(
                              PropertyAccess {
                               expression: Identifier(
                                Identifier {
                                 id: "types",
                                 span: Span {
                                  start: Position {
                                   line: 509,
                                   column: 28,
                                  },
                                  end: Position {
                                   line: 509,
                                   column: 33,
                                  },
                                 },
                                },
                               ),
                               attribute_path: [
                                Raw(
                                 PartRaw {
                                  content: "listOf",
                                  span: Span {
                                   start: Position {
                                    line: 509,
                                    column: 34,
                                   },
                                   end: Position {
                                    line: 509,
                                    column: 40,
                                   },
                                  },
                                 },
                                ),
                               ],
                               default: None,
                              },
                             ),
                             arguments: [
                              Identifier(
                               Identifier {
                                id: "elemType",
                                span: Span {
                                 start: Position {
                                  line: 509,
                                  column: 41,
                                 },
                                 end: Position {
                                  line: 509,
                                  column: 49,
                                 },
                                },
                               },
                              ),
                             ],
                            },
                           ),
                           Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "l",
                              },
                             ),
                             body: BinaryOperation(
                              BinaryOperation {
                               left: Identifier(
                                Identifier {
                                 id: "l",
                                 span: Span {
                                  start: Position {
                                   line: 509,
                                   column: 55,
                                  },
                                  end: Position {
                                   line: 509,
                                   column: 56,
                                  },
                                 },
                                },
                               ),
                               operator: NotEqualTo,
                               right: List(
                                List {
                                 elements: [],
                                 span: Span {
                                  start: Position {
                                   line: 509,
                                   column: 60,
                                  },
                                  end: Position {
                                   line: 509,
                                   column: 62,
                                  },
                                 },
                                },
                               ),
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 509,
                               column: 52,
                              },
                              end: Position {
                               line: 509,
                               column: 62,
                              },
                             },
                            },
                           ),
                          ],
                         },
                        ),
                       },
                      ),
                     ],
                     target: BinaryOperation(
                      BinaryOperation {
                       left: Identifier(
                        Identifier {
                         id: "list",
                         span: Span {
                          start: Position {
                           line: 510,
                           column: 10,
                          },
                          end: Position {
                           line: 510,
                           column: 14,
                          },
                         },
                        },
                       ),
                       operator: Update,
                       right: Map(
                        Map {
                         recursive: false,
                         bindings: [
                          KeyValue(
                           BindingKeyValue {
                            from: [
                             Raw(
                              PartRaw {
                               content: "description",
                               span: Span {
                                start: Position {
                                 line: 511,
                                 column: 9,
                                },
                                end: Position {
                                 line: 511,
                                 column: 20,
                                },
                               },
                              },
                             ),
                            ],
                            to: String(
                             String_ {
                              parts: [
                               Raw(
                                PartRaw {
                                 content: "non-empty ",
                                 span: Span {
                                  start: Position {
                                   line: 511,
                                   column: 24,
                                  },
                                  end: Position {
                                   line: 511,
                                   column: 90,
                                  },
                                 },
                                },
                               ),
                               Interpolation(
                                PartInterpolation {
                                 expression: FunctionApplication(
                                  FunctionApplication {
                                   function: Identifier(
                                    Identifier {
                                     id: "optionDescriptionPhrase",
                                     span: Span {
                                      start: Position {
                                       line: 511,
                                       column: 36,
                                      },
                                      end: Position {
                                       line: 511,
                                       column: 59,
                                      },
                                     },
                                    },
                                   ),
                                   arguments: [
                                    Function(
                                     Function {
                                      head: Simple(
                                       FunctionHeadSimple {
                                        identifier: "class",
                                       },
                                      ),
                                      body: BinaryOperation(
                                       BinaryOperation {
                                        left: Identifier(
                                         Identifier {
                                          id: "class",
                                          span: Span {
                                           start: Position {
                                            line: 511,
                                            column: 68,
                                           },
                                           end: Position {
                                            line: 511,
                                            column: 73,
                                           },
                                          },
                                         },
                                        ),
                                        operator: EqualTo,
                                        right: String(
                                         String_ {
                                          parts: [
                                           Raw(
                                            PartRaw {
                                             content: "noun",
                                             span: Span {
                                              start: Position {
                                               line: 511,
                                               column: 78,
                                              },
                                              end: Position {
                                               line: 511,
                                               column: 82,
                                              },
                                             },
                                            },
                                           ),
                                          ],
                                          span: Span {
                                           start: Position {
                                            line: 511,
                                            column: 77,
                                           },
                                           end: Position {
                                            line: 511,
                                            column: 83,
                                           },
                                          },
                                         },
                                        ),
                                       },
                                      ),
                                      span: Span {
                                       start: Position {
                                        line: 511,
                                        column: 61,
                                       },
                                       end: Position {
                                        line: 511,
                                        column: 83,
                                       },
                                      },
                                     },
                                    ),
                                    Identifier(
                                     Identifier {
                                      id: "list",
                                      span: Span {
                                       start: Position {
                                        line: 511,
                                        column: 85,
                                       },
                                       end: Position {
                                        line: 511,
                                        column: 89,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                  },
                                 ),
                                },
                               ),
                              ],
                              span: Span {
                               start: Position {
                                line: 511,
                                column: 23,
                               },
                               end: Position {
                                line: 511,
                                column: 91,
                               },
                              },
                             },
                            ),
                           },
                          ),
                          KeyValue(
                           BindingKeyValue {
                            from: [
                             Raw(
                              PartRaw {
                               content: "emptyValue",
                               span: Span {
                                start: Position {
                                 line: 512,
                                 column: 9,
                                },
                                end: Position {
                                 line: 512,
                                 column: 19,
                                },
                               },
                              },
                             ),
                            ],
                            to: Map(
                             Map {
                              recursive: false,
                              bindings: [],
                              span: Span {
                               start: Position {
                                line: 512,
                                column: 22,
                               },
                               end: Position {
                                line: 512,
                                column: 25,
                               },
                              },
                             },
                            ),
                           },
                          ),
                         ],
                         span: Span {
                          start: Position {
                           line: 510,
                           column: 18,
                          },
                          end: Position {
                           line: 513,
                           column: 8,
                          },
                         },
                        },
                       ),
                      },
                     ),
                     span: Span {
                      start: Position {
                       line: 509,
                       column: 7,
                      },
                      end: Position {
                       line: 513,
                       column: 8,
                      },
                     },
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 508,
                     column: 22,
                    },
                    end: Position {
                     line: 513,
                     column: 8,
                    },
                   },
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "attrsOf",
                    span: Span {
                     start: Position {
                      line: 515,
                      column: 5,
                     },
                     end: Position {
                      line: 515,
                      column: 12,
                     },
                    },
                   },
                  ),
                 ],
                 to: Function(
                  Function {
                   head: Simple(
                    FunctionHeadSimple {
                     identifier: "elemType",
                    },
                   ),
                   body: FunctionApplication(
                    FunctionApplication {
                     function: Identifier(
                      Identifier {
                       id: "mkOptionType",
                       span: Span {
                        start: Position {
                         line: 515,
                         column: 25,
                        },
                        end: Position {
                         line: 515,
                         column: 37,
                        },
                       },
                      },
                     ),
                     arguments: [
                      Map(
                       Map {
                        recursive: true,
                        bindings: [
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "name",
                              span: Span {
                               start: Position {
                                line: 516,
                                column: 7,
                               },
                               end: Position {
                                line: 516,
                                column: 11,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "attrsOf",
                                span: Span {
                                 start: Position {
                                  line: 516,
                                  column: 15,
                                 },
                                 end: Position {
                                  line: 516,
                                  column: 22,
                                 },
                                },
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 516,
                               column: 14,
                              },
                              end: Position {
                               line: 516,
                               column: 23,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "description",
                              span: Span {
                               start: Position {
                                line: 517,
                                column: 7,
                               },
                               end: Position {
                                line: 517,
                                column: 18,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "attribute set of ",
                                span: Span {
                                 start: Position {
                                  line: 517,
                                  column: 22,
                                 },
                                 end: Position {
                                  line: 517,
                                  column: 123,
                                 },
                                },
                               },
                              ),
                              Interpolation(
                               PartInterpolation {
                                expression: FunctionApplication(
                                 FunctionApplication {
                                  function: Identifier(
                                   Identifier {
                                    id: "optionDescriptionPhrase",
                                    span: Span {
                                     start: Position {
                                      line: 517,
                                      column: 41,
                                     },
                                     end: Position {
                                      line: 517,
                                      column: 64,
                                     },
                                    },
                                   },
                                  ),
                                  arguments: [
                                   Function(
                                    Function {
                                     head: Simple(
                                      FunctionHeadSimple {
                                       identifier: "class",
                                      },
                                     ),
                                     body: BinaryOperation(
                                      BinaryOperation {
                                       left: BinaryOperation(
                                        BinaryOperation {
                                         left: Identifier(
                                          Identifier {
                                           id: "class",
                                           span: Span {
                                            start: Position {
                                             line: 517,
                                             column: 73,
                                            },
                                            end: Position {
                                             line: 517,
                                             column: 78,
                                            },
                                           },
                                          },
                                         ),
                                         operator: EqualTo,
                                         right: String(
                                          String_ {
                                           parts: [
                                            Raw(
                                             PartRaw {
                                              content: "noun",
                                              span: Span {
                                               start: Position {
                                                line: 517,
                                                column: 83,
                                               },
                                               end: Position {
                                                line: 517,
                                                column: 87,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                           span: Span {
                                            start: Position {
                                             line: 517,
                                             column: 82,
                                            },
                                            end: Position {
                                             line: 517,
                                             column: 88,
                                            },
                                           },
                                          },
                                         ),
                                        },
                                       ),
                                       operator: LogicalOr,
                                       right: BinaryOperation(
                                        BinaryOperation {
                                         left: Identifier(
                                          Identifier {
                                           id: "class",
                                           span: Span {
                                            start: Position {
                                             line: 517,
                                             column: 92,
                                            },
                                            end: Position {
                                             line: 517,
                                             column: 97,
                                            },
                                           },
                                          },
                                         ),
                                         operator: EqualTo,
                                         right: String(
                                          String_ {
                                           parts: [
                                            Raw(
                                             PartRaw {
                                              content: "composite",
                                              span: Span {
                                               start: Position {
                                                line: 517,
                                                column: 102,
                                               },
                                               end: Position {
                                                line: 517,
                                                column: 111,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                           span: Span {
                                            start: Position {
                                             line: 517,
                                             column: 101,
                                            },
                                            end: Position {
                                             line: 517,
                                             column: 112,
                                            },
                                           },
                                          },
                                         ),
                                        },
                                       ),
                                      },
                                     ),
                                     span: Span {
                                      start: Position {
                                       line: 517,
                                       column: 66,
                                      },
                                      end: Position {
                                       line: 517,
                                       column: 112,
                                      },
                                     },
                                    },
                                   ),
                                   Identifier(
                                    Identifier {
                                     id: "elemType",
                                     span: Span {
                                      start: Position {
                                       line: 517,
                                       column: 114,
                                      },
                                      end: Position {
                                       line: 517,
                                       column: 122,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                 },
                                ),
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 517,
                               column: 21,
                              },
                              end: Position {
                               line: 517,
                               column: 124,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "descriptionClass",
                              span: Span {
                               start: Position {
                                line: 518,
                                column: 7,
                               },
                               end: Position {
                                line: 518,
                                column: 23,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "composite",
                                span: Span {
                                 start: Position {
                                  line: 518,
                                  column: 27,
                                 },
                                 end: Position {
                                  line: 518,
                                  column: 36,
                                 },
                                },
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 518,
                               column: 26,
                              },
                              end: Position {
                               line: 518,
                               column: 37,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "check",
                              span: Span {
                               start: Position {
                                line: 519,
                                column: 7,
                               },
                               end: Position {
                                line: 519,
                                column: 12,
                               },
                              },
                             },
                            ),
                           ],
                           to: Identifier(
                            Identifier {
                             id: "isAttrs",
                             span: Span {
                              start: Position {
                               line: 519,
                               column: 15,
                              },
                              end: Position {
                               line: 519,
                               column: 22,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "merge",
                              span: Span {
                               start: Position {
                                line: 520,
                                column: 7,
                               },
                               end: Position {
                                line: 520,
                                column: 12,
                               },
                              },
                             },
                            ),
                           ],
                           to: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "loc",
                              },
                             ),
                             body: Function(
                              Function {
                               head: Simple(
                                FunctionHeadSimple {
                                 identifier: "defs",
                                },
                               ),
                               body: FunctionApplication(
                                FunctionApplication {
                                 function: Identifier(
                                  Identifier {
                                   id: "mapAttrs",
                                   span: Span {
                                    start: Position {
                                     line: 521,
                                     column: 9,
                                    },
                                    end: Position {
                                     line: 521,
                                     column: 17,
                                    },
                                   },
                                  },
                                 ),
                                 arguments: [
                                  Function(
                                   Function {
                                    head: Simple(
                                     FunctionHeadSimple {
                                      identifier: "n",
                                     },
                                    ),
                                    body: Function(
                                     Function {
                                      head: Simple(
                                       FunctionHeadSimple {
                                        identifier: "v",
                                       },
                                      ),
                                      body: PropertyAccess(
                                       PropertyAccess {
                                        expression: Identifier(
                                         Identifier {
                                          id: "v",
                                          span: Span {
                                           start: Position {
                                            line: 521,
                                            column: 25,
                                           },
                                           end: Position {
                                            line: 521,
                                            column: 26,
                                           },
                                          },
                                         },
                                        ),
                                        attribute_path: [
                                         Raw(
                                          PartRaw {
                                           content: "value",
                                           span: Span {
                                            start: Position {
                                             line: 521,
                                             column: 27,
                                            },
                                            end: Position {
                                             line: 521,
                                             column: 32,
                                            },
                                           },
                                          },
                                         ),
                                        ],
                                        default: None,
                                       },
                                      ),
                                      span: Span {
                                       start: Position {
                                        line: 521,
                                        column: 22,
                                       },
                                       end: Position {
                                        line: 521,
                                        column: 32,
                                       },
                                      },
                                     },
                                    ),
                                    span: Span {
                                     start: Position {
                                      line: 521,
                                      column: 19,
                                     },
                                     end: Position {
                                      line: 521,
                                      column: 32,
                                     },
                                    },
                                   },
                                  ),
                                  FunctionApplication(
                                   FunctionApplication {
                                    function: Identifier(
                                     Identifier {
                                      id: "filterAttrs",
                                      span: Span {
                                       start: Position {
                                        line: 521,
                                        column: 35,
                                       },
                                       end: Position {
                                        line: 521,
                                        column: 46,
                                       },
                                      },
                                     },
                                    ),
                                    arguments: [
                                     Function(
                                      Function {
                                       head: Simple(
                                        FunctionHeadSimple {
                                         identifier: "n",
                                        },
                                       ),
                                       body: Function(
                                        Function {
                                         head: Simple(
                                          FunctionHeadSimple {
                                           identifier: "v",
                                          },
                                         ),
                                         body: HasAttribute(
                                          HasAttribute {
                                           expression: Identifier(
                                            Identifier {
                                             id: "v",
                                             span: Span {
                                              start: Position {
                                               line: 521,
                                               column: 54,
                                              },
                                              end: Position {
                                               line: 521,
                                               column: 55,
                                              },
                                             },
                                            },
                                           ),
                                           attribute_path: [
                                            Raw(
                                             PartRaw {
                                              content: "value",
                                              span: Span {
                                               start: Position {
                                                line: 521,
                                                column: 58,
                                               },
                                               end: Position {
                                                line: 521,
                                                column: 63,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                          },
                                         ),
                                         span: Span {
                                          start: Position {
                                           line: 521,
                                           column: 51,
                                          },
                                          end: Position {
                                           line: 521,
                                           column: 63,
                                          },
                                         },
                                        },
                                       ),
                                       span: Span {
                                        start: Position {
                                         line: 521,
                                         column: 48,
                                        },
                                        end: Position {
                                         line: 521,
                                         column: 63,
                                        },
                                       },
                                      },
                                     ),
                                     FunctionApplication(
                                      FunctionApplication {
                                       function: Identifier(
                                        Identifier {
                                         id: "zipAttrsWith",
                                         span: Span {
                                          start: Position {
                                           line: 521,
                                           column: 66,
                                          },
                                          end: Position {
                                           line: 521,
                                           column: 78,
                                          },
                                         },
                                        },
                                       ),
                                       arguments: [
                                        Function(
                                         Function {
                                          head: Simple(
                                           FunctionHeadSimple {
                                            identifier: "name",
                                           },
                                          ),
                                          body: Function(
                                           Function {
                                            head: Simple(
                                             FunctionHeadSimple {
                                              identifier: "defs",
                                             },
                                            ),
                                            body: PropertyAccess(
                                             PropertyAccess {
                                              expression: FunctionApplication(
                                               FunctionApplication {
                                                function: Identifier(
                                                 Identifier {
                                                  id: "mergeDefinitions",
                                                  span: Span {
                                                   start: Position {
                                                    line: 522,
                                                    column: 14,
                                                   },
                                                   end: Position {
                                                    line: 522,
                                                    column: 30,
                                                   },
                                                  },
                                                 },
                                                ),
                                                arguments: [
                                                 BinaryOperation(
                                                  BinaryOperation {
                                                   left: Identifier(
                                                    Identifier {
                                                     id: "loc",
                                                     span: Span {
                                                      start: Position {
                                                       line: 522,
                                                       column: 32,
                                                      },
                                                      end: Position {
                                                       line: 522,
                                                       column: 35,
                                                      },
                                                     },
                                                    },
                                                   ),
                                                   operator: Concatenation,
                                                   right: List(
                                                    List {
                                                     elements: [
                                                      Identifier(
                                                       Identifier {
                                                        id: "name",
                                                        span: Span {
                                                         start: Position {
                                                          line: 522,
                                                          column: 40,
                                                         },
                                                         end: Position {
                                                          line: 522,
                                                          column: 44,
                                                         },
                                                        },
                                                       },
                                                      ),
                                                     ],
                                                     span: Span {
                                                      start: Position {
                                                       line: 522,
                                                       column: 39,
                                                      },
                                                      end: Position {
                                                       line: 522,
                                                       column: 45,
                                                      },
                                                     },
                                                    },
                                                   ),
                                                  },
                                                 ),
                                                 Identifier(
                                                  Identifier {
                                                   id: "elemType",
                                                   span: Span {
                                                    start: Position {
                                                     line: 522,
                                                     column: 47,
                                                    },
                                                    end: Position {
                                                     line: 522,
                                                     column: 55,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                 Identifier(
                                                  Identifier {
                                                   id: "defs",
                                                   span: Span {
                                                    start: Position {
                                                     line: 522,
                                                     column: 56,
                                                    },
                                                    end: Position {
                                                     line: 522,
                                                     column: 60,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                ],
                                               },
                                              ),
                                              attribute_path: [
                                               Raw(
                                                PartRaw {
                                                 content: "optionalValue",
                                                 span: Span {
                                                  start: Position {
                                                   line: 522,
                                                   column: 62,
                                                  },
                                                  end: Position {
                                                   line: 522,
                                                   column: 75,
                                                  },
                                                 },
                                                },
                                               ),
                                              ],
                                              default: None,
                                             },
                                            ),
                                            span: Span {
                                             start: Position {
                                              line: 521,
                                              column: 86,
                                             },
                                             end: Position {
                                              line: 522,
                                              column: 75,
                                             },
                                            },
                                           },
                                          ),
                                          span: Span {
                                           start: Position {
                                            line: 521,
                                            column: 80,
                                           },
                                           end: Position {
                                            line: 522,
                                            column: 75,
                                           },
                                          },
                                         },
                                        ),
                                        FunctionApplication(
                                         FunctionApplication {
                                          function: Identifier(
                                           Identifier {
                                            id: "map",
                                            span: Span {
                                             start: Position {
                                              line: 525,
                                              column: 12,
                                             },
                                             end: Position {
                                              line: 525,
                                              column: 15,
                                             },
                                            },
                                           },
                                          ),
                                          arguments: [
                                           Function(
                                            Function {
                                             head: Simple(
                                              FunctionHeadSimple {
                                               identifier: "def",
                                              },
                                             ),
                                             body: FunctionApplication(
                                              FunctionApplication {
                                               function: Identifier(
                                                Identifier {
                                                 id: "mapAttrs",
                                                 span: Span {
                                                  start: Position {
                                                   line: 525,
                                                   column: 22,
                                                  },
                                                  end: Position {
                                                   line: 525,
                                                   column: 30,
                                                  },
                                                 },
                                                },
                                               ),
                                               arguments: [
                                                Function(
                                                 Function {
                                                  head: Simple(
                                                   FunctionHeadSimple {
                                                    identifier: "n",
                                                   },
                                                  ),
                                                  body: Function(
                                                   Function {
                                                    head: Simple(
                                                     FunctionHeadSimple {
                                                      identifier: "v",
                                                     },
                                                    ),
                                                    body: Map(
                                                     Map {
                                                      recursive: false,
                                                      bindings: [
                                                       Inherit(
                                                        BindingInherit {
                                                         from: Some(
                                                          Identifier(
                                                           Identifier {
                                                            id: "def",
                                                            span: Span {
                                                             start: Position {
                                                              line: 525,
                                                              column: 49,
                                                             },
                                                             end: Position {
                                                              line: 525,
                                                              column: 52,
                                                             },
                                                            },
                                                           },
                                                          ),
                                                         ),
                                                         attributes: [
                                                          Raw(
                                                           PartRaw {
                                                            content: "file",
                                                            span: Span {
                                                             start: Position {
                                                              line: 525,
                                                              column: 54,
                                                             },
                                                             end: Position {
                                                              line: 525,
                                                              column: 58,
                                                             },
                                                            },
                                                           },
                                                          ),
                                                         ],
                                                         span: Span {
                                                          start: Position {
                                                           line: 525,
                                                           column: 39,
                                                          },
                                                          end: Position {
                                                           line: 525,
                                                           column: 59,
                                                          },
                                                         },
                                                        },
                                                       ),
                                                       KeyValue(
                                                        BindingKeyValue {
                                                         from: [
                                                          Raw(
                                                           PartRaw {
                                                            content: "value",
                                                            span: Span {
                                                             start: Position {
                                                              line: 525,
                                                              column: 60,
                                                             },
                                                             end: Position {
                                                              line: 525,
                                                              column: 65,
                                                             },
                                                            },
                                                           },
                                                          ),
                                                         ],
                                                         to: Identifier(
                                                          Identifier {
                                                           id: "v",
                                                           span: Span {
                                                            start: Position {
                                                             line: 525,
                                                             column: 68,
                                                            },
                                                            end: Position {
                                                             line: 525,
                                                             column: 69,
                                                            },
                                                           },
                                                          },
                                                         ),
                                                        },
                                                       ),
                                                      ],
                                                      span: Span {
                                                       start: Position {
                                                        line: 525,
                                                        column: 38,
                                                       },
                                                       end: Position {
                                                        line: 525,
                                                        column: 72,
                                                       },
                                                      },
                                                     },
                                                    ),
                                                    span: Span {
                                                     start: Position {
                                                      line: 525,
                                                      column: 35,
                                                     },
                                                     end: Position {
                                                      line: 525,
                                                      column: 72,
                                                     },
                                                    },
                                                   },
                                                  ),
                                                  span: Span {
                                                   start: Position {
                                                    line: 525,
                                                    column: 32,
                                                   },
                                                   end: Position {
                                                    line: 525,
                                                    column: 72,
                                                   },
                                                  },
                                                 },
                                                ),
                                                PropertyAccess(
                                                 PropertyAccess {
                                                  expression: Identifier(
                                                   Identifier {
                                                    id: "def",
                                                    span: Span {
                                                     start: Position {
                                                      line: 525,
                                                      column: 74,
                                                     },
                                                     end: Position {
                                                      line: 525,
                                                      column: 77,
                                                     },
                                                    },
                                                   },
                                                  ),
                                                  attribute_path: [
                                                   Raw(
                                                    PartRaw {
                                                     content: "value",
                                                     span: Span {
                                                      start: Position {
                                                       line: 525,
                                                       column: 78,
                                                      },
                                                      end: Position {
                                                       line: 525,
                                                       column: 83,
                                                      },
                                                     },
                                                    },
                                                   ),
                                                  ],
                                                  default: None,
                                                 },
                                                ),
                                               ],
                                              },
                                             ),
                                             span: Span {
                                              start: Position {
                                               line: 525,
                                               column: 17,
                                              },
                                              end: Position {
                                               line: 525,
                                               column: 83,
                                              },
                                             },
                                            },
                                           ),
                                           Identifier(
                                            Identifier {
                                             id: "defs",
                                             span: Span {
                                              start: Position {
                                               line: 525,
                                               column: 85,
                                              },
                                              end: Position {
                                               line: 525,
                                               column: 89,
                                              },
                                             },
                                            },
                                           ),
                                          ],
                                         },
                                        ),
                                       ],
                                      },
                                     ),
                                    ],
                                   },
                                  ),
                                 ],
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 520,
                                 column: 20,
                                },
                                end: Position {
                                 line: 525,
                                 column: 92,
                                },
                               },
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 520,
                               column: 15,
                              },
                              end: Position {
                               line: 525,
                               column: 92,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "emptyValue",
                              span: Span {
                               start: Position {
                                line: 526,
                                column: 7,
                               },
                               end: Position {
                                line: 526,
                                column: 17,
                               },
                              },
                             },
                            ),
                           ],
                           to: Map(
                            Map {
                             recursive: false,
                             bindings: [
                              KeyValue(
                               BindingKeyValue {
                                from: [
                                 Raw(
                                  PartRaw {
                                   content: "value",
                                   span: Span {
                                    start: Position {
                                     line: 526,
                                     column: 22,
                                    },
                                    end: Position {
                                     line: 526,
                                     column: 27,
                                    },
                                   },
                                  },
                                 ),
                                ],
                                to: Map(
                                 Map {
                                  recursive: false,
                                  bindings: [],
                                  span: Span {
                                   start: Position {
                                    line: 526,
                                    column: 30,
                                   },
                                   end: Position {
                                    line: 526,
                                    column: 32,
                                   },
                                  },
                                 },
                                ),
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 526,
                               column: 20,
                              },
                              end: Position {
                               line: 526,
                               column: 35,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "getSubOptions",
                              span: Span {
                               start: Position {
                                line: 527,
                                column: 7,
                               },
                               end: Position {
                                line: 527,
                                column: 20,
                               },
                              },
                             },
                            ),
                           ],
                           to: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "prefix",
                              },
                             ),
                             body: FunctionApplication(
                              FunctionApplication {
                               function: PropertyAccess(
                                PropertyAccess {
                                 expression: Identifier(
                                  Identifier {
                                   id: "elemType",
                                   span: Span {
                                    start: Position {
                                     line: 527,
                                     column: 31,
                                    },
                                    end: Position {
                                     line: 527,
                                     column: 39,
                                    },
                                   },
                                  },
                                 ),
                                 attribute_path: [
                                  Raw(
                                   PartRaw {
                                    content: "getSubOptions",
                                    span: Span {
                                     start: Position {
                                      line: 527,
                                      column: 40,
                                     },
                                     end: Position {
                                      line: 527,
                                      column: 53,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 default: None,
                                },
                               ),
                               arguments: [
                                BinaryOperation(
                                 BinaryOperation {
                                  left: Identifier(
                                   Identifier {
                                    id: "prefix",
                                    span: Span {
                                     start: Position {
                                      line: 527,
                                      column: 55,
                                     },
                                     end: Position {
                                      line: 527,
                                      column: 61,
                                     },
                                    },
                                   },
                                  ),
                                  operator: Concatenation,
                                  right: List(
                                   List {
                                    elements: [
                                     String(
                                      String_ {
                                       parts: [
                                        Raw(
                                         PartRaw {
                                          content: "<name>",
                                          span: Span {
                                           start: Position {
                                            line: 527,
                                            column: 67,
                                           },
                                           end: Position {
                                            line: 527,
                                            column: 73,
                                           },
                                          },
                                         },
                                        ),
                                       ],
                                       span: Span {
                                        start: Position {
                                         line: 527,
                                         column: 66,
                                        },
                                        end: Position {
                                         line: 527,
                                         column: 74,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    span: Span {
                                     start: Position {
                                      line: 527,
                                      column: 65,
                                     },
                                     end: Position {
                                      line: 527,
                                      column: 75,
                                     },
                                    },
                                   },
                                  ),
                                 },
                                ),
                               ],
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 527,
                               column: 23,
                              },
                              end: Position {
                               line: 527,
                               column: 76,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "getSubModules",
                              span: Span {
                               start: Position {
                                line: 528,
                                column: 7,
                               },
                               end: Position {
                                line: 528,
                                column: 20,
                               },
                              },
                             },
                            ),
                           ],
                           to: PropertyAccess(
                            PropertyAccess {
                             expression: Identifier(
                              Identifier {
                               id: "elemType",
                               span: Span {
                                start: Position {
                                 line: 528,
                                 column: 23,
                                },
                                end: Position {
                                 line: 528,
                                 column: 31,
                                },
                               },
                              },
                             ),
                             attribute_path: [
                              Raw(
                               PartRaw {
                                content: "getSubModules",
                                span: Span {
                                 start: Position {
                                  line: 528,
                                  column: 32,
                                 },
                                 end: Position {
                                  line: 528,
                                  column: 45,
                                 },
                                },
                               },
                              ),
                             ],
                             default: None,
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "substSubModules",
                              span: Span {
                               start: Position {
                                line: 529,
                                column: 7,
                               },
                               end: Position {
                                line: 529,
                                column: 22,
                               },
                              },
                             },
                            ),
                           ],
                           to: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "m",
                              },
                             ),
                             body: FunctionApplication(
                              FunctionApplication {
                               function: Identifier(
                                Identifier {
                                 id: "attrsOf",
                                 span: Span {
                                  start: Position {
                                   line: 529,
                                   column: 28,
                                  },
                                  end: Position {
                                   line: 529,
                                   column: 35,
                                  },
                                 },
                                },
                               ),
                               arguments: [
                                FunctionApplication(
                                 FunctionApplication {
                                  function: PropertyAccess(
                                   PropertyAccess {
                                    expression: Identifier(
                                     Identifier {
                                      id: "elemType",
                                      span: Span {
                                       start: Position {
                                        line: 529,
                                        column: 37,
                                       },
                                       end: Position {
                                        line: 529,
                                        column: 45,
                                       },
                                      },
                                     },
                                    ),
                                    attribute_path: [
                                     Raw(
                                      PartRaw {
                                       content: "substSubModules",
                                       span: Span {
                                        start: Position {
                                         line: 529,
                                         column: 46,
                                        },
                                        end: Position {
                                         line: 529,
                                         column: 61,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    default: None,
                                   },
                                  ),
                                  arguments: [
                                   Identifier(
                                    Identifier {
                                     id: "m",
                                     span: Span {
                                      start: Position {
                                       line: 529,
                                       column: 62,
                                      },
                                      end: Position {
                                       line: 529,
                                       column: 63,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                 },
                                ),
                               ],
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 529,
                               column: 25,
                              },
                              end: Position {
                               line: 529,
                               column: 64,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "functor",
                              span: Span {
                               start: Position {
                                line: 530,
                                column: 7,
                               },
                               end: Position {
                                line: 530,
                                column: 14,
                               },
                              },
                             },
                            ),
                           ],
                           to: BinaryOperation(
                            BinaryOperation {
                             left: FunctionApplication(
                              FunctionApplication {
                               function: Identifier(
                                Identifier {
                                 id: "defaultFunctor",
                                 span: Span {
                                  start: Position {
                                   line: 530,
                                   column: 18,
                                  },
                                  end: Position {
                                   line: 530,
                                   column: 32,
                                  },
                                 },
                                },
                               ),
                               arguments: [
                                Identifier(
                                 Identifier {
                                  id: "name",
                                  span: Span {
                                   start: Position {
                                    line: 530,
                                    column: 33,
                                   },
                                   end: Position {
                                    line: 530,
                                    column: 37,
                                   },
                                  },
                                 },
                                ),
                               ],
                              },
                             ),
                             operator: Update,
                             right: Map(
                              Map {
                               recursive: false,
                               bindings: [
                                KeyValue(
                                 BindingKeyValue {
                                  from: [
                                   Raw(
                                    PartRaw {
                                     content: "wrapped",
                                     span: Span {
                                      start: Position {
                                       line: 530,
                                       column: 44,
                                      },
                                      end: Position {
                                       line: 530,
                                       column: 51,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  to: Identifier(
                                   Identifier {
                                    id: "elemType",
                                    span: Span {
                                     start: Position {
                                      line: 530,
                                      column: 54,
                                     },
                                     end: Position {
                                      line: 530,
                                      column: 62,
                                     },
                                    },
                                   },
                                  ),
                                 },
                                ),
                               ],
                               span: Span {
                                start: Position {
                                 line: 530,
                                 column: 42,
                                },
                                end: Position {
                                 line: 530,
                                 column: 65,
                                },
                               },
                              },
                             ),
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "nestedTypes",
                              span: Span {
                               start: Position {
                                line: 531,
                                column: 7,
                               },
                               end: Position {
                                line: 531,
                                column: 18,
                               },
                              },
                             },
                            ),
                            Raw(
                             PartRaw {
                              content: "elemType",
                              span: Span {
                               start: Position {
                                line: 531,
                                column: 19,
                               },
                               end: Position {
                                line: 531,
                                column: 27,
                               },
                              },
                             },
                            ),
                           ],
                           to: Identifier(
                            Identifier {
                             id: "elemType",
                             span: Span {
                              start: Position {
                               line: 531,
                               column: 30,
                              },
                              end: Position {
                               line: 531,
                               column: 38,
                              },
                             },
                            },
                           ),
                          },
                         ),
                        ],
                        span: Span {
                         start: Position {
                          line: 515,
                          column: 38,
                         },
                         end: Position {
                          line: 532,
                          column: 6,
                         },
                        },
                       },
                      ),
                     ],
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 515,
                     column: 15,
                    },
                    end: Position {
                     line: 532,
                     column: 6,
                    },
                   },
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "lazyAttrsOf",
                    span: Span {
                     start: Position {
                      line: 539,
                      column: 5,
                     },
                     end: Position {
                      line: 539,
                      column: 16,
                     },
                    },
                   },
                  ),
                 ],
                 to: Function(
                  Function {
                   head: Simple(
                    FunctionHeadSimple {
                     identifier: "elemType",
                    },
                   ),
                   body: FunctionApplication(
                    FunctionApplication {
                     function: Identifier(
                      Identifier {
                       id: "mkOptionType",
                       span: Span {
                        start: Position {
                         line: 539,
                         column: 29,
                        },
                        end: Position {
                         line: 539,
                         column: 41,
                        },
                       },
                      },
                     ),
                     arguments: [
                      Map(
                       Map {
                        recursive: true,
                        bindings: [
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "name",
                              span: Span {
                               start: Position {
                                line: 540,
                                column: 7,
                               },
                               end: Position {
                                line: 540,
                                column: 11,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "lazyAttrsOf",
                                span: Span {
                                 start: Position {
                                  line: 540,
                                  column: 15,
                                 },
                                 end: Position {
                                  line: 540,
                                  column: 26,
                                 },
                                },
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 540,
                               column: 14,
                              },
                              end: Position {
                               line: 540,
                               column: 27,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "description",
                              span: Span {
                               start: Position {
                                line: 541,
                                column: 7,
                               },
                               end: Position {
                                line: 541,
                                column: 18,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "lazy attribute set of ",
                                span: Span {
                                 start: Position {
                                  line: 541,
                                  column: 22,
                                 },
                                 end: Position {
                                  line: 541,
                                  column: 128,
                                 },
                                },
                               },
                              ),
                              Interpolation(
                               PartInterpolation {
                                expression: FunctionApplication(
                                 FunctionApplication {
                                  function: Identifier(
                                   Identifier {
                                    id: "optionDescriptionPhrase",
                                    span: Span {
                                     start: Position {
                                      line: 541,
                                      column: 46,
                                     },
                                     end: Position {
                                      line: 541,
                                      column: 69,
                                     },
                                    },
                                   },
                                  ),
                                  arguments: [
                                   Function(
                                    Function {
                                     head: Simple(
                                      FunctionHeadSimple {
                                       identifier: "class",
                                      },
                                     ),
                                     body: BinaryOperation(
                                      BinaryOperation {
                                       left: BinaryOperation(
                                        BinaryOperation {
                                         left: Identifier(
                                          Identifier {
                                           id: "class",
                                           span: Span {
                                            start: Position {
                                             line: 541,
                                             column: 78,
                                            },
                                            end: Position {
                                             line: 541,
                                             column: 83,
                                            },
                                           },
                                          },
                                         ),
                                         operator: EqualTo,
                                         right: String(
                                          String_ {
                                           parts: [
                                            Raw(
                                             PartRaw {
                                              content: "noun",
                                              span: Span {
                                               start: Position {
                                                line: 541,
                                                column: 88,
                                               },
                                               end: Position {
                                                line: 541,
                                                column: 92,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                           span: Span {
                                            start: Position {
                                             line: 541,
                                             column: 87,
                                            },
                                            end: Position {
                                             line: 541,
                                             column: 93,
                                            },
                                           },
                                          },
                                         ),
                                        },
                                       ),
                                       operator: LogicalOr,
                                       right: BinaryOperation(
                                        BinaryOperation {
                                         left: Identifier(
                                          Identifier {
                                           id: "class",
                                           span: Span {
                                            start: Position {
                                             line: 541,
                                             column: 97,
                                            },
                                            end: Position {
                                             line: 541,
                                             column: 102,
                                            },
                                           },
                                          },
                                         ),
                                         operator: EqualTo,
                                         right: String(
                                          String_ {
                                           parts: [
                                            Raw(
                                             PartRaw {
                                              content: "composite",
                                              span: Span {
                                               start: Position {
                                                line: 541,
                                                column: 107,
                                               },
                                               end: Position {
                                                line: 541,
                                                column: 116,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                           span: Span {
                                            start: Position {
                                             line: 541,
                                             column: 106,
                                            },
                                            end: Position {
                                             line: 541,
                                             column: 117,
                                            },
                                           },
                                          },
                                         ),
                                        },
                                       ),
                                      },
                                     ),
                                     span: Span {
                                      start: Position {
                                       line: 541,
                                       column: 71,
                                      },
                                      end: Position {
                                       line: 541,
                                       column: 117,
                                      },
                                     },
                                    },
                                   ),
                                   Identifier(
                                    Identifier {
                                     id: "elemType",
                                     span: Span {
                                      start: Position {
                                       line: 541,
                                       column: 119,
                                      },
                                      end: Position {
                                       line: 541,
                                       column: 127,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                 },
                                ),
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 541,
                               column: 21,
                              },
                              end: Position {
                               line: 541,
                               column: 129,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "descriptionClass",
                              span: Span {
                               start: Position {
                                line: 542,
                                column: 7,
                               },
                               end: Position {
                                line: 542,
                                column: 23,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "composite",
                                span: Span {
                                 start: Position {
                                  line: 542,
                                  column: 27,
                                 },
                                 end: Position {
                                  line: 542,
                                  column: 36,
                                 },
                                },
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 542,
                               column: 26,
                              },
                              end: Position {
                               line: 542,
                               column: 37,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "check",
                              span: Span {
                               start: Position {
                                line: 543,
                                column: 7,
                               },
                               end: Position {
                                line: 543,
                                column: 12,
                               },
                              },
                             },
                            ),
                           ],
                           to: Identifier(
                            Identifier {
                             id: "isAttrs",
                             span: Span {
                              start: Position {
                               line: 543,
                               column: 15,
                              },
                              end: Position {
                               line: 543,
                               column: 22,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "merge",
                              span: Span {
                               start: Position {
                                line: 544,
                                column: 7,
                               },
                               end: Position {
                                line: 544,
                                column: 12,
                               },
                              },
                             },
                            ),
                           ],
                           to: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "loc",
                              },
                             ),
                             body: Function(
                              Function {
                               head: Simple(
                                FunctionHeadSimple {
                                 identifier: "defs",
                                },
                               ),
                               body: FunctionApplication(
                                FunctionApplication {
                                 function: Identifier(
                                  Identifier {
                                   id: "zipAttrsWith",
                                   span: Span {
                                    start: Position {
                                     line: 545,
                                     column: 9,
                                    },
                                    end: Position {
                                     line: 545,
                                     column: 21,
                                    },
                                   },
                                  },
                                 ),
                                 arguments: [
                                  Function(
                                   Function {
                                    head: Simple(
                                     FunctionHeadSimple {
                                      identifier: "name",
                                     },
                                    ),
                                    body: Function(
                                     Function {
                                      head: Simple(
                                       FunctionHeadSimple {
                                        identifier: "defs",
                                       },
                                      ),
                                      body: LetIn(
                                       LetIn {
                                        bindings: [
                                         KeyValue(
                                          BindingKeyValue {
                                           from: [
                                            Raw(
                                             PartRaw {
                                              content: "merged",
                                              span: Span {
                                               start: Position {
                                                line: 546,
                                                column: 15,
                                               },
                                               end: Position {
                                                line: 546,
                                                column: 21,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                           to: FunctionApplication(
                                            FunctionApplication {
                                             function: Identifier(
                                              Identifier {
                                               id: "mergeDefinitions",
                                               span: Span {
                                                start: Position {
                                                 line: 546,
                                                 column: 24,
                                                },
                                                end: Position {
                                                 line: 546,
                                                 column: 40,
                                                },
                                               },
                                              },
                                             ),
                                             arguments: [
                                              BinaryOperation(
                                               BinaryOperation {
                                                left: Identifier(
                                                 Identifier {
                                                  id: "loc",
                                                  span: Span {
                                                   start: Position {
                                                    line: 546,
                                                    column: 42,
                                                   },
                                                   end: Position {
                                                    line: 546,
                                                    column: 45,
                                                   },
                                                  },
                                                 },
                                                ),
                                                operator: Concatenation,
                                                right: List(
                                                 List {
                                                  elements: [
                                                   Identifier(
                                                    Identifier {
                                                     id: "name",
                                                     span: Span {
                                                      start: Position {
                                                       line: 546,
                                                       column: 50,
                                                      },
                                                      end: Position {
                                                       line: 546,
                                                       column: 54,
                                                      },
                                                     },
                                                    },
                                                   ),
                                                  ],
                                                  span: Span {
                                                   start: Position {
                                                    line: 546,
                                                    column: 49,
                                                   },
                                                   end: Position {
                                                    line: 546,
                                                    column: 55,
                                                   },
                                                  },
                                                 },
                                                ),
                                               },
                                              ),
                                              Identifier(
                                               Identifier {
                                                id: "elemType",
                                                span: Span {
                                                 start: Position {
                                                  line: 546,
                                                  column: 57,
                                                 },
                                                 end: Position {
                                                  line: 546,
                                                  column: 65,
                                                 },
                                                },
                                               },
                                              ),
                                              Identifier(
                                               Identifier {
                                                id: "defs",
                                                span: Span {
                                                 start: Position {
                                                  line: 546,
                                                  column: 66,
                                                 },
                                                 end: Position {
                                                  line: 546,
                                                  column: 70,
                                                 },
                                                },
                                               },
                                              ),
                                             ],
                                            },
                                           ),
                                          },
                                         ),
                                        ],
                                        target: PropertyAccess(
                                         PropertyAccess {
                                          expression: Identifier(
                                           Identifier {
                                            id: "merged",
                                            span: Span {
                                             start: Position {
                                              line: 548,
                                              column: 14,
                                             },
                                             end: Position {
                                              line: 548,
                                              column: 20,
                                             },
                                            },
                                           },
                                          ),
                                          attribute_path: [
                                           Raw(
                                            PartRaw {
                                             content: "optionalValue",
                                             span: Span {
                                              start: Position {
                                               line: 548,
                                               column: 21,
                                              },
                                              end: Position {
                                               line: 548,
                                               column: 34,
                                              },
                                             },
                                            },
                                           ),
                                           Raw(
                                            PartRaw {
                                             content: "value",
                                             span: Span {
                                              start: Position {
                                               line: 548,
                                               column: 35,
                                              },
                                              end: Position {
                                               line: 548,
                                               column: 40,
                                              },
                                             },
                                            },
                                           ),
                                          ],
                                          default: Some(
                                           PropertyAccess(
                                            PropertyAccess {
                                             expression: Identifier(
                                              Identifier {
                                               id: "elemType",
                                               span: Span {
                                                start: Position {
                                                 line: 548,
                                                 column: 44,
                                                },
                                                end: Position {
                                                 line: 548,
                                                 column: 52,
                                                },
                                               },
                                              },
                                             ),
                                             attribute_path: [
                                              Raw(
                                               PartRaw {
                                                content: "emptyValue",
                                                span: Span {
                                                 start: Position {
                                                  line: 548,
                                                  column: 53,
                                                 },
                                                 end: Position {
                                                  line: 548,
                                                  column: 63,
                                                 },
                                                },
                                               },
                                              ),
                                              Raw(
                                               PartRaw {
                                                content: "value",
                                                span: Span {
                                                 start: Position {
                                                  line: 548,
                                                  column: 64,
                                                 },
                                                 end: Position {
                                                  line: 548,
                                                  column: 69,
                                                 },
                                                },
                                               },
                                              ),
                                             ],
                                             default: Some(
                                              PropertyAccess(
                                               PropertyAccess {
                                                expression: Identifier(
                                                 Identifier {
                                                  id: "merged",
                                                  span: Span {
                                                   start: Position {
                                                    line: 548,
                                                    column: 73,
                                                   },
                                                   end: Position {
                                                    line: 548,
                                                    column: 79,
                                                   },
                                                  },
                                                 },
                                                ),
                                                attribute_path: [
                                                 Raw(
                                                  PartRaw {
                                                   content: "mergedValue",
                                                   span: Span {
                                                    start: Position {
                                                     line: 548,
                                                     column: 80,
                                                    },
                                                    end: Position {
                                                     line: 548,
                                                     column: 91,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                ],
                                                default: None,
                                               },
                                              ),
                                             ),
                                            },
                                           ),
                                          ),
                                         },
                                        ),
                                        span: Span {
                                         start: Position {
                                          line: 546,
                                          column: 11,
                                         },
                                         end: Position {
                                          line: 548,
                                          column: 91,
                                         },
                                        },
                                       },
                                      ),
                                      span: Span {
                                       start: Position {
                                        line: 545,
                                        column: 29,
                                       },
                                       end: Position {
                                        line: 548,
                                        column: 91,
                                       },
                                      },
                                     },
                                    ),
                                    span: Span {
                                     start: Position {
                                      line: 545,
                                      column: 23,
                                     },
                                     end: Position {
                                      line: 548,
                                      column: 91,
                                     },
                                    },
                                   },
                                  ),
                                  FunctionApplication(
                                   FunctionApplication {
                                    function: Identifier(
                                     Identifier {
                                      id: "map",
                                      span: Span {
                                       start: Position {
                                        line: 551,
                                        column: 10,
                                       },
                                       end: Position {
                                        line: 551,
                                        column: 13,
                                       },
                                      },
                                     },
                                    ),
                                    arguments: [
                                     Function(
                                      Function {
                                       head: Simple(
                                        FunctionHeadSimple {
                                         identifier: "def",
                                        },
                                       ),
                                       body: FunctionApplication(
                                        FunctionApplication {
                                         function: Identifier(
                                          Identifier {
                                           id: "mapAttrs",
                                           span: Span {
                                            start: Position {
                                             line: 551,
                                             column: 20,
                                            },
                                            end: Position {
                                             line: 551,
                                             column: 28,
                                            },
                                           },
                                          },
                                         ),
                                         arguments: [
                                          Function(
                                           Function {
                                            head: Simple(
                                             FunctionHeadSimple {
                                              identifier: "n",
                                             },
                                            ),
                                            body: Function(
                                             Function {
                                              head: Simple(
                                               FunctionHeadSimple {
                                                identifier: "v",
                                               },
                                              ),
                                              body: Map(
                                               Map {
                                                recursive: false,
                                                bindings: [
                                                 Inherit(
                                                  BindingInherit {
                                                   from: Some(
                                                    Identifier(
                                                     Identifier {
                                                      id: "def",
                                                      span: Span {
                                                       start: Position {
                                                        line: 551,
                                                        column: 47,
                                                       },
                                                       end: Position {
                                                        line: 551,
                                                        column: 50,
                                                       },
                                                      },
                                                     },
                                                    ),
                                                   ),
                                                   attributes: [
                                                    Raw(
                                                     PartRaw {
                                                      content: "file",
                                                      span: Span {
                                                       start: Position {
                                                        line: 551,
                                                        column: 52,
                                                       },
                                                       end: Position {
                                                        line: 551,
                                                        column: 56,
                                                       },
                                                      },
                                                     },
                                                    ),
                                                   ],
                                                   span: Span {
                                                    start: Position {
                                                     line: 551,
                                                     column: 37,
                                                    },
                                                    end: Position {
                                                     line: 551,
                                                     column: 57,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                 KeyValue(
                                                  BindingKeyValue {
                                                   from: [
                                                    Raw(
                                                     PartRaw {
                                                      content: "value",
                                                      span: Span {
                                                       start: Position {
                                                        line: 551,
                                                        column: 58,
                                                       },
                                                       end: Position {
                                                        line: 551,
                                                        column: 63,
                                                       },
                                                      },
                                                     },
                                                    ),
                                                   ],
                                                   to: Identifier(
                                                    Identifier {
                                                     id: "v",
                                                     span: Span {
                                                      start: Position {
                                                       line: 551,
                                                       column: 66,
                                                      },
                                                      end: Position {
                                                       line: 551,
                                                       column: 67,
                                                      },
                                                     },
                                                    },
                                                   ),
                                                  },
                                                 ),
                                                ],
                                                span: Span {
                                                 start: Position {
                                                  line: 551,
                                                  column: 36,
                                                 },
                                                 end: Position {
                                                  line: 551,
                                                  column: 70,
                                                 },
                                                },
                                               },
                                              ),
                                              span: Span {
                                               start: Position {
                                                line: 551,
                                                column: 33,
                                               },
                                               end: Position {
                                                line: 551,
                                                column: 70,
                                               },
                                              },
                                             },
                                            ),
                                            span: Span {
                                             start: Position {
                                              line: 551,
                                              column: 30,
                                             },
                                             end: Position {
                                              line: 551,
                                              column: 70,
                                             },
                                            },
                                           },
                                          ),
                                          PropertyAccess(
                                           PropertyAccess {
                                            expression: Identifier(
                                             Identifier {
                                              id: "def",
                                              span: Span {
                                               start: Position {
                                                line: 551,
                                                column: 72,
                                               },
                                               end: Position {
                                                line: 551,
                                                column: 75,
                                               },
                                              },
                                             },
                                            ),
                                            attribute_path: [
                                             Raw(
                                              PartRaw {
                                               content: "value",
                                               span: Span {
                                                start: Position {
                                                 line: 551,
                                                 column: 76,
                                                },
                                                end: Position {
                                                 line: 551,
                                                 column: 81,
                                                },
                                               },
                                              },
                                             ),
                                            ],
                                            default: None,
                                           },
                                          ),
                                         ],
                                        },
                                       ),
                                       span: Span {
                                        start: Position {
                                         line: 551,
                                         column: 15,
                                        },
                                        end: Position {
                                         line: 551,
                                         column: 81,
                                        },
                                       },
                                      },
                                     ),
                                     Identifier(
                                      Identifier {
                                       id: "defs",
                                       span: Span {
                                        start: Position {
                                         line: 551,
                                         column: 83,
                                        },
                                        end: Position {
                                         line: 551,
                                         column: 87,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                   },
                                  ),
                                 ],
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 544,
                                 column: 20,
                                },
                                end: Position {
                                 line: 551,
                                 column: 88,
                                },
                               },
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 544,
                               column: 15,
                              },
                              end: Position {
                               line: 551,
                               column: 88,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "emptyValue",
                              span: Span {
                               start: Position {
                                line: 552,
                                column: 7,
                               },
                               end: Position {
                                line: 552,
                                column: 17,
                               },
                              },
                             },
                            ),
                           ],
                           to: Map(
                            Map {
                             recursive: false,
                             bindings: [
                              KeyValue(
                               BindingKeyValue {
                                from: [
                                 Raw(
                                  PartRaw {
                                   content: "value",
                                   span: Span {
                                    start: Position {
                                     line: 552,
                                     column: 22,
                                    },
                                    end: Position {
                                     line: 552,
                                     column: 27,
                                    },
                                   },
                                  },
                                 ),
                                ],
                                to: Map(
                                 Map {
                                  recursive: false,
                                  bindings: [],
                                  span: Span {
                                   start: Position {
                                    line: 552,
                                    column: 30,
                                   },
                                   end: Position {
                                    line: 552,
                                    column: 32,
                                   },
                                  },
                                 },
                                ),
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 552,
                               column: 20,
                              },
                              end: Position {
                               line: 552,
                               column: 35,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "getSubOptions",
                              span: Span {
                               start: Position {
                                line: 553,
                                column: 7,
                               },
                               end: Position {
                                line: 553,
                                column: 20,
                               },
                              },
                             },
                            ),
                           ],
                           to: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "prefix",
                              },
                             ),
                             body: FunctionApplication(
                              FunctionApplication {
                               function: PropertyAccess(
                                PropertyAccess {
                                 expression: Identifier(
                                  Identifier {
                                   id: "elemType",
                                   span: Span {
                                    start: Position {
                                     line: 553,
                                     column: 31,
                                    },
                                    end: Position {
                                     line: 553,
                                     column: 39,
                                    },
                                   },
                                  },
                                 ),
                                 attribute_path: [
                                  Raw(
                                   PartRaw {
                                    content: "getSubOptions",
                                    span: Span {
                                     start: Position {
                                      line: 553,
                                      column: 40,
                                     },
                                     end: Position {
                                      line: 553,
                                      column: 53,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 default: None,
                                },
                               ),
                               arguments: [
                                BinaryOperation(
                                 BinaryOperation {
                                  left: Identifier(
                                   Identifier {
                                    id: "prefix",
                                    span: Span {
                                     start: Position {
                                      line: 553,
                                      column: 55,
                                     },
                                     end: Position {
                                      line: 553,
                                      column: 61,
                                     },
                                    },
                                   },
                                  ),
                                  operator: Concatenation,
                                  right: List(
                                   List {
                                    elements: [
                                     String(
                                      String_ {
                                       parts: [
                                        Raw(
                                         PartRaw {
                                          content: "<name>",
                                          span: Span {
                                           start: Position {
                                            line: 553,
                                            column: 67,
                                           },
                                           end: Position {
                                            line: 553,
                                            column: 73,
                                           },
                                          },
                                         },
                                        ),
                                       ],
                                       span: Span {
                                        start: Position {
                                         line: 553,
                                         column: 66,
                                        },
                                        end: Position {
                                         line: 553,
                                         column: 74,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    span: Span {
                                     start: Position {
                                      line: 553,
                                      column: 65,
                                     },
                                     end: Position {
                                      line: 553,
                                      column: 75,
                                     },
                                    },
                                   },
                                  ),
                                 },
                                ),
                               ],
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 553,
                               column: 23,
                              },
                              end: Position {
                               line: 553,
                               column: 76,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "getSubModules",
                              span: Span {
                               start: Position {
                                line: 554,
                                column: 7,
                               },
                               end: Position {
                                line: 554,
                                column: 20,
                               },
                              },
                             },
                            ),
                           ],
                           to: PropertyAccess(
                            PropertyAccess {
                             expression: Identifier(
                              Identifier {
                               id: "elemType",
                               span: Span {
                                start: Position {
                                 line: 554,
                                 column: 23,
                                },
                                end: Position {
                                 line: 554,
                                 column: 31,
                                },
                               },
                              },
                             ),
                             attribute_path: [
                              Raw(
                               PartRaw {
                                content: "getSubModules",
                                span: Span {
                                 start: Position {
                                  line: 554,
                                  column: 32,
                                 },
                                 end: Position {
                                  line: 554,
                                  column: 45,
                                 },
                                },
                               },
                              ),
                             ],
                             default: None,
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "substSubModules",
                              span: Span {
                               start: Position {
                                line: 555,
                                column: 7,
                               },
                               end: Position {
                                line: 555,
                                column: 22,
                               },
                              },
                             },
                            ),
                           ],
                           to: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "m",
                              },
                             ),
                             body: FunctionApplication(
                              FunctionApplication {
                               function: Identifier(
                                Identifier {
                                 id: "lazyAttrsOf",
                                 span: Span {
                                  start: Position {
                                   line: 555,
                                   column: 28,
                                  },
                                  end: Position {
                                   line: 555,
                                   column: 39,
                                  },
                                 },
                                },
                               ),
                               arguments: [
                                FunctionApplication(
                                 FunctionApplication {
                                  function: PropertyAccess(
                                   PropertyAccess {
                                    expression: Identifier(
                                     Identifier {
                                      id: "elemType",
                                      span: Span {
                                       start: Position {
                                        line: 555,
                                        column: 41,
                                       },
                                       end: Position {
                                        line: 555,
                                        column: 49,
                                       },
                                      },
                                     },
                                    ),
                                    attribute_path: [
                                     Raw(
                                      PartRaw {
                                       content: "substSubModules",
                                       span: Span {
                                        start: Position {
                                         line: 555,
                                         column: 50,
                                        },
                                        end: Position {
                                         line: 555,
                                         column: 65,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    default: None,
                                   },
                                  ),
                                  arguments: [
                                   Identifier(
                                    Identifier {
                                     id: "m",
                                     span: Span {
                                      start: Position {
                                       line: 555,
                                       column: 66,
                                      },
                                      end: Position {
                                       line: 555,
                                       column: 67,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                 },
                                ),
                               ],
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 555,
                               column: 25,
                              },
                              end: Position {
                               line: 555,
                               column: 68,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "functor",
                              span: Span {
                               start: Position {
                                line: 556,
                                column: 7,
                               },
                               end: Position {
                                line: 556,
                                column: 14,
                               },
                              },
                             },
                            ),
                           ],
                           to: BinaryOperation(
                            BinaryOperation {
                             left: FunctionApplication(
                              FunctionApplication {
                               function: Identifier(
                                Identifier {
                                 id: "defaultFunctor",
                                 span: Span {
                                  start: Position {
                                   line: 556,
                                   column: 18,
                                  },
                                  end: Position {
                                   line: 556,
                                   column: 32,
                                  },
                                 },
                                },
                               ),
                               arguments: [
                                Identifier(
                                 Identifier {
                                  id: "name",
                                  span: Span {
                                   start: Position {
                                    line: 556,
                                    column: 33,
                                   },
                                   end: Position {
                                    line: 556,
                                    column: 37,
                                   },
                                  },
                                 },
                                ),
                               ],
                              },
                             ),
                             operator: Update,
                             right: Map(
                              Map {
                               recursive: false,
                               bindings: [
                                KeyValue(
                                 BindingKeyValue {
                                  from: [
                                   Raw(
                                    PartRaw {
                                     content: "wrapped",
                                     span: Span {
                                      start: Position {
                                       line: 556,
                                       column: 44,
                                      },
                                      end: Position {
                                       line: 556,
                                       column: 51,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  to: Identifier(
                                   Identifier {
                                    id: "elemType",
                                    span: Span {
                                     start: Position {
                                      line: 556,
                                      column: 54,
                                     },
                                     end: Position {
                                      line: 556,
                                      column: 62,
                                     },
                                    },
                                   },
                                  ),
                                 },
                                ),
                               ],
                               span: Span {
                                start: Position {
                                 line: 556,
                                 column: 42,
                                },
                                end: Position {
                                 line: 556,
                                 column: 65,
                                },
                               },
                              },
                             ),
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "nestedTypes",
                              span: Span {
                               start: Position {
                                line: 557,
                                column: 7,
                               },
                               end: Position {
                                line: 557,
                                column: 18,
                               },
                              },
                             },
                            ),
                            Raw(
                             PartRaw {
                              content: "elemType",
                              span: Span {
                               start: Position {
                                line: 557,
                                column: 19,
                               },
                               end: Position {
                                line: 557,
                                column: 27,
                               },
                              },
                             },
                            ),
                           ],
                           to: Identifier(
                            Identifier {
                             id: "elemType",
                             span: Span {
                              start: Position {
                               line: 557,
                               column: 30,
                              },
                              end: Position {
                               line: 557,
                               column: 38,
                              },
                             },
                            },
                           ),
                          },
                         ),
                        ],
                        span: Span {
                         start: Position {
                          line: 539,
                          column: 42,
                         },
                         end: Position {
                          line: 558,
                          column: 6,
                         },
                        },
                       },
                      ),
                     ],
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 539,
                     column: 19,
                    },
                    end: Position {
                     line: 558,
                     column: 6,
                    },
                   },
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "loaOf",
                    span: Span {
                     start: Position {
                      line: 561,
                      column: 5,
                     },
                     end: Position {
                      line: 561,
                      column: 10,
                     },
                    },
                   },
                  ),
                 ],
                 to: Function(
                  Function {
                   head: Simple(
                    FunctionHeadSimple {
                     identifier: "elemType",
                    },
                   ),
                   body: BinaryOperation(
                    BinaryOperation {
                     left: FunctionApplication(
                      FunctionApplication {
                       function: PropertyAccess(
                        PropertyAccess {
                         expression: Identifier(
                          Identifier {
                           id: "types",
                           span: Span {
                            start: Position {
                             line: 561,
                             column: 23,
                            },
                            end: Position {
                             line: 561,
                             column: 28,
                            },
                           },
                          },
                         ),
                         attribute_path: [
                          Raw(
                           PartRaw {
                            content: "attrsOf",
                            span: Span {
                             start: Position {
                              line: 561,
                              column: 29,
                             },
                             end: Position {
                              line: 561,
                              column: 36,
                             },
                            },
                           },
                          ),
                         ],
                         default: None,
                        },
                       ),
                       arguments: [
                        Identifier(
                         Identifier {
                          id: "elemType",
                          span: Span {
                           start: Position {
                            line: 561,
                            column: 37,
                           },
                           end: Position {
                            line: 561,
                            column: 45,
                           },
                          },
                         },
                        ),
                       ],
                      },
                     ),
                     operator: Update,
                     right: Map(
                      Map {
                       recursive: false,
                       bindings: [
                        KeyValue(
                         BindingKeyValue {
                          from: [
                           Raw(
                            PartRaw {
                             content: "name",
                             span: Span {
                              start: Position {
                               line: 562,
                               column: 7,
                              },
                              end: Position {
                               line: 562,
                               column: 11,
                              },
                             },
                            },
                           ),
                          ],
                          to: String(
                           String_ {
                            parts: [
                             Raw(
                              PartRaw {
                               content: "loaOf",
                               span: Span {
                                start: Position {
                                 line: 562,
                                 column: 15,
                                },
                                end: Position {
                                 line: 562,
                                 column: 20,
                                },
                               },
                              },
                             ),
                            ],
                            span: Span {
                             start: Position {
                              line: 562,
                              column: 14,
                             },
                             end: Position {
                              line: 562,
                              column: 21,
                             },
                            },
                           },
                          ),
                         },
                        ),
                        KeyValue(
                         BindingKeyValue {
                          from: [
                           Raw(
                            PartRaw {
                             content: "deprecationMessage",
                             span: Span {
                              start: Position {
                               line: 563,
                               column: 7,
                              },
                              end: Position {
                               line: 563,
                               column: 25,
                              },
                             },
                            },
                           ),
                          ],
                          to: BinaryOperation(
                           BinaryOperation {
                            left: BinaryOperation(
                             BinaryOperation {
                              left: String(
                               String_ {
                                parts: [
                                 Raw(
                                  PartRaw {
                                   content: "Mixing lists with attribute values is no longer",
                                   span: Span {
                                    start: Position {
                                     line: 563,
                                     column: 29,
                                    },
                                    end: Position {
                                     line: 563,
                                     column: 76,
                                    },
                                   },
                                  },
                                 ),
                                ],
                                span: Span {
                                 start: Position {
                                  line: 563,
                                  column: 28,
                                 },
                                 end: Position {
                                  line: 563,
                                  column: 77,
                                 },
                                },
                               },
                              ),
                              operator: Addition,
                              right: String(
                               String_ {
                                parts: [
                                 Raw(
                                  PartRaw {
                                   content: " possible; please use `types.attrsOf` instead. See",
                                   span: Span {
                                    start: Position {
                                     line: 564,
                                     column: 12,
                                    },
                                    end: Position {
                                     line: 564,
                                     column: 62,
                                    },
                                   },
                                  },
                                 ),
                                ],
                                span: Span {
                                 start: Position {
                                  line: 564,
                                  column: 11,
                                 },
                                 end: Position {
                                  line: 564,
                                  column: 63,
                                 },
                                },
                               },
                              ),
                             },
                            ),
                            operator: Addition,
                            right: String(
                             String_ {
                              parts: [
                               Raw(
                                PartRaw {
                                 content: " https://github.com/NixOS/nixpkgs/issues/1800 for the motivation.",
                                 span: Span {
                                  start: Position {
                                   line: 565,
                                   column: 12,
                                  },
                                  end: Position {
                                   line: 565,
                                   column: 77,
                                  },
                                 },
                                },
                               ),
                              ],
                              span: Span {
                               start: Position {
                                line: 565,
                                column: 11,
                               },
                               end: Position {
                                line: 565,
                                column: 78,
                               },
                              },
                             },
                            ),
                           },
                          ),
                         },
                        ),
                        KeyValue(
                         BindingKeyValue {
                          from: [
                           Raw(
                            PartRaw {
                             content: "nestedTypes",
                             span: Span {
                              start: Position {
                               line: 566,
                               column: 7,
                              },
                              end: Position {
                               line: 566,
                               column: 18,
                              },
                             },
                            },
                           ),
                           Raw(
                            PartRaw {
                             content: "elemType",
                             span: Span {
                              start: Position {
                               line: 566,
                               column: 19,
                              },
                              end: Position {
                               line: 566,
                               column: 27,
                              },
                             },
                            },
                           ),
                          ],
                          to: Identifier(
                           Identifier {
                            id: "elemType",
                            span: Span {
                             start: Position {
                              line: 566,
                              column: 30,
                             },
                             end: Position {
                              line: 566,
                              column: 38,
                             },
                            },
                           },
                          ),
                         },
                        ),
                       ],
                       span: Span {
                        start: Position {
                         line: 561,
                         column: 49,
                        },
                        end: Position {
                         line: 567,
                         column: 6,
                        },
                       },
                      },
                     ),
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 561,
                     column: 13,
                    },
                    end: Position {
                     line: 567,
                     column: 6,
                    },
                   },
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "uniq",
                    span: Span {
                     start: Position {
                      line: 570,
                      column: 5,
                     },
                     end: Position {
                      line: 570,
                      column: 9,
                     },
                    },
                   },
                  ),
                 ],
                 to: Function(
                  Function {
                   head: Simple(
                    FunctionHeadSimple {
                     identifier: "elemType",
                    },
                   ),
                   body: FunctionApplication(
                    FunctionApplication {
                     function: Identifier(
                      Identifier {
                       id: "mkOptionType",
                       span: Span {
                        start: Position {
                         line: 570,
                         column: 22,
                        },
                        end: Position {
                         line: 570,
                         column: 34,
                        },
                       },
                      },
                     ),
                     arguments: [
                      Map(
                       Map {
                        recursive: true,
                        bindings: [
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "name",
                              span: Span {
                               start: Position {
                                line: 571,
                                column: 7,
                               },
                               end: Position {
                                line: 571,
                                column: 11,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "uniq",
                                span: Span {
                                 start: Position {
                                  line: 571,
                                  column: 15,
                                 },
                                 end: Position {
                                  line: 571,
                                  column: 19,
                                 },
                                },
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 571,
                               column: 14,
                              },
                              end: Position {
                               line: 571,
                               column: 20,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         Inherit(
                          BindingInherit {
                           from: Some(
                            Identifier(
                             Identifier {
                              id: "elemType",
                              span: Span {
                               start: Position {
                                line: 572,
                                column: 16,
                               },
                               end: Position {
                                line: 572,
                                column: 24,
                               },
                              },
                             },
                            ),
                           ),
                           attributes: [
                            Raw(
                             PartRaw {
                              content: "description",
                              span: Span {
                               start: Position {
                                line: 572,
                                column: 26,
                               },
                               end: Position {
                                line: 572,
                                column: 37,
                               },
                              },
                             },
                            ),
                            Raw(
                             PartRaw {
                              content: "descriptionClass",
                              span: Span {
                               start: Position {
                                line: 572,
                                column: 38,
                               },
                               end: Position {
                                line: 572,
                                column: 54,
                               },
                              },
                             },
                            ),
                            Raw(
                             PartRaw {
                              content: "check",
                              span: Span {
                               start: Position {
                                line: 572,
                                column: 55,
                               },
                               end: Position {
                                line: 572,
                                column: 60,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 570,
                             column: 40,
                            },
                            end: Position {
                             line: 572,
                             column: 61,
                            },
                           },
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "merge",
                              span: Span {
                               start: Position {
                                line: 573,
                                column: 7,
                               },
                               end: Position {
                                line: 573,
                                column: 12,
                               },
                              },
                             },
                            ),
                           ],
                           to: Identifier(
                            Identifier {
                             id: "mergeOneOption",
                             span: Span {
                              start: Position {
                               line: 573,
                               column: 15,
                              },
                              end: Position {
                               line: 573,
                               column: 29,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "emptyValue",
                              span: Span {
                               start: Position {
                                line: 574,
                                column: 7,
                               },
                               end: Position {
                                line: 574,
                                column: 17,
                               },
                              },
                             },
                            ),
                           ],
                           to: PropertyAccess(
                            PropertyAccess {
                             expression: Identifier(
                              Identifier {
                               id: "elemType",
                               span: Span {
                                start: Position {
                                 line: 574,
                                 column: 20,
                                },
                                end: Position {
                                 line: 574,
                                 column: 28,
                                },
                               },
                              },
                             ),
                             attribute_path: [
                              Raw(
                               PartRaw {
                                content: "emptyValue",
                                span: Span {
                                 start: Position {
                                  line: 574,
                                  column: 29,
                                 },
                                 end: Position {
                                  line: 574,
                                  column: 39,
                                 },
                                },
                               },
                              ),
                             ],
                             default: None,
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "getSubOptions",
                              span: Span {
                               start: Position {
                                line: 575,
                                column: 7,
                               },
                               end: Position {
                                line: 575,
                                column: 20,
                               },
                              },
                             },
                            ),
                           ],
                           to: PropertyAccess(
                            PropertyAccess {
                             expression: Identifier(
                              Identifier {
                               id: "elemType",
                               span: Span {
                                start: Position {
                                 line: 575,
                                 column: 23,
                                },
                                end: Position {
                                 line: 575,
                                 column: 31,
                                },
                               },
                              },
                             ),
                             attribute_path: [
                              Raw(
                               PartRaw {
                                content: "getSubOptions",
                                span: Span {
                                 start: Position {
                                  line: 575,
                                  column: 32,
                                 },
                                 end: Position {
                                  line: 575,
                                  column: 45,
                                 },
                                },
                               },
                              ),
                             ],
                             default: None,
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "getSubModules",
                              span: Span {
                               start: Position {
                                line: 576,
                                column: 7,
                               },
                               end: Position {
                                line: 576,
                                column: 20,
                               },
                              },
                             },
                            ),
                           ],
                           to: PropertyAccess(
                            PropertyAccess {
                             expression: Identifier(
                              Identifier {
                               id: "elemType",
                               span: Span {
                                start: Position {
                                 line: 576,
                                 column: 23,
                                },
                                end: Position {
                                 line: 576,
                                 column: 31,
                                },
                               },
                              },
                             ),
                             attribute_path: [
                              Raw(
                               PartRaw {
                                content: "getSubModules",
                                span: Span {
                                 start: Position {
                                  line: 576,
                                  column: 32,
                                 },
                                 end: Position {
                                  line: 576,
                                  column: 45,
                                 },
                                },
                               },
                              ),
                             ],
                             default: None,
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "substSubModules",
                              span: Span {
                               start: Position {
                                line: 577,
                                column: 7,
                               },
                               end: Position {
                                line: 577,
                                column: 22,
                               },
                              },
                             },
                            ),
                           ],
                           to: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "m",
                              },
                             ),
                             body: FunctionApplication(
                              FunctionApplication {
                               function: Identifier(
                                Identifier {
                                 id: "uniq",
                                 span: Span {
                                  start: Position {
                                   line: 577,
                                   column: 28,
                                  },
                                  end: Position {
                                   line: 577,
                                   column: 32,
                                  },
                                 },
                                },
                               ),
                               arguments: [
                                FunctionApplication(
                                 FunctionApplication {
                                  function: PropertyAccess(
                                   PropertyAccess {
                                    expression: Identifier(
                                     Identifier {
                                      id: "elemType",
                                      span: Span {
                                       start: Position {
                                        line: 577,
                                        column: 34,
                                       },
                                       end: Position {
                                        line: 577,
                                        column: 42,
                                       },
                                      },
                                     },
                                    ),
                                    attribute_path: [
                                     Raw(
                                      PartRaw {
                                       content: "substSubModules",
                                       span: Span {
                                        start: Position {
                                         line: 577,
                                         column: 43,
                                        },
                                        end: Position {
                                         line: 577,
                                         column: 58,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    default: None,
                                   },
                                  ),
                                  arguments: [
                                   Identifier(
                                    Identifier {
                                     id: "m",
                                     span: Span {
                                      start: Position {
                                       line: 577,
                                       column: 59,
                                      },
                                      end: Position {
                                       line: 577,
                                       column: 60,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                 },
                                ),
                               ],
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 577,
                               column: 25,
                              },
                              end: Position {
                               line: 577,
                               column: 61,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "functor",
                              span: Span {
                               start: Position {
                                line: 578,
                                column: 7,
                               },
                               end: Position {
                                line: 578,
                                column: 14,
                               },
                              },
                             },
                            ),
                           ],
                           to: BinaryOperation(
                            BinaryOperation {
                             left: FunctionApplication(
                              FunctionApplication {
                               function: Identifier(
                                Identifier {
                                 id: "defaultFunctor",
                                 span: Span {
                                  start: Position {
                                   line: 578,
                                   column: 18,
                                  },
                                  end: Position {
                                   line: 578,
                                   column: 32,
                                  },
                                 },
                                },
                               ),
                               arguments: [
                                Identifier(
                                 Identifier {
                                  id: "name",
                                  span: Span {
                                   start: Position {
                                    line: 578,
                                    column: 33,
                                   },
                                   end: Position {
                                    line: 578,
                                    column: 37,
                                   },
                                  },
                                 },
                                ),
                               ],
                              },
                             ),
                             operator: Update,
                             right: Map(
                              Map {
                               recursive: false,
                               bindings: [
                                KeyValue(
                                 BindingKeyValue {
                                  from: [
                                   Raw(
                                    PartRaw {
                                     content: "wrapped",
                                     span: Span {
                                      start: Position {
                                       line: 578,
                                       column: 44,
                                      },
                                      end: Position {
                                       line: 578,
                                       column: 51,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  to: Identifier(
                                   Identifier {
                                    id: "elemType",
                                    span: Span {
                                     start: Position {
                                      line: 578,
                                      column: 54,
                                     },
                                     end: Position {
                                      line: 578,
                                      column: 62,
                                     },
                                    },
                                   },
                                  ),
                                 },
                                ),
                               ],
                               span: Span {
                                start: Position {
                                 line: 578,
                                 column: 42,
                                },
                                end: Position {
                                 line: 578,
                                 column: 65,
                                },
                               },
                              },
                             ),
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "nestedTypes",
                              span: Span {
                               start: Position {
                                line: 579,
                                column: 7,
                               },
                               end: Position {
                                line: 579,
                                column: 18,
                               },
                              },
                             },
                            ),
                            Raw(
                             PartRaw {
                              content: "elemType",
                              span: Span {
                               start: Position {
                                line: 579,
                                column: 19,
                               },
                               end: Position {
                                line: 579,
                                column: 27,
                               },
                              },
                             },
                            ),
                           ],
                           to: Identifier(
                            Identifier {
                             id: "elemType",
                             span: Span {
                              start: Position {
                               line: 579,
                               column: 30,
                              },
                              end: Position {
                               line: 579,
                               column: 38,
                              },
                             },
                            },
                           ),
                          },
                         ),
                        ],
                        span: Span {
                         start: Position {
                          line: 570,
                          column: 35,
                         },
                         end: Position {
                          line: 580,
                          column: 6,
                         },
                        },
                       },
                      ),
                     ],
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 570,
                     column: 12,
                    },
                    end: Position {
                     line: 580,
                     column: 6,
                    },
                   },
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "unique",
                    span: Span {
                     start: Position {
                      line: 582,
                      column: 5,
                     },
                     end: Position {
                      line: 582,
                      column: 11,
                     },
                    },
                   },
                  ),
                 ],
                 to: Function(
                  Function {
                   head: Destructured(
                    FunctionHeadDestructured {
                     ellipsis: false,
                     identifier: None,
                     arguments: [
                      FunctionHeadDestructuredArgument {
                       identifier: "message",
                       default: None,
                      },
                     ],
                    },
                   ),
                   body: Function(
                    Function {
                     head: Simple(
                      FunctionHeadSimple {
                       identifier: "type",
                      },
                     ),
                     body: FunctionApplication(
                      FunctionApplication {
                       function: Identifier(
                        Identifier {
                         id: "mkOptionType",
                         span: Span {
                          start: Position {
                           line: 582,
                           column: 33,
                          },
                          end: Position {
                           line: 582,
                           column: 45,
                          },
                         },
                        },
                       ),
                       arguments: [
                        Map(
                         Map {
                          recursive: true,
                          bindings: [
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "name",
                                span: Span {
                                 start: Position {
                                  line: 583,
                                  column: 7,
                                 },
                                 end: Position {
                                  line: 583,
                                  column: 11,
                                 },
                                },
                               },
                              ),
                             ],
                             to: String(
                              String_ {
                               parts: [
                                Raw(
                                 PartRaw {
                                  content: "unique",
                                  span: Span {
                                   start: Position {
                                    line: 583,
                                    column: 15,
                                   },
                                   end: Position {
                                    line: 583,
                                    column: 21,
                                   },
                                  },
                                 },
                                ),
                               ],
                               span: Span {
                                start: Position {
                                 line: 583,
                                 column: 14,
                                },
                                end: Position {
                                 line: 583,
                                 column: 22,
                                },
                               },
                              },
                             ),
                            },
                           ),
                           Inherit(
                            BindingInherit {
                             from: Some(
                              Identifier(
                               Identifier {
                                id: "type",
                                span: Span {
                                 start: Position {
                                  line: 584,
                                  column: 16,
                                 },
                                 end: Position {
                                  line: 584,
                                  column: 20,
                                 },
                                },
                               },
                              ),
                             ),
                             attributes: [
                              Raw(
                               PartRaw {
                                content: "description",
                                span: Span {
                                 start: Position {
                                  line: 584,
                                  column: 22,
                                 },
                                 end: Position {
                                  line: 584,
                                  column: 33,
                                 },
                                },
                               },
                              ),
                              Raw(
                               PartRaw {
                                content: "descriptionClass",
                                span: Span {
                                 start: Position {
                                  line: 584,
                                  column: 34,
                                 },
                                 end: Position {
                                  line: 584,
                                  column: 50,
                                 },
                                },
                               },
                              ),
                              Raw(
                               PartRaw {
                                content: "check",
                                span: Span {
                                 start: Position {
                                  line: 584,
                                  column: 51,
                                 },
                                 end: Position {
                                  line: 584,
                                  column: 56,
                                 },
                                },
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 582,
                               column: 51,
                              },
                              end: Position {
                               line: 584,
                               column: 57,
                              },
                             },
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "merge",
                                span: Span {
                                 start: Position {
                                  line: 585,
                                  column: 7,
                                 },
                                 end: Position {
                                  line: 585,
                                  column: 12,
                                 },
                                },
                               },
                              ),
                             ],
                             to: FunctionApplication(
                              FunctionApplication {
                               function: Identifier(
                                Identifier {
                                 id: "mergeUniqueOption",
                                 span: Span {
                                  start: Position {
                                   line: 585,
                                   column: 15,
                                  },
                                  end: Position {
                                   line: 585,
                                   column: 32,
                                  },
                                 },
                                },
                               ),
                               arguments: [
                                Map(
                                 Map {
                                  recursive: false,
                                  bindings: [
                                   Inherit(
                                    BindingInherit {
                                     from: None,
                                     attributes: [
                                      Raw(
                                       PartRaw {
                                        content: "message",
                                        span: Span {
                                         start: Position {
                                          line: 585,
                                          column: 43,
                                         },
                                         end: Position {
                                          line: 585,
                                          column: 50,
                                         },
                                        },
                                       },
                                      ),
                                     ],
                                     span: Span {
                                      start: Position {
                                       line: 585,
                                       column: 34,
                                      },
                                      end: Position {
                                       line: 585,
                                       column: 51,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  span: Span {
                                   start: Position {
                                    line: 585,
                                    column: 33,
                                   },
                                   end: Position {
                                    line: 585,
                                    column: 53,
                                   },
                                  },
                                 },
                                ),
                               ],
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "emptyValue",
                                span: Span {
                                 start: Position {
                                  line: 586,
                                  column: 7,
                                 },
                                 end: Position {
                                  line: 586,
                                  column: 17,
                                 },
                                },
                               },
                              ),
                             ],
                             to: PropertyAccess(
                              PropertyAccess {
                               expression: Identifier(
                                Identifier {
                                 id: "type",
                                 span: Span {
                                  start: Position {
                                   line: 586,
                                   column: 20,
                                  },
                                  end: Position {
                                   line: 586,
                                   column: 24,
                                  },
                                 },
                                },
                               ),
                               attribute_path: [
                                Raw(
                                 PartRaw {
                                  content: "emptyValue",
                                  span: Span {
                                   start: Position {
                                    line: 586,
                                    column: 25,
                                   },
                                   end: Position {
                                    line: 586,
                                    column: 35,
                                   },
                                  },
                                 },
                                ),
                               ],
                               default: None,
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "getSubOptions",
                                span: Span {
                                 start: Position {
                                  line: 587,
                                  column: 7,
                                 },
                                 end: Position {
                                  line: 587,
                                  column: 20,
                                 },
                                },
                               },
                              ),
                             ],
                             to: PropertyAccess(
                              PropertyAccess {
                               expression: Identifier(
                                Identifier {
                                 id: "type",
                                 span: Span {
                                  start: Position {
                                   line: 587,
                                   column: 23,
                                  },
                                  end: Position {
                                   line: 587,
                                   column: 27,
                                  },
                                 },
                                },
                               ),
                               attribute_path: [
                                Raw(
                                 PartRaw {
                                  content: "getSubOptions",
                                  span: Span {
                                   start: Position {
                                    line: 587,
                                    column: 28,
                                   },
                                   end: Position {
                                    line: 587,
                                    column: 41,
                                   },
                                  },
                                 },
                                ),
                               ],
                               default: None,
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "getSubModules",
                                span: Span {
                                 start: Position {
                                  line: 588,
                                  column: 7,
                                 },
                                 end: Position {
                                  line: 588,
                                  column: 20,
                                 },
                                },
                               },
                              ),
                             ],
                             to: PropertyAccess(
                              PropertyAccess {
                               expression: Identifier(
                                Identifier {
                                 id: "type",
                                 span: Span {
                                  start: Position {
                                   line: 588,
                                   column: 23,
                                  },
                                  end: Position {
                                   line: 588,
                                   column: 27,
                                  },
                                 },
                                },
                               ),
                               attribute_path: [
                                Raw(
                                 PartRaw {
                                  content: "getSubModules",
                                  span: Span {
                                   start: Position {
                                    line: 588,
                                    column: 28,
                                   },
                                   end: Position {
                                    line: 588,
                                    column: 41,
                                   },
                                  },
                                 },
                                ),
                               ],
                               default: None,
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "substSubModules",
                                span: Span {
                                 start: Position {
                                  line: 589,
                                  column: 7,
                                 },
                                 end: Position {
                                  line: 589,
                                  column: 22,
                                 },
                                },
                               },
                              ),
                             ],
                             to: Function(
                              Function {
                               head: Simple(
                                FunctionHeadSimple {
                                 identifier: "m",
                                },
                               ),
                               body: FunctionApplication(
                                FunctionApplication {
                                 function: Identifier(
                                  Identifier {
                                   id: "uniq",
                                   span: Span {
                                    start: Position {
                                     line: 589,
                                     column: 28,
                                    },
                                    end: Position {
                                     line: 589,
                                     column: 32,
                                    },
                                   },
                                  },
                                 ),
                                 arguments: [
                                  FunctionApplication(
                                   FunctionApplication {
                                    function: PropertyAccess(
                                     PropertyAccess {
                                      expression: Identifier(
                                       Identifier {
                                        id: "type",
                                        span: Span {
                                         start: Position {
                                          line: 589,
                                          column: 34,
                                         },
                                         end: Position {
                                          line: 589,
                                          column: 38,
                                         },
                                        },
                                       },
                                      ),
                                      attribute_path: [
                                       Raw(
                                        PartRaw {
                                         content: "substSubModules",
                                         span: Span {
                                          start: Position {
                                           line: 589,
                                           column: 39,
                                          },
                                          end: Position {
                                           line: 589,
                                           column: 54,
                                          },
                                         },
                                        },
                                       ),
                                      ],
                                      default: None,
                                     },
                                    ),
                                    arguments: [
                                     Identifier(
                                      Identifier {
                                       id: "m",
                                       span: Span {
                                        start: Position {
                                         line: 589,
                                         column: 55,
                                        },
                                        end: Position {
                                         line: 589,
                                         column: 56,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                   },
                                  ),
                                 ],
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 589,
                                 column: 25,
                                },
                                end: Position {
                                 line: 589,
                                 column: 57,
                                },
                               },
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "functor",
                                span: Span {
                                 start: Position {
                                  line: 590,
                                  column: 7,
                                 },
                                 end: Position {
                                  line: 590,
                                  column: 14,
                                 },
                                },
                               },
                              ),
                             ],
                             to: BinaryOperation(
                              BinaryOperation {
                               left: FunctionApplication(
                                FunctionApplication {
                                 function: Identifier(
                                  Identifier {
                                   id: "defaultFunctor",
                                   span: Span {
                                    start: Position {
                                     line: 590,
                                     column: 18,
                                    },
                                    end: Position {
                                     line: 590,
                                     column: 32,
                                    },
                                   },
                                  },
                                 ),
                                 arguments: [
                                  Identifier(
                                   Identifier {
                                    id: "name",
                                    span: Span {
                                     start: Position {
                                      line: 590,
                                      column: 33,
                                     },
                                     end: Position {
                                      line: 590,
                                      column: 37,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                },
                               ),
                               operator: Update,
                               right: Map(
                                Map {
                                 recursive: false,
                                 bindings: [
                                  KeyValue(
                                   BindingKeyValue {
                                    from: [
                                     Raw(
                                      PartRaw {
                                       content: "wrapped",
                                       span: Span {
                                        start: Position {
                                         line: 590,
                                         column: 44,
                                        },
                                        end: Position {
                                         line: 590,
                                         column: 51,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    to: Identifier(
                                     Identifier {
                                      id: "type",
                                      span: Span {
                                       start: Position {
                                        line: 590,
                                        column: 54,
                                       },
                                       end: Position {
                                        line: 590,
                                        column: 58,
                                       },
                                      },
                                     },
                                    ),
                                   },
                                  ),
                                 ],
                                 span: Span {
                                  start: Position {
                                   line: 590,
                                   column: 42,
                                  },
                                  end: Position {
                                   line: 590,
                                   column: 61,
                                  },
                                 },
                                },
                               ),
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "nestedTypes",
                                span: Span {
                                 start: Position {
                                  line: 591,
                                  column: 7,
                                 },
                                 end: Position {
                                  line: 591,
                                  column: 18,
                                 },
                                },
                               },
                              ),
                              Raw(
                               PartRaw {
                                content: "elemType",
                                span: Span {
                                 start: Position {
                                  line: 591,
                                  column: 19,
                                 },
                                 end: Position {
                                  line: 591,
                                  column: 27,
                                 },
                                },
                               },
                              ),
                             ],
                             to: Identifier(
                              Identifier {
                               id: "type",
                               span: Span {
                                start: Position {
                                 line: 591,
                                 column: 30,
                                },
                                end: Position {
                                 line: 591,
                                 column: 34,
                                },
                               },
                              },
                             ),
                            },
                           ),
                          ],
                          span: Span {
                           start: Position {
                            line: 582,
                            column: 46,
                           },
                           end: Position {
                            line: 592,
                            column: 6,
                           },
                          },
                         },
                        ),
                       ],
                      },
                     ),
                     span: Span {
                      start: Position {
                       line: 582,
                       column: 27,
                      },
                      end: Position {
                       line: 592,
                       column: 6,
                      },
                     },
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 582,
                     column: 14,
                    },
                    end: Position {
                     line: 592,
                     column: 6,
                    },
                   },
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "nullOr",
                    span: Span {
                     start: Position {
                      line: 595,
                      column: 5,
                     },
                     end: Position {
                      line: 595,
                      column: 11,
                     },
                    },
                   },
                  ),
                 ],
                 to: Function(
                  Function {
                   head: Simple(
                    FunctionHeadSimple {
                     identifier: "elemType",
                    },
                   ),
                   body: FunctionApplication(
                    FunctionApplication {
                     function: Identifier(
                      Identifier {
                       id: "mkOptionType",
                       span: Span {
                        start: Position {
                         line: 595,
                         column: 24,
                        },
                        end: Position {
                         line: 595,
                         column: 36,
                        },
                       },
                      },
                     ),
                     arguments: [
                      Map(
                       Map {
                        recursive: true,
                        bindings: [
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "name",
                              span: Span {
                               start: Position {
                                line: 596,
                                column: 7,
                               },
                               end: Position {
                                line: 596,
                                column: 11,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "nullOr",
                                span: Span {
                                 start: Position {
                                  line: 596,
                                  column: 15,
                                 },
                                 end: Position {
                                  line: 596,
                                  column: 21,
                                 },
                                },
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 596,
                               column: 14,
                              },
                              end: Position {
                               line: 596,
                               column: 22,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "description",
                              span: Span {
                               start: Position {
                                line: 597,
                                column: 7,
                               },
                               end: Position {
                                line: 597,
                                column: 18,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "null or ",
                                span: Span {
                                 start: Position {
                                  line: 597,
                                  column: 22,
                                 },
                                 end: Position {
                                  line: 597,
                                  column: 116,
                                 },
                                },
                               },
                              ),
                              Interpolation(
                               PartInterpolation {
                                expression: FunctionApplication(
                                 FunctionApplication {
                                  function: Identifier(
                                   Identifier {
                                    id: "optionDescriptionPhrase",
                                    span: Span {
                                     start: Position {
                                      line: 597,
                                      column: 32,
                                     },
                                     end: Position {
                                      line: 597,
                                      column: 55,
                                     },
                                    },
                                   },
                                  ),
                                  arguments: [
                                   Function(
                                    Function {
                                     head: Simple(
                                      FunctionHeadSimple {
                                       identifier: "class",
                                      },
                                     ),
                                     body: BinaryOperation(
                                      BinaryOperation {
                                       left: BinaryOperation(
                                        BinaryOperation {
                                         left: Identifier(
                                          Identifier {
                                           id: "class",
                                           span: Span {
                                            start: Position {
                                             line: 597,
                                             column: 64,
                                            },
                                            end: Position {
                                             line: 597,
                                             column: 69,
                                            },
                                           },
                                          },
                                         ),
                                         operator: EqualTo,
                                         right: String(
                                          String_ {
                                           parts: [
                                            Raw(
                                             PartRaw {
                                              content: "noun",
                                              span: Span {
                                               start: Position {
                                                line: 597,
                                                column: 74,
                                               },
                                               end: Position {
                                                line: 597,
                                                column: 78,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                           span: Span {
                                            start: Position {
                                             line: 597,
                                             column: 73,
                                            },
                                            end: Position {
                                             line: 597,
                                             column: 79,
                                            },
                                           },
                                          },
                                         ),
                                        },
                                       ),
                                       operator: LogicalOr,
                                       right: BinaryOperation(
                                        BinaryOperation {
                                         left: Identifier(
                                          Identifier {
                                           id: "class",
                                           span: Span {
                                            start: Position {
                                             line: 597,
                                             column: 83,
                                            },
                                            end: Position {
                                             line: 597,
                                             column: 88,
                                            },
                                           },
                                          },
                                         ),
                                         operator: EqualTo,
                                         right: String(
                                          String_ {
                                           parts: [
                                            Raw(
                                             PartRaw {
                                              content: "conjunction",
                                              span: Span {
                                               start: Position {
                                                line: 597,
                                                column: 93,
                                               },
                                               end: Position {
                                                line: 597,
                                                column: 104,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                           span: Span {
                                            start: Position {
                                             line: 597,
                                             column: 92,
                                            },
                                            end: Position {
                                             line: 597,
                                             column: 105,
                                            },
                                           },
                                          },
                                         ),
                                        },
                                       ),
                                      },
                                     ),
                                     span: Span {
                                      start: Position {
                                       line: 597,
                                       column: 57,
                                      },
                                      end: Position {
                                       line: 597,
                                       column: 105,
                                      },
                                     },
                                    },
                                   ),
                                   Identifier(
                                    Identifier {
                                     id: "elemType",
                                     span: Span {
                                      start: Position {
                                       line: 597,
                                       column: 107,
                                      },
                                      end: Position {
                                       line: 597,
                                       column: 115,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                 },
                                ),
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 597,
                               column: 21,
                              },
                              end: Position {
                               line: 597,
                               column: 117,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "descriptionClass",
                              span: Span {
                               start: Position {
                                line: 598,
                                column: 7,
                               },
                               end: Position {
                                line: 598,
                                column: 23,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "conjunction",
                                span: Span {
                                 start: Position {
                                  line: 598,
                                  column: 27,
                                 },
                                 end: Position {
                                  line: 598,
                                  column: 38,
                                 },
                                },
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 598,
                               column: 26,
                              },
                              end: Position {
                               line: 598,
                               column: 39,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "check",
                              span: Span {
                               start: Position {
                                line: 599,
                                column: 7,
                               },
                               end: Position {
                                line: 599,
                                column: 12,
                               },
                              },
                             },
                            ),
                           ],
                           to: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "x",
                              },
                             ),
                             body: BinaryOperation(
                              BinaryOperation {
                               left: BinaryOperation(
                                BinaryOperation {
                                 left: Identifier(
                                  Identifier {
                                   id: "x",
                                   span: Span {
                                    start: Position {
                                     line: 599,
                                     column: 18,
                                    },
                                    end: Position {
                                     line: 599,
                                     column: 19,
                                    },
                                   },
                                  },
                                 ),
                                 operator: EqualTo,
                                 right: Identifier(
                                  Identifier {
                                   id: "null",
                                   span: Span {
                                    start: Position {
                                     line: 599,
                                     column: 23,
                                    },
                                    end: Position {
                                     line: 599,
                                     column: 27,
                                    },
                                   },
                                  },
                                 ),
                                },
                               ),
                               operator: LogicalOr,
                               right: FunctionApplication(
                                FunctionApplication {
                                 function: PropertyAccess(
                                  PropertyAccess {
                                   expression: Identifier(
                                    Identifier {
                                     id: "elemType",
                                     span: Span {
                                      start: Position {
                                       line: 599,
                                       column: 31,
                                      },
                                      end: Position {
                                       line: 599,
                                       column: 39,
                                      },
                                     },
                                    },
                                   ),
                                   attribute_path: [
                                    Raw(
                                     PartRaw {
                                      content: "check",
                                      span: Span {
                                       start: Position {
                                        line: 599,
                                        column: 40,
                                       },
                                       end: Position {
                                        line: 599,
                                        column: 45,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   default: None,
                                  },
                                 ),
                                 arguments: [
                                  Identifier(
                                   Identifier {
                                    id: "x",
                                    span: Span {
                                     start: Position {
                                      line: 599,
                                      column: 46,
                                     },
                                     end: Position {
                                      line: 599,
                                      column: 47,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                },
                               ),
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 599,
                               column: 15,
                              },
                              end: Position {
                               line: 599,
                               column: 47,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "merge",
                              span: Span {
                               start: Position {
                                line: 600,
                                column: 7,
                               },
                               end: Position {
                                line: 600,
                                column: 12,
                               },
                              },
                             },
                            ),
                           ],
                           to: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "loc",
                              },
                             ),
                             body: Function(
                              Function {
                               head: Simple(
                                FunctionHeadSimple {
                                 identifier: "defs",
                                },
                               ),
                               body: LetIn(
                                LetIn {
                                 bindings: [
                                  KeyValue(
                                   BindingKeyValue {
                                    from: [
                                     Raw(
                                      PartRaw {
                                       content: "nrNulls",
                                       span: Span {
                                        start: Position {
                                         line: 601,
                                         column: 13,
                                        },
                                        end: Position {
                                         line: 601,
                                         column: 20,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    to: FunctionApplication(
                                     FunctionApplication {
                                      function: Identifier(
                                       Identifier {
                                        id: "count",
                                        span: Span {
                                         start: Position {
                                          line: 601,
                                          column: 23,
                                         },
                                         end: Position {
                                          line: 601,
                                          column: 28,
                                         },
                                        },
                                       },
                                      ),
                                      arguments: [
                                       Function(
                                        Function {
                                         head: Simple(
                                          FunctionHeadSimple {
                                           identifier: "def",
                                          },
                                         ),
                                         body: BinaryOperation(
                                          BinaryOperation {
                                           left: PropertyAccess(
                                            PropertyAccess {
                                             expression: Identifier(
                                              Identifier {
                                               id: "def",
                                               span: Span {
                                                start: Position {
                                                 line: 601,
                                                 column: 35,
                                                },
                                                end: Position {
                                                 line: 601,
                                                 column: 38,
                                                },
                                               },
                                              },
                                             ),
                                             attribute_path: [
                                              Raw(
                                               PartRaw {
                                                content: "value",
                                                span: Span {
                                                 start: Position {
                                                  line: 601,
                                                  column: 39,
                                                 },
                                                 end: Position {
                                                  line: 601,
                                                  column: 44,
                                                 },
                                                },
                                               },
                                              ),
                                             ],
                                             default: None,
                                            },
                                           ),
                                           operator: EqualTo,
                                           right: Identifier(
                                            Identifier {
                                             id: "null",
                                             span: Span {
                                              start: Position {
                                               line: 601,
                                               column: 48,
                                              },
                                              end: Position {
                                               line: 601,
                                               column: 52,
                                              },
                                             },
                                            },
                                           ),
                                          },
                                         ),
                                         span: Span {
                                          start: Position {
                                           line: 601,
                                           column: 30,
                                          },
                                          end: Position {
                                           line: 601,
                                           column: 52,
                                          },
                                         },
                                        },
                                       ),
                                       Identifier(
                                        Identifier {
                                         id: "defs",
                                         span: Span {
                                          start: Position {
                                           line: 601,
                                           column: 54,
                                          },
                                          end: Position {
                                           line: 601,
                                           column: 58,
                                          },
                                         },
                                        },
                                       ),
                                      ],
                                     },
                                    ),
                                   },
                                  ),
                                 ],
                                 target: IfThenElse(
                                  IfThenElse {
                                   predicate: BinaryOperation(
                                    BinaryOperation {
                                     left: Identifier(
                                      Identifier {
                                       id: "nrNulls",
                                       span: Span {
                                        start: Position {
                                         line: 602,
                                         column: 12,
                                        },
                                        end: Position {
                                         line: 602,
                                         column: 19,
                                        },
                                       },
                                      },
                                     ),
                                     operator: EqualTo,
                                     right: FunctionApplication(
                                      FunctionApplication {
                                       function: Identifier(
                                        Identifier {
                                         id: "length",
                                         span: Span {
                                          start: Position {
                                           line: 602,
                                           column: 23,
                                          },
                                          end: Position {
                                           line: 602,
                                           column: 29,
                                          },
                                         },
                                        },
                                       ),
                                       arguments: [
                                        Identifier(
                                         Identifier {
                                          id: "defs",
                                          span: Span {
                                           start: Position {
                                            line: 602,
                                            column: 30,
                                           },
                                           end: Position {
                                            line: 602,
                                            column: 34,
                                           },
                                          },
                                         },
                                        ),
                                       ],
                                      },
                                     ),
                                    },
                                   ),
                                   then: Identifier(
                                    Identifier {
                                     id: "null",
                                     span: Span {
                                      start: Position {
                                       line: 602,
                                       column: 40,
                                      },
                                      end: Position {
                                       line: 602,
                                       column: 44,
                                      },
                                     },
                                    },
                                   ),
                                   else_: IfThenElse(
                                    IfThenElse {
                                     predicate: BinaryOperation(
                                      BinaryOperation {
                                       left: Identifier(
                                        Identifier {
                                         id: "nrNulls",
                                         span: Span {
                                          start: Position {
                                           line: 603,
                                           column: 17,
                                          },
                                          end: Position {
                                           line: 603,
                                           column: 24,
                                          },
                                         },
                                        },
                                       ),
                                       operator: NotEqualTo,
                                       right: Integer(
                                        Integer {
                                         value: "0",
                                         span: Span {
                                          start: Position {
                                           line: 603,
                                           column: 28,
                                          },
                                          end: Position {
                                           line: 603,
                                           column: 29,
                                          },
                                         },
                                        },
                                       ),
                                      },
                                     ),
                                     then: FunctionApplication(
                                      FunctionApplication {
                                       function: Identifier(
                                        Identifier {
                                         id: "throw",
                                         span: Span {
                                          start: Position {
                                           line: 604,
                                           column: 11,
                                          },
                                          end: Position {
                                           line: 604,
                                           column: 16,
                                          },
                                         },
                                        },
                                       ),
                                       arguments: [
                                        String(
                                         String_ {
                                          parts: [
                                           Raw(
                                            PartRaw {
                                             content: "The option `",
                                             span: Span {
                                              start: Position {
                                               line: 604,
                                               column: 18,
                                              },
                                              end: Position {
                                               line: 604,
                                               column: 47,
                                              },
                                             },
                                            },
                                           ),
                                           Interpolation(
                                            PartInterpolation {
                                             expression: FunctionApplication(
                                              FunctionApplication {
                                               function: Identifier(
                                                Identifier {
                                                 id: "showOption",
                                                 span: Span {
                                                  start: Position {
                                                   line: 604,
                                                   column: 32,
                                                  },
                                                  end: Position {
                                                   line: 604,
                                                   column: 42,
                                                  },
                                                 },
                                                },
                                               ),
                                               arguments: [
                                                Identifier(
                                                 Identifier {
                                                  id: "loc",
                                                  span: Span {
                                                   start: Position {
                                                    line: 604,
                                                    column: 43,
                                                   },
                                                   end: Position {
                                                    line: 604,
                                                    column: 46,
                                                   },
                                                  },
                                                 },
                                                ),
                                               ],
                                              },
                                             ),
                                            },
                                           ),
                                           Raw(
                                            PartRaw {
                                             content: "` is defined both null and not null, in ",
                                             span: Span {
                                              start: Position {
                                               line: 604,
                                               column: 18,
                                              },
                                              end: Position {
                                               line: 604,
                                               column: 87,
                                              },
                                             },
                                            },
                                           ),
                                           Interpolation(
                                            PartInterpolation {
                                             expression: FunctionApplication(
                                              FunctionApplication {
                                               function: Identifier(
                                                Identifier {
                                                 id: "showFiles",
                                                 span: Span {
                                                  start: Position {
                                                   line: 604,
                                                   column: 89,
                                                  },
                                                  end: Position {
                                                   line: 604,
                                                   column: 98,
                                                  },
                                                 },
                                                },
                                               ),
                                               arguments: [
                                                FunctionApplication(
                                                 FunctionApplication {
                                                  function: Identifier(
                                                   Identifier {
                                                    id: "getFiles",
                                                    span: Span {
                                                     start: Position {
                                                      line: 604,
                                                      column: 100,
                                                     },
                                                     end: Position {
                                                      line: 604,
                                                      column: 108,
                                                     },
                                                    },
                                                   },
                                                  ),
                                                  arguments: [
                                                   Identifier(
                                                    Identifier {
                                                     id: "defs",
                                                     span: Span {
                                                      start: Position {
                                                       line: 604,
                                                       column: 109,
                                                      },
                                                      end: Position {
                                                       line: 604,
                                                       column: 113,
                                                      },
                                                     },
                                                    },
                                                   ),
                                                  ],
                                                 },
                                                ),
                                               ],
                                              },
                                             ),
                                            },
                                           ),
                                           Raw(
                                            PartRaw {
                                             content: ".",
                                             span: Span {
                                              start: Position {
                                               line: 604,
                                               column: 18,
                                              },
                                              end: Position {
                                               line: 604,
                                               column: 116,
                                              },
                                             },
                                            },
                                           ),
                                          ],
                                          span: Span {
                                           start: Position {
                                            line: 604,
                                            column: 17,
                                           },
                                           end: Position {
                                            line: 604,
                                            column: 117,
                                           },
                                          },
                                         },
                                        ),
                                       ],
                                      },
                                     ),
                                     else_: FunctionApplication(
                                      FunctionApplication {
                                       function: PropertyAccess(
                                        PropertyAccess {
                                         expression: Identifier(
                                          Identifier {
                                           id: "elemType",
                                           span: Span {
                                            start: Position {
                                             line: 605,
                                             column: 14,
                                            },
                                            end: Position {
                                             line: 605,
                                             column: 22,
                                            },
                                           },
                                          },
                                         ),
                                         attribute_path: [
                                          Raw(
                                           PartRaw {
                                            content: "merge",
                                            span: Span {
                                             start: Position {
                                              line: 605,
                                              column: 23,
                                             },
                                             end: Position {
                                              line: 605,
                                              column: 28,
                                             },
                                            },
                                           },
                                          ),
                                         ],
                                         default: None,
                                        },
                                       ),
                                       arguments: [
                                        Identifier(
                                         Identifier {
                                          id: "loc",
                                          span: Span {
                                           start: Position {
                                            line: 605,
                                            column: 29,
                                           },
                                           end: Position {
                                            line: 605,
                                            column: 32,
                                           },
                                          },
                                         },
                                        ),
                                        Identifier(
                                         Identifier {
                                          id: "defs",
                                          span: Span {
                                           start: Position {
                                            line: 605,
                                            column: 33,
                                           },
                                           end: Position {
                                            line: 605,
                                            column: 37,
                                           },
                                          },
                                         },
                                        ),
                                       ],
                                      },
                                     ),
                                     span: Span {
                                      start: Position {
                                       line: 603,
                                       column: 14,
                                      },
                                      end: Position {
                                       line: 605,
                                       column: 37,
                                      },
                                     },
                                    },
                                   ),
                                   span: Span {
                                    start: Position {
                                     line: 602,
                                     column: 9,
                                    },
                                    end: Position {
                                     line: 605,
                                     column: 37,
                                    },
                                   },
                                  },
                                 ),
                                 span: Span {
                                  start: Position {
                                   line: 601,
                                   column: 9,
                                  },
                                  end: Position {
                                   line: 605,
                                   column: 37,
                                  },
                                 },
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 600,
                                 column: 20,
                                },
                                end: Position {
                                 line: 605,
                                 column: 37,
                                },
                               },
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 600,
                               column: 15,
                              },
                              end: Position {
                               line: 605,
                               column: 37,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "emptyValue",
                              span: Span {
                               start: Position {
                                line: 606,
                                column: 7,
                               },
                               end: Position {
                                line: 606,
                                column: 17,
                               },
                              },
                             },
                            ),
                           ],
                           to: Map(
                            Map {
                             recursive: false,
                             bindings: [
                              KeyValue(
                               BindingKeyValue {
                                from: [
                                 Raw(
                                  PartRaw {
                                   content: "value",
                                   span: Span {
                                    start: Position {
                                     line: 606,
                                     column: 22,
                                    },
                                    end: Position {
                                     line: 606,
                                     column: 27,
                                    },
                                   },
                                  },
                                 ),
                                ],
                                to: Identifier(
                                 Identifier {
                                  id: "null",
                                  span: Span {
                                   start: Position {
                                    line: 606,
                                    column: 30,
                                   },
                                   end: Position {
                                    line: 606,
                                    column: 34,
                                   },
                                  },
                                 },
                                ),
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 606,
                               column: 20,
                              },
                              end: Position {
                               line: 606,
                               column: 37,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "getSubOptions",
                              span: Span {
                               start: Position {
                                line: 607,
                                column: 7,
                               },
                               end: Position {
                                line: 607,
                                column: 20,
                               },
                              },
                             },
                            ),
                           ],
                           to: PropertyAccess(
                            PropertyAccess {
                             expression: Identifier(
                              Identifier {
                               id: "elemType",
                               span: Span {
                                start: Position {
                                 line: 607,
                                 column: 23,
                                },
                                end: Position {
                                 line: 607,
                                 column: 31,
                                },
                               },
                              },
                             ),
                             attribute_path: [
                              Raw(
                               PartRaw {
                                content: "getSubOptions",
                                span: Span {
                                 start: Position {
                                  line: 607,
                                  column: 32,
                                 },
                                 end: Position {
                                  line: 607,
                                  column: 45,
                                 },
                                },
                               },
                              ),
                             ],
                             default: None,
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "getSubModules",
                              span: Span {
                               start: Position {
                                line: 608,
                                column: 7,
                               },
                               end: Position {
                                line: 608,
                                column: 20,
                               },
                              },
                             },
                            ),
                           ],
                           to: PropertyAccess(
                            PropertyAccess {
                             expression: Identifier(
                              Identifier {
                               id: "elemType",
                               span: Span {
                                start: Position {
                                 line: 608,
                                 column: 23,
                                },
                                end: Position {
                                 line: 608,
                                 column: 31,
                                },
                               },
                              },
                             ),
                             attribute_path: [
                              Raw(
                               PartRaw {
                                content: "getSubModules",
                                span: Span {
                                 start: Position {
                                  line: 608,
                                  column: 32,
                                 },
                                 end: Position {
                                  line: 608,
                                  column: 45,
                                 },
                                },
                               },
                              ),
                             ],
                             default: None,
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "substSubModules",
                              span: Span {
                               start: Position {
                                line: 609,
                                column: 7,
                               },
                               end: Position {
                                line: 609,
                                column: 22,
                               },
                              },
                             },
                            ),
                           ],
                           to: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "m",
                              },
                             ),
                             body: FunctionApplication(
                              FunctionApplication {
                               function: Identifier(
                                Identifier {
                                 id: "nullOr",
                                 span: Span {
                                  start: Position {
                                   line: 609,
                                   column: 28,
                                  },
                                  end: Position {
                                   line: 609,
                                   column: 34,
                                  },
                                 },
                                },
                               ),
                               arguments: [
                                FunctionApplication(
                                 FunctionApplication {
                                  function: PropertyAccess(
                                   PropertyAccess {
                                    expression: Identifier(
                                     Identifier {
                                      id: "elemType",
                                      span: Span {
                                       start: Position {
                                        line: 609,
                                        column: 36,
                                       },
                                       end: Position {
                                        line: 609,
                                        column: 44,
                                       },
                                      },
                                     },
                                    ),
                                    attribute_path: [
                                     Raw(
                                      PartRaw {
                                       content: "substSubModules",
                                       span: Span {
                                        start: Position {
                                         line: 609,
                                         column: 45,
                                        },
                                        end: Position {
                                         line: 609,
                                         column: 60,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    default: None,
                                   },
                                  ),
                                  arguments: [
                                   Identifier(
                                    Identifier {
                                     id: "m",
                                     span: Span {
                                      start: Position {
                                       line: 609,
                                       column: 61,
                                      },
                                      end: Position {
                                       line: 609,
                                       column: 62,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                 },
                                ),
                               ],
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 609,
                               column: 25,
                              },
                              end: Position {
                               line: 609,
                               column: 63,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "functor",
                              span: Span {
                               start: Position {
                                line: 610,
                                column: 7,
                               },
                               end: Position {
                                line: 610,
                                column: 14,
                               },
                              },
                             },
                            ),
                           ],
                           to: BinaryOperation(
                            BinaryOperation {
                             left: FunctionApplication(
                              FunctionApplication {
                               function: Identifier(
                                Identifier {
                                 id: "defaultFunctor",
                                 span: Span {
                                  start: Position {
                                   line: 610,
                                   column: 18,
                                  },
                                  end: Position {
                                   line: 610,
                                   column: 32,
                                  },
                                 },
                                },
                               ),
                               arguments: [
                                Identifier(
                                 Identifier {
                                  id: "name",
                                  span: Span {
                                   start: Position {
                                    line: 610,
                                    column: 33,
                                   },
                                   end: Position {
                                    line: 610,
                                    column: 37,
                                   },
                                  },
                                 },
                                ),
                               ],
                              },
                             ),
                             operator: Update,
                             right: Map(
                              Map {
                               recursive: false,
                               bindings: [
                                KeyValue(
                                 BindingKeyValue {
                                  from: [
                                   Raw(
                                    PartRaw {
                                     content: "wrapped",
                                     span: Span {
                                      start: Position {
                                       line: 610,
                                       column: 44,
                                      },
                                      end: Position {
                                       line: 610,
                                       column: 51,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  to: Identifier(
                                   Identifier {
                                    id: "elemType",
                                    span: Span {
                                     start: Position {
                                      line: 610,
                                      column: 54,
                                     },
                                     end: Position {
                                      line: 610,
                                      column: 62,
                                     },
                                    },
                                   },
                                  ),
                                 },
                                ),
                               ],
                               span: Span {
                                start: Position {
                                 line: 610,
                                 column: 42,
                                },
                                end: Position {
                                 line: 610,
                                 column: 65,
                                },
                               },
                              },
                             ),
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "nestedTypes",
                              span: Span {
                               start: Position {
                                line: 611,
                                column: 7,
                               },
                               end: Position {
                                line: 611,
                                column: 18,
                               },
                              },
                             },
                            ),
                            Raw(
                             PartRaw {
                              content: "elemType",
                              span: Span {
                               start: Position {
                                line: 611,
                                column: 19,
                               },
                               end: Position {
                                line: 611,
                                column: 27,
                               },
                              },
                             },
                            ),
                           ],
                           to: Identifier(
                            Identifier {
                             id: "elemType",
                             span: Span {
                              start: Position {
                               line: 611,
                               column: 30,
                              },
                              end: Position {
                               line: 611,
                               column: 38,
                              },
                             },
                            },
                           ),
                          },
                         ),
                        ],
                        span: Span {
                         start: Position {
                          line: 595,
                          column: 37,
                         },
                         end: Position {
                          line: 612,
                          column: 6,
                         },
                        },
                       },
                      ),
                     ],
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 595,
                     column: 14,
                    },
                    end: Position {
                     line: 612,
                     column: 6,
                    },
                   },
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "functionTo",
                    span: Span {
                     start: Position {
                      line: 614,
                      column: 5,
                     },
                     end: Position {
                      line: 614,
                      column: 15,
                     },
                    },
                   },
                  ),
                 ],
                 to: Function(
                  Function {
                   head: Simple(
                    FunctionHeadSimple {
                     identifier: "elemType",
                    },
                   ),
                   body: FunctionApplication(
                    FunctionApplication {
                     function: Identifier(
                      Identifier {
                       id: "mkOptionType",
                       span: Span {
                        start: Position {
                         line: 614,
                         column: 28,
                        },
                        end: Position {
                         line: 614,
                         column: 40,
                        },
                       },
                      },
                     ),
                     arguments: [
                      Map(
                       Map {
                        recursive: false,
                        bindings: [
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "name",
                              span: Span {
                               start: Position {
                                line: 615,
                                column: 7,
                               },
                               end: Position {
                                line: 615,
                                column: 11,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "functionTo",
                                span: Span {
                                 start: Position {
                                  line: 615,
                                  column: 15,
                                 },
                                 end: Position {
                                  line: 615,
                                  column: 25,
                                 },
                                },
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 615,
                               column: 14,
                              },
                              end: Position {
                               line: 615,
                               column: 26,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "description",
                              span: Span {
                               start: Position {
                                line: 616,
                                column: 7,
                               },
                               end: Position {
                                line: 616,
                                column: 18,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "function that evaluates to a(n) ",
                                span: Span {
                                 start: Position {
                                  line: 616,
                                  column: 22,
                                 },
                                 end: Position {
                                  line: 616,
                                  column: 138,
                                 },
                                },
                               },
                              ),
                              Interpolation(
                               PartInterpolation {
                                expression: FunctionApplication(
                                 FunctionApplication {
                                  function: Identifier(
                                   Identifier {
                                    id: "optionDescriptionPhrase",
                                    span: Span {
                                     start: Position {
                                      line: 616,
                                      column: 56,
                                     },
                                     end: Position {
                                      line: 616,
                                      column: 79,
                                     },
                                    },
                                   },
                                  ),
                                  arguments: [
                                   Function(
                                    Function {
                                     head: Simple(
                                      FunctionHeadSimple {
                                       identifier: "class",
                                      },
                                     ),
                                     body: BinaryOperation(
                                      BinaryOperation {
                                       left: BinaryOperation(
                                        BinaryOperation {
                                         left: Identifier(
                                          Identifier {
                                           id: "class",
                                           span: Span {
                                            start: Position {
                                             line: 616,
                                             column: 88,
                                            },
                                            end: Position {
                                             line: 616,
                                             column: 93,
                                            },
                                           },
                                          },
                                         ),
                                         operator: EqualTo,
                                         right: String(
                                          String_ {
                                           parts: [
                                            Raw(
                                             PartRaw {
                                              content: "noun",
                                              span: Span {
                                               start: Position {
                                                line: 616,
                                                column: 98,
                                               },
                                               end: Position {
                                                line: 616,
                                                column: 102,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                           span: Span {
                                            start: Position {
                                             line: 616,
                                             column: 97,
                                            },
                                            end: Position {
                                             line: 616,
                                             column: 103,
                                            },
                                           },
                                          },
                                         ),
                                        },
                                       ),
                                       operator: LogicalOr,
                                       right: BinaryOperation(
                                        BinaryOperation {
                                         left: Identifier(
                                          Identifier {
                                           id: "class",
                                           span: Span {
                                            start: Position {
                                             line: 616,
                                             column: 107,
                                            },
                                            end: Position {
                                             line: 616,
                                             column: 112,
                                            },
                                           },
                                          },
                                         ),
                                         operator: EqualTo,
                                         right: String(
                                          String_ {
                                           parts: [
                                            Raw(
                                             PartRaw {
                                              content: "composite",
                                              span: Span {
                                               start: Position {
                                                line: 616,
                                                column: 117,
                                               },
                                               end: Position {
                                                line: 616,
                                                column: 126,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                           span: Span {
                                            start: Position {
                                             line: 616,
                                             column: 116,
                                            },
                                            end: Position {
                                             line: 616,
                                             column: 127,
                                            },
                                           },
                                          },
                                         ),
                                        },
                                       ),
                                      },
                                     ),
                                     span: Span {
                                      start: Position {
                                       line: 616,
                                       column: 81,
                                      },
                                      end: Position {
                                       line: 616,
                                       column: 127,
                                      },
                                     },
                                    },
                                   ),
                                   Identifier(
                                    Identifier {
                                     id: "elemType",
                                     span: Span {
                                      start: Position {
                                       line: 616,
                                       column: 129,
                                      },
                                      end: Position {
                                       line: 616,
                                       column: 137,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                 },
                                ),
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 616,
                               column: 21,
                              },
                              end: Position {
                               line: 616,
                               column: 139,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "descriptionClass",
                              span: Span {
                               start: Position {
                                line: 617,
                                column: 7,
                               },
                               end: Position {
                                line: 617,
                                column: 23,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "composite",
                                span: Span {
                                 start: Position {
                                  line: 617,
                                  column: 27,
                                 },
                                 end: Position {
                                  line: 617,
                                  column: 36,
                                 },
                                },
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 617,
                               column: 26,
                              },
                              end: Position {
                               line: 617,
                               column: 37,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "check",
                              span: Span {
                               start: Position {
                                line: 618,
                                column: 7,
                               },
                               end: Position {
                                line: 618,
                                column: 12,
                               },
                              },
                             },
                            ),
                           ],
                           to: Identifier(
                            Identifier {
                             id: "isFunction",
                             span: Span {
                              start: Position {
                               line: 618,
                               column: 15,
                              },
                              end: Position {
                               line: 618,
                               column: 25,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "merge",
                              span: Span {
                               start: Position {
                                line: 619,
                                column: 7,
                               },
                               end: Position {
                                line: 619,
                                column: 12,
                               },
                              },
                             },
                            ),
                           ],
                           to: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "loc",
                              },
                             ),
                             body: Function(
                              Function {
                               head: Simple(
                                FunctionHeadSimple {
                                 identifier: "defs",
                                },
                               ),
                               body: Function(
                                Function {
                                 head: Simple(
                                  FunctionHeadSimple {
                                   identifier: "fnArgs",
                                  },
                                 ),
                                 body: PropertyAccess(
                                  PropertyAccess {
                                   expression: FunctionApplication(
                                    FunctionApplication {
                                     function: Identifier(
                                      Identifier {
                                       id: "mergeDefinitions",
                                       span: Span {
                                        start: Position {
                                         line: 620,
                                         column: 18,
                                        },
                                        end: Position {
                                         line: 620,
                                         column: 34,
                                        },
                                       },
                                      },
                                     ),
                                     arguments: [
                                      BinaryOperation(
                                       BinaryOperation {
                                        left: Identifier(
                                         Identifier {
                                          id: "loc",
                                          span: Span {
                                           start: Position {
                                            line: 620,
                                            column: 36,
                                           },
                                           end: Position {
                                            line: 620,
                                            column: 39,
                                           },
                                          },
                                         },
                                        ),
                                        operator: Concatenation,
                                        right: List(
                                         List {
                                          elements: [
                                           String(
                                            String_ {
                                             parts: [
                                              Raw(
                                               PartRaw {
                                                content: "<function body>",
                                                span: Span {
                                                 start: Position {
                                                  line: 620,
                                                  column: 46,
                                                 },
                                                 end: Position {
                                                  line: 620,
                                                  column: 61,
                                                 },
                                                },
                                               },
                                              ),
                                             ],
                                             span: Span {
                                              start: Position {
                                               line: 620,
                                               column: 45,
                                              },
                                              end: Position {
                                               line: 620,
                                               column: 62,
                                              },
                                             },
                                            },
                                           ),
                                          ],
                                          span: Span {
                                           start: Position {
                                            line: 620,
                                            column: 43,
                                           },
                                           end: Position {
                                            line: 620,
                                            column: 64,
                                           },
                                          },
                                         },
                                        ),
                                       },
                                      ),
                                      Identifier(
                                       Identifier {
                                        id: "elemType",
                                        span: Span {
                                         start: Position {
                                          line: 620,
                                          column: 66,
                                         },
                                         end: Position {
                                          line: 620,
                                          column: 74,
                                         },
                                        },
                                       },
                                      ),
                                      FunctionApplication(
                                       FunctionApplication {
                                        function: Identifier(
                                         Identifier {
                                          id: "map",
                                          span: Span {
                                           start: Position {
                                            line: 620,
                                            column: 76,
                                           },
                                           end: Position {
                                            line: 620,
                                            column: 79,
                                           },
                                          },
                                         },
                                        ),
                                        arguments: [
                                         Function(
                                          Function {
                                           head: Simple(
                                            FunctionHeadSimple {
                                             identifier: "fn",
                                            },
                                           ),
                                           body: Map(
                                            Map {
                                             recursive: false,
                                             bindings: [
                                              Inherit(
                                               BindingInherit {
                                                from: Some(
                                                 Identifier(
                                                  Identifier {
                                                   id: "fn",
                                                   span: Span {
                                                    start: Position {
                                                     line: 620,
                                                     column: 96,
                                                    },
                                                    end: Position {
                                                     line: 620,
                                                     column: 98,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                ),
                                                attributes: [
                                                 Raw(
                                                  PartRaw {
                                                   content: "file",
                                                   span: Span {
                                                    start: Position {
                                                     line: 620,
                                                     column: 100,
                                                    },
                                                    end: Position {
                                                     line: 620,
                                                     column: 104,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                ],
                                                span: Span {
                                                 start: Position {
                                                  line: 620,
                                                  column: 86,
                                                 },
                                                 end: Position {
                                                  line: 620,
                                                  column: 105,
                                                 },
                                                },
                                               },
                                              ),
                                              KeyValue(
                                               BindingKeyValue {
                                                from: [
                                                 Raw(
                                                  PartRaw {
                                                   content: "value",
                                                   span: Span {
                                                    start: Position {
                                                     line: 620,
                                                     column: 106,
                                                    },
                                                    end: Position {
                                                     line: 620,
                                                     column: 111,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                ],
                                                to: FunctionApplication(
                                                 FunctionApplication {
                                                  function: PropertyAccess(
                                                   PropertyAccess {
                                                    expression: Identifier(
                                                     Identifier {
                                                      id: "fn",
                                                      span: Span {
                                                       start: Position {
                                                        line: 620,
                                                        column: 114,
                                                       },
                                                       end: Position {
                                                        line: 620,
                                                        column: 116,
                                                       },
                                                      },
                                                     },
                                                    ),
                                                    attribute_path: [
                                                     Raw(
                                                      PartRaw {
                                                       content: "value",
                                                       span: Span {
                                                        start: Position {
                                                         line: 620,
                                                         column: 117,
                                                        },
                                                        end: Position {
                                                         line: 620,
                                                         column: 122,
                                                        },
                                                       },
                                                      },
                                                     ),
                                                    ],
                                                    default: None,
                                                   },
                                                  ),
                                                  arguments: [
                                                   Identifier(
                                                    Identifier {
                                                     id: "fnArgs",
                                                     span: Span {
                                                      start: Position {
                                                       line: 620,
                                                       column: 123,
                                                      },
                                                      end: Position {
                                                       line: 620,
                                                       column: 129,
                                                      },
                                                     },
                                                    },
                                                   ),
                                                  ],
                                                 },
                                                ),
                                               },
                                              ),
                                             ],
                                             span: Span {
                                              start: Position {
                                               line: 620,
                                               column: 85,
                                              },
                                              end: Position {
                                               line: 620,
                                               column: 132,
                                              },
                                             },
                                            },
                                           ),
                                           span: Span {
                                            start: Position {
                                             line: 620,
                                             column: 81,
                                            },
                                            end: Position {
                                             line: 620,
                                             column: 132,
                                            },
                                           },
                                          },
                                         ),
                                         Identifier(
                                          Identifier {
                                           id: "defs",
                                           span: Span {
                                            start: Position {
                                             line: 620,
                                             column: 134,
                                            },
                                            end: Position {
                                             line: 620,
                                             column: 138,
                                            },
                                           },
                                          },
                                         ),
                                        ],
                                       },
                                      ),
                                     ],
                                    },
                                   ),
                                   attribute_path: [
                                    Raw(
                                     PartRaw {
                                      content: "mergedValue",
                                      span: Span {
                                       start: Position {
                                        line: 620,
                                        column: 141,
                                       },
                                       end: Position {
                                        line: 620,
                                        column: 152,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   default: None,
                                  },
                                 ),
                                 span: Span {
                                  start: Position {
                                   line: 620,
                                   column: 9,
                                  },
                                  end: Position {
                                   line: 620,
                                   column: 152,
                                  },
                                 },
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 619,
                                 column: 20,
                                },
                                end: Position {
                                 line: 620,
                                 column: 152,
                                },
                               },
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 619,
                               column: 15,
                              },
                              end: Position {
                               line: 620,
                               column: 152,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "getSubOptions",
                              span: Span {
                               start: Position {
                                line: 621,
                                column: 7,
                               },
                               end: Position {
                                line: 621,
                                column: 20,
                               },
                              },
                             },
                            ),
                           ],
                           to: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "prefix",
                              },
                             ),
                             body: FunctionApplication(
                              FunctionApplication {
                               function: PropertyAccess(
                                PropertyAccess {
                                 expression: Identifier(
                                  Identifier {
                                   id: "elemType",
                                   span: Span {
                                    start: Position {
                                     line: 621,
                                     column: 31,
                                    },
                                    end: Position {
                                     line: 621,
                                     column: 39,
                                    },
                                   },
                                  },
                                 ),
                                 attribute_path: [
                                  Raw(
                                   PartRaw {
                                    content: "getSubOptions",
                                    span: Span {
                                     start: Position {
                                      line: 621,
                                      column: 40,
                                     },
                                     end: Position {
                                      line: 621,
                                      column: 53,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 default: None,
                                },
                               ),
                               arguments: [
                                BinaryOperation(
                                 BinaryOperation {
                                  left: Identifier(
                                   Identifier {
                                    id: "prefix",
                                    span: Span {
                                     start: Position {
                                      line: 621,
                                      column: 55,
                                     },
                                     end: Position {
                                      line: 621,
                                      column: 61,
                                     },
                                    },
                                   },
                                  ),
                                  operator: Concatenation,
                                  right: List(
                                   List {
                                    elements: [
                                     String(
                                      String_ {
                                       parts: [
                                        Raw(
                                         PartRaw {
                                          content: "<function body>",
                                          span: Span {
                                           start: Position {
                                            line: 621,
                                            column: 68,
                                           },
                                           end: Position {
                                            line: 621,
                                            column: 83,
                                           },
                                          },
                                         },
                                        ),
                                       ],
                                       span: Span {
                                        start: Position {
                                         line: 621,
                                         column: 67,
                                        },
                                        end: Position {
                                         line: 621,
                                         column: 84,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    span: Span {
                                     start: Position {
                                      line: 621,
                                      column: 65,
                                     },
                                     end: Position {
                                      line: 621,
                                      column: 86,
                                     },
                                    },
                                   },
                                  ),
                                 },
                                ),
                               ],
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 621,
                               column: 23,
                              },
                              end: Position {
                               line: 621,
                               column: 87,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "getSubModules",
                              span: Span {
                               start: Position {
                                line: 622,
                                column: 7,
                               },
                               end: Position {
                                line: 622,
                                column: 20,
                               },
                              },
                             },
                            ),
                           ],
                           to: PropertyAccess(
                            PropertyAccess {
                             expression: Identifier(
                              Identifier {
                               id: "elemType",
                               span: Span {
                                start: Position {
                                 line: 622,
                                 column: 23,
                                },
                                end: Position {
                                 line: 622,
                                 column: 31,
                                },
                               },
                              },
                             ),
                             attribute_path: [
                              Raw(
                               PartRaw {
                                content: "getSubModules",
                                span: Span {
                                 start: Position {
                                  line: 622,
                                  column: 32,
                                 },
                                 end: Position {
                                  line: 622,
                                  column: 45,
                                 },
                                },
                               },
                              ),
                             ],
                             default: None,
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "substSubModules",
                              span: Span {
                               start: Position {
                                line: 623,
                                column: 7,
                               },
                               end: Position {
                                line: 623,
                                column: 22,
                               },
                              },
                             },
                            ),
                           ],
                           to: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "m",
                              },
                             ),
                             body: FunctionApplication(
                              FunctionApplication {
                               function: Identifier(
                                Identifier {
                                 id: "functionTo",
                                 span: Span {
                                  start: Position {
                                   line: 623,
                                   column: 28,
                                  },
                                  end: Position {
                                   line: 623,
                                   column: 38,
                                  },
                                 },
                                },
                               ),
                               arguments: [
                                FunctionApplication(
                                 FunctionApplication {
                                  function: PropertyAccess(
                                   PropertyAccess {
                                    expression: Identifier(
                                     Identifier {
                                      id: "elemType",
                                      span: Span {
                                       start: Position {
                                        line: 623,
                                        column: 40,
                                       },
                                       end: Position {
                                        line: 623,
                                        column: 48,
                                       },
                                      },
                                     },
                                    ),
                                    attribute_path: [
                                     Raw(
                                      PartRaw {
                                       content: "substSubModules",
                                       span: Span {
                                        start: Position {
                                         line: 623,
                                         column: 49,
                                        },
                                        end: Position {
                                         line: 623,
                                         column: 64,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    default: None,
                                   },
                                  ),
                                  arguments: [
                                   Identifier(
                                    Identifier {
                                     id: "m",
                                     span: Span {
                                      start: Position {
                                       line: 623,
                                       column: 65,
                                      },
                                      end: Position {
                                       line: 623,
                                       column: 66,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                 },
                                ),
                               ],
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 623,
                               column: 25,
                              },
                              end: Position {
                               line: 623,
                               column: 67,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "functor",
                              span: Span {
                               start: Position {
                                line: 624,
                                column: 7,
                               },
                               end: Position {
                                line: 624,
                                column: 14,
                               },
                              },
                             },
                            ),
                           ],
                           to: BinaryOperation(
                            BinaryOperation {
                             left: FunctionApplication(
                              FunctionApplication {
                               function: Identifier(
                                Identifier {
                                 id: "defaultFunctor",
                                 span: Span {
                                  start: Position {
                                   line: 624,
                                   column: 18,
                                  },
                                  end: Position {
                                   line: 624,
                                   column: 32,
                                  },
                                 },
                                },
                               ),
                               arguments: [
                                String(
                                 String_ {
                                  parts: [
                                   Raw(
                                    PartRaw {
                                     content: "functionTo",
                                     span: Span {
                                      start: Position {
                                       line: 624,
                                       column: 34,
                                      },
                                      end: Position {
                                       line: 624,
                                       column: 44,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  span: Span {
                                   start: Position {
                                    line: 624,
                                    column: 33,
                                   },
                                   end: Position {
                                    line: 624,
                                    column: 45,
                                   },
                                  },
                                 },
                                ),
                               ],
                              },
                             ),
                             operator: Update,
                             right: Map(
                              Map {
                               recursive: false,
                               bindings: [
                                KeyValue(
                                 BindingKeyValue {
                                  from: [
                                   Raw(
                                    PartRaw {
                                     content: "wrapped",
                                     span: Span {
                                      start: Position {
                                       line: 624,
                                       column: 52,
                                      },
                                      end: Position {
                                       line: 624,
                                       column: 59,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  to: Identifier(
                                   Identifier {
                                    id: "elemType",
                                    span: Span {
                                     start: Position {
                                      line: 624,
                                      column: 62,
                                     },
                                     end: Position {
                                      line: 624,
                                      column: 70,
                                     },
                                    },
                                   },
                                  ),
                                 },
                                ),
                               ],
                               span: Span {
                                start: Position {
                                 line: 624,
                                 column: 50,
                                },
                                end: Position {
                                 line: 624,
                                 column: 73,
                                },
                               },
                              },
                             ),
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "nestedTypes",
                              span: Span {
                               start: Position {
                                line: 625,
                                column: 7,
                               },
                               end: Position {
                                line: 625,
                                column: 18,
                               },
                              },
                             },
                            ),
                            Raw(
                             PartRaw {
                              content: "elemType",
                              span: Span {
                               start: Position {
                                line: 625,
                                column: 19,
                               },
                               end: Position {
                                line: 625,
                                column: 27,
                               },
                              },
                             },
                            ),
                           ],
                           to: Identifier(
                            Identifier {
                             id: "elemType",
                             span: Span {
                              start: Position {
                               line: 625,
                               column: 30,
                              },
                              end: Position {
                               line: 625,
                               column: 38,
                              },
                             },
                            },
                           ),
                          },
                         ),
                        ],
                        span: Span {
                         start: Position {
                          line: 614,
                          column: 41,
                         },
                         end: Position {
                          line: 626,
                          column: 6,
                         },
                        },
                       },
                      ),
                     ],
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 614,
                     column: 18,
                    },
                    end: Position {
                     line: 626,
                     column: 6,
                    },
                   },
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "submodule",
                    span: Span {
                     start: Position {
                      line: 629,
                      column: 5,
                     },
                     end: Position {
                      line: 629,
                      column: 14,
                     },
                    },
                   },
                  ),
                 ],
                 to: Function(
                  Function {
                   head: Simple(
                    FunctionHeadSimple {
                     identifier: "modules",
                    },
                   ),
                   body: FunctionApplication(
                    FunctionApplication {
                     function: Identifier(
                      Identifier {
                       id: "submoduleWith",
                       span: Span {
                        start: Position {
                         line: 629,
                         column: 26,
                        },
                        end: Position {
                         line: 629,
                         column: 39,
                        },
                       },
                      },
                     ),
                     arguments: [
                      Map(
                       Map {
                        recursive: false,
                        bindings: [
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "shorthandOnlyDefinesConfig",
                              span: Span {
                               start: Position {
                                line: 630,
                                column: 7,
                               },
                               end: Position {
                                line: 630,
                                column: 33,
                               },
                              },
                             },
                            ),
                           ],
                           to: Identifier(
                            Identifier {
                             id: "true",
                             span: Span {
                              start: Position {
                               line: 630,
                               column: 36,
                              },
                              end: Position {
                               line: 630,
                               column: 40,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "modules",
                              span: Span {
                               start: Position {
                                line: 631,
                                column: 7,
                               },
                               end: Position {
                                line: 631,
                                column: 14,
                               },
                              },
                             },
                            ),
                           ],
                           to: FunctionApplication(
                            FunctionApplication {
                             function: Identifier(
                              Identifier {
                               id: "toList",
                               span: Span {
                                start: Position {
                                 line: 631,
                                 column: 17,
                                },
                                end: Position {
                                 line: 631,
                                 column: 23,
                                },
                               },
                              },
                             ),
                             arguments: [
                              Identifier(
                               Identifier {
                                id: "modules",
                                span: Span {
                                 start: Position {
                                  line: 631,
                                  column: 24,
                                 },
                                 end: Position {
                                  line: 631,
                                  column: 31,
                                 },
                                },
                               },
                              ),
                             ],
                            },
                           ),
                          },
                         ),
                        ],
                        span: Span {
                         start: Position {
                          line: 629,
                          column: 40,
                         },
                         end: Position {
                          line: 632,
                          column: 6,
                         },
                        },
                       },
                      ),
                     ],
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 629,
                     column: 17,
                    },
                    end: Position {
                     line: 632,
                     column: 6,
                    },
                   },
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "deferredModule",
                    span: Span {
                     start: Position {
                      line: 635,
                      column: 5,
                     },
                     end: Position {
                      line: 635,
                      column: 19,
                     },
                    },
                   },
                  ),
                 ],
                 to: FunctionApplication(
                  FunctionApplication {
                   function: Identifier(
                    Identifier {
                     id: "deferredModuleWith",
                     span: Span {
                      start: Position {
                       line: 635,
                       column: 22,
                      },
                      end: Position {
                       line: 635,
                       column: 40,
                      },
                     },
                    },
                   ),
                   arguments: [
                    Map(
                     Map {
                      recursive: false,
                      bindings: [],
                      span: Span {
                       start: Position {
                        line: 635,
                        column: 41,
                       },
                       end: Position {
                        line: 635,
                        column: 44,
                       },
                      },
                     },
                    ),
                   ],
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "deferredModuleWith",
                    span: Span {
                     start: Position {
                      line: 640,
                      column: 5,
                     },
                     end: Position {
                      line: 640,
                      column: 23,
                     },
                    },
                   },
                  ),
                 ],
                 to: Function(
                  Function {
                   head: Destructured(
                    FunctionHeadDestructured {
                     ellipsis: false,
                     identifier: LeftAt(
                      "attrs",
                     ),
                     arguments: [
                      FunctionHeadDestructuredArgument {
                       identifier: "staticModules",
                       default: Some(
                        List(
                         List {
                          elements: [],
                          span: Span {
                           start: Position {
                            line: 640,
                            column: 50,
                           },
                           end: Position {
                            line: 640,
                            column: 52,
                           },
                          },
                         },
                        ),
                       ),
                      },
                     ],
                    },
                   ),
                   body: FunctionApplication(
                    FunctionApplication {
                     function: Identifier(
                      Identifier {
                       id: "mkOptionType",
                       span: Span {
                        start: Position {
                         line: 640,
                         column: 56,
                        },
                        end: Position {
                         line: 640,
                         column: 68,
                        },
                       },
                      },
                     ),
                     arguments: [
                      Map(
                       Map {
                        recursive: false,
                        bindings: [
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "name",
                              span: Span {
                               start: Position {
                                line: 641,
                                column: 7,
                               },
                               end: Position {
                                line: 641,
                                column: 11,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "deferredModule",
                                span: Span {
                                 start: Position {
                                  line: 641,
                                  column: 15,
                                 },
                                 end: Position {
                                  line: 641,
                                  column: 29,
                                 },
                                },
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 641,
                               column: 14,
                              },
                              end: Position {
                               line: 641,
                               column: 30,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "description",
                              span: Span {
                               start: Position {
                                line: 642,
                                column: 7,
                               },
                               end: Position {
                                line: 642,
                                column: 18,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "module",
                                span: Span {
                                 start: Position {
                                  line: 642,
                                  column: 22,
                                 },
                                 end: Position {
                                  line: 642,
                                  column: 28,
                                 },
                                },
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 642,
                               column: 21,
                              },
                              end: Position {
                               line: 642,
                               column: 29,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "descriptionClass",
                              span: Span {
                               start: Position {
                                line: 643,
                                column: 7,
                               },
                               end: Position {
                                line: 643,
                                column: 23,
                               },
                              },
                             },
                            ),
                           ],
                           to: String(
                            String_ {
                             parts: [
                              Raw(
                               PartRaw {
                                content: "noun",
                                span: Span {
                                 start: Position {
                                  line: 643,
                                  column: 27,
                                 },
                                 end: Position {
                                  line: 643,
                                  column: 31,
                                 },
                                },
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 643,
                               column: 26,
                              },
                              end: Position {
                               line: 643,
                               column: 32,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "check",
                              span: Span {
                               start: Position {
                                line: 644,
                                column: 7,
                               },
                               end: Position {
                                line: 644,
                                column: 12,
                               },
                              },
                             },
                            ),
                           ],
                           to: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "x",
                              },
                             ),
                             body: BinaryOperation(
                              BinaryOperation {
                               left: BinaryOperation(
                                BinaryOperation {
                                 left: FunctionApplication(
                                  FunctionApplication {
                                   function: Identifier(
                                    Identifier {
                                     id: "isAttrs",
                                     span: Span {
                                      start: Position {
                                       line: 644,
                                       column: 18,
                                      },
                                      end: Position {
                                       line: 644,
                                       column: 25,
                                      },
                                     },
                                    },
                                   ),
                                   arguments: [
                                    Identifier(
                                     Identifier {
                                      id: "x",
                                      span: Span {
                                       start: Position {
                                        line: 644,
                                        column: 26,
                                       },
                                       end: Position {
                                        line: 644,
                                        column: 27,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                  },
                                 ),
                                 operator: LogicalOr,
                                 right: FunctionApplication(
                                  FunctionApplication {
                                   function: Identifier(
                                    Identifier {
                                     id: "isFunction",
                                     span: Span {
                                      start: Position {
                                       line: 644,
                                       column: 31,
                                      },
                                      end: Position {
                                       line: 644,
                                       column: 41,
                                      },
                                     },
                                    },
                                   ),
                                   arguments: [
                                    Identifier(
                                     Identifier {
                                      id: "x",
                                      span: Span {
                                       start: Position {
                                        line: 644,
                                        column: 42,
                                       },
                                       end: Position {
                                        line: 644,
                                        column: 43,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                  },
                                 ),
                                },
                               ),
                               operator: LogicalOr,
                               right: FunctionApplication(
                                FunctionApplication {
                                 function: PropertyAccess(
                                  PropertyAccess {
                                   expression: Identifier(
                                    Identifier {
                                     id: "path",
                                     span: Span {
                                      start: Position {
                                       line: 644,
                                       column: 47,
                                      },
                                      end: Position {
                                       line: 644,
                                       column: 51,
                                      },
                                     },
                                    },
                                   ),
                                   attribute_path: [
                                    Raw(
                                     PartRaw {
                                      content: "check",
                                      span: Span {
                                       start: Position {
                                        line: 644,
                                        column: 52,
                                       },
                                       end: Position {
                                        line: 644,
                                        column: 57,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   default: None,
                                  },
                                 ),
                                 arguments: [
                                  Identifier(
                                   Identifier {
                                    id: "x",
                                    span: Span {
                                     start: Position {
                                      line: 644,
                                      column: 58,
                                     },
                                     end: Position {
                                      line: 644,
                                      column: 59,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                },
                               ),
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 644,
                               column: 15,
                              },
                              end: Position {
                               line: 644,
                               column: 59,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "merge",
                              span: Span {
                               start: Position {
                                line: 645,
                                column: 7,
                               },
                               end: Position {
                                line: 645,
                                column: 12,
                               },
                              },
                             },
                            ),
                           ],
                           to: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "loc",
                              },
                             ),
                             body: Function(
                              Function {
                               head: Simple(
                                FunctionHeadSimple {
                                 identifier: "defs",
                                },
                               ),
                               body: Map(
                                Map {
                                 recursive: false,
                                 bindings: [
                                  KeyValue(
                                   BindingKeyValue {
                                    from: [
                                     Raw(
                                      PartRaw {
                                       content: "imports",
                                       span: Span {
                                        start: Position {
                                         line: 646,
                                         column: 9,
                                        },
                                        end: Position {
                                         line: 646,
                                         column: 16,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    to: BinaryOperation(
                                     BinaryOperation {
                                      left: Identifier(
                                       Identifier {
                                        id: "staticModules",
                                        span: Span {
                                         start: Position {
                                          line: 646,
                                          column: 19,
                                         },
                                         end: Position {
                                          line: 646,
                                          column: 32,
                                         },
                                        },
                                       },
                                      ),
                                      operator: Concatenation,
                                      right: FunctionApplication(
                                       FunctionApplication {
                                        function: Identifier(
                                         Identifier {
                                          id: "map",
                                          span: Span {
                                           start: Position {
                                            line: 646,
                                            column: 36,
                                           },
                                           end: Position {
                                            line: 646,
                                            column: 39,
                                           },
                                          },
                                         },
                                        ),
                                        arguments: [
                                         Function(
                                          Function {
                                           head: Simple(
                                            FunctionHeadSimple {
                                             identifier: "def",
                                            },
                                           ),
                                           body: FunctionApplication(
                                            FunctionApplication {
                                             function: PropertyAccess(
                                              PropertyAccess {
                                               expression: Identifier(
                                                Identifier {
                                                 id: "lib",
                                                 span: Span {
                                                  start: Position {
                                                   line: 646,
                                                   column: 46,
                                                  },
                                                  end: Position {
                                                   line: 646,
                                                   column: 49,
                                                  },
                                                 },
                                                },
                                               ),
                                               attribute_path: [
                                                Raw(
                                                 PartRaw {
                                                  content: "setDefaultModuleLocation",
                                                  span: Span {
                                                   start: Position {
                                                    line: 646,
                                                    column: 50,
                                                   },
                                                   end: Position {
                                                    line: 646,
                                                    column: 74,
                                                   },
                                                  },
                                                 },
                                                ),
                                               ],
                                               default: None,
                                              },
                                             ),
                                             arguments: [
                                              String(
                                               String_ {
                                                parts: [
                                                 Interpolation(
                                                  PartInterpolation {
                                                   expression: PropertyAccess(
                                                    PropertyAccess {
                                                     expression: Identifier(
                                                      Identifier {
                                                       id: "def",
                                                       span: Span {
                                                        start: Position {
                                                         line: 646,
                                                         column: 78,
                                                        },
                                                        end: Position {
                                                         line: 646,
                                                         column: 81,
                                                        },
                                                       },
                                                      },
                                                     ),
                                                     attribute_path: [
                                                      Raw(
                                                       PartRaw {
                                                        content: "file",
                                                        span: Span {
                                                         start: Position {
                                                          line: 646,
                                                          column: 82,
                                                         },
                                                         end: Position {
                                                          line: 646,
                                                          column: 86,
                                                         },
                                                        },
                                                       },
                                                      ),
                                                     ],
                                                     default: None,
                                                    },
                                                   ),
                                                  },
                                                 ),
                                                 Raw(
                                                  PartRaw {
                                                   content: ", via option ",
                                                   span: Span {
                                                    start: Position {
                                                     line: 646,
                                                     column: 76,
                                                    },
                                                    end: Position {
                                                     line: 646,
                                                     column: 100,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                 Interpolation(
                                                  PartInterpolation {
                                                   expression: FunctionApplication(
                                                    FunctionApplication {
                                                     function: Identifier(
                                                      Identifier {
                                                       id: "showOption",
                                                       span: Span {
                                                        start: Position {
                                                         line: 646,
                                                         column: 102,
                                                        },
                                                        end: Position {
                                                         line: 646,
                                                         column: 112,
                                                        },
                                                       },
                                                      },
                                                     ),
                                                     arguments: [
                                                      Identifier(
                                                       Identifier {
                                                        id: "loc",
                                                        span: Span {
                                                         start: Position {
                                                          line: 646,
                                                          column: 113,
                                                         },
                                                         end: Position {
                                                          line: 646,
                                                          column: 116,
                                                         },
                                                        },
                                                       },
                                                      ),
                                                     ],
                                                    },
                                                   ),
                                                  },
                                                 ),
                                                ],
                                                span: Span {
                                                 start: Position {
                                                  line: 646,
                                                  column: 75,
                                                 },
                                                 end: Position {
                                                  line: 646,
                                                  column: 118,
                                                 },
                                                },
                                               },
                                              ),
                                              PropertyAccess(
                                               PropertyAccess {
                                                expression: Identifier(
                                                 Identifier {
                                                  id: "def",
                                                  span: Span {
                                                   start: Position {
                                                    line: 646,
                                                    column: 119,
                                                   },
                                                   end: Position {
                                                    line: 646,
                                                    column: 122,
                                                   },
                                                  },
                                                 },
                                                ),
                                                attribute_path: [
                                                 Raw(
                                                  PartRaw {
                                                   content: "value",
                                                   span: Span {
                                                    start: Position {
                                                     line: 646,
                                                     column: 123,
                                                    },
                                                    end: Position {
                                                     line: 646,
                                                     column: 128,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                ],
                                                default: None,
                                               },
                                              ),
                                             ],
                                            },
                                           ),
                                           span: Span {
                                            start: Position {
                                             line: 646,
                                             column: 41,
                                            },
                                            end: Position {
                                             line: 646,
                                             column: 128,
                                            },
                                           },
                                          },
                                         ),
                                         Identifier(
                                          Identifier {
                                           id: "defs",
                                           span: Span {
                                            start: Position {
                                             line: 646,
                                             column: 130,
                                            },
                                            end: Position {
                                             line: 646,
                                             column: 134,
                                            },
                                           },
                                          },
                                         ),
                                        ],
                                       },
                                      ),
                                     },
                                    ),
                                   },
                                  ),
                                 ],
                                 span: Span {
                                  start: Position {
                                   line: 645,
                                   column: 26,
                                  },
                                  end: Position {
                                   line: 647,
                                   column: 8,
                                  },
                                 },
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 645,
                                 column: 20,
                                },
                                end: Position {
                                 line: 647,
                                 column: 8,
                                },
                               },
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 645,
                               column: 15,
                              },
                              end: Position {
                               line: 647,
                               column: 8,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         Inherit(
                          BindingInherit {
                           from: Some(
                            FunctionApplication(
                             FunctionApplication {
                              function: Identifier(
                               Identifier {
                                id: "submoduleWith",
                                span: Span {
                                 start: Position {
                                  line: 648,
                                  column: 16,
                                 },
                                 end: Position {
                                  line: 648,
                                  column: 29,
                                 },
                                },
                               },
                              ),
                              arguments: [
                               Map(
                                Map {
                                 recursive: false,
                                 bindings: [
                                  KeyValue(
                                   BindingKeyValue {
                                    from: [
                                     Raw(
                                      PartRaw {
                                       content: "modules",
                                       span: Span {
                                        start: Position {
                                         line: 648,
                                         column: 32,
                                        },
                                        end: Position {
                                         line: 648,
                                         column: 39,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    to: Identifier(
                                     Identifier {
                                      id: "staticModules",
                                      span: Span {
                                       start: Position {
                                        line: 648,
                                        column: 42,
                                       },
                                       end: Position {
                                        line: 648,
                                        column: 55,
                                       },
                                      },
                                     },
                                    ),
                                   },
                                  ),
                                 ],
                                 span: Span {
                                  start: Position {
                                   line: 648,
                                   column: 30,
                                  },
                                  end: Position {
                                   line: 648,
                                   column: 58,
                                  },
                                 },
                                },
                               ),
                              ],
                             },
                            ),
                           ),
                           attributes: [
                            Raw(
                             PartRaw {
                              content: "getSubOptions",
                              span: Span {
                               start: Position {
                                line: 649,
                                column: 9,
                               },
                               end: Position {
                                line: 649,
                                column: 22,
                               },
                              },
                             },
                            ),
                            Raw(
                             PartRaw {
                              content: "getSubModules",
                              span: Span {
                               start: Position {
                                line: 650,
                                column: 9,
                               },
                               end: Position {
                                line: 650,
                                column: 22,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 640,
                             column: 70,
                            },
                            end: Position {
                             line: 650,
                             column: 23,
                            },
                           },
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "substSubModules",
                              span: Span {
                               start: Position {
                                line: 651,
                                column: 7,
                               },
                               end: Position {
                                line: 651,
                                column: 22,
                               },
                              },
                             },
                            ),
                           ],
                           to: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "m",
                              },
                             ),
                             body: FunctionApplication(
                              FunctionApplication {
                               function: Identifier(
                                Identifier {
                                 id: "deferredModuleWith",
                                 span: Span {
                                  start: Position {
                                   line: 651,
                                   column: 28,
                                  },
                                  end: Position {
                                   line: 651,
                                   column: 46,
                                  },
                                 },
                                },
                               ),
                               arguments: [
                                BinaryOperation(
                                 BinaryOperation {
                                  left: Identifier(
                                   Identifier {
                                    id: "attrs",
                                    span: Span {
                                     start: Position {
                                      line: 651,
                                      column: 48,
                                     },
                                     end: Position {
                                      line: 651,
                                      column: 53,
                                     },
                                    },
                                   },
                                  ),
                                  operator: Update,
                                  right: Map(
                                   Map {
                                    recursive: false,
                                    bindings: [
                                     KeyValue(
                                      BindingKeyValue {
                                       from: [
                                        Raw(
                                         PartRaw {
                                          content: "staticModules",
                                          span: Span {
                                           start: Position {
                                            line: 652,
                                            column: 9,
                                           },
                                           end: Position {
                                            line: 652,
                                            column: 22,
                                           },
                                          },
                                         },
                                        ),
                                       ],
                                       to: Identifier(
                                        Identifier {
                                         id: "m",
                                         span: Span {
                                          start: Position {
                                           line: 652,
                                           column: 25,
                                          },
                                          end: Position {
                                           line: 652,
                                           column: 26,
                                          },
                                         },
                                        },
                                       ),
                                      },
                                     ),
                                    ],
                                    span: Span {
                                     start: Position {
                                      line: 651,
                                      column: 57,
                                     },
                                     end: Position {
                                      line: 653,
                                      column: 8,
                                     },
                                    },
                                   },
                                  ),
                                 },
                                ),
                               ],
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 651,
                               column: 25,
                              },
                              end: Position {
                               line: 653,
                               column: 9,
                              },
                             },
                            },
                           ),
                          },
                         ),
                         KeyValue(
                          BindingKeyValue {
                           from: [
                            Raw(
                             PartRaw {
                              content: "functor",
                              span: Span {
                               start: Position {
                                line: 654,
                                column: 7,
                               },
                               end: Position {
                                line: 654,
                                column: 14,
                               },
                              },
                             },
                            ),
                           ],
                           to: BinaryOperation(
                            BinaryOperation {
                             left: FunctionApplication(
                              FunctionApplication {
                               function: Identifier(
                                Identifier {
                                 id: "defaultFunctor",
                                 span: Span {
                                  start: Position {
                                   line: 654,
                                   column: 17,
                                  },
                                  end: Position {
                                   line: 654,
                                   column: 31,
                                  },
                                 },
                                },
                               ),
                               arguments: [
                                String(
                                 String_ {
                                  parts: [
                                   Raw(
                                    PartRaw {
                                     content: "deferredModuleWith",
                                     span: Span {
                                      start: Position {
                                       line: 654,
                                       column: 33,
                                      },
                                      end: Position {
                                       line: 654,
                                       column: 51,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  span: Span {
                                   start: Position {
                                    line: 654,
                                    column: 32,
                                   },
                                   end: Position {
                                    line: 654,
                                    column: 52,
                                   },
                                  },
                                 },
                                ),
                               ],
                              },
                             ),
                             operator: Update,
                             right: Map(
                              Map {
                               recursive: false,
                               bindings: [
                                KeyValue(
                                 BindingKeyValue {
                                  from: [
                                   Raw(
                                    PartRaw {
                                     content: "type",
                                     span: Span {
                                      start: Position {
                                       line: 655,
                                       column: 9,
                                      },
                                      end: Position {
                                       line: 655,
                                       column: 13,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  to: PropertyAccess(
                                   PropertyAccess {
                                    expression: Identifier(
                                     Identifier {
                                      id: "types",
                                      span: Span {
                                       start: Position {
                                        line: 655,
                                        column: 16,
                                       },
                                       end: Position {
                                        line: 655,
                                        column: 21,
                                       },
                                      },
                                     },
                                    ),
                                    attribute_path: [
                                     Raw(
                                      PartRaw {
                                       content: "deferredModuleWith",
                                       span: Span {
                                        start: Position {
                                         line: 655,
                                         column: 22,
                                        },
                                        end: Position {
                                         line: 655,
                                         column: 40,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    default: None,
                                   },
                                  ),
                                 },
                                ),
                                KeyValue(
                                 BindingKeyValue {
                                  from: [
                                   Raw(
                                    PartRaw {
                                     content: "payload",
                                     span: Span {
                                      start: Position {
                                       line: 656,
                                       column: 9,
                                      },
                                      end: Position {
                                       line: 656,
                                       column: 16,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  to: Map(
                                   Map {
                                    recursive: false,
                                    bindings: [
                                     Inherit(
                                      BindingInherit {
                                       from: None,
                                       attributes: [
                                        Raw(
                                         PartRaw {
                                          content: "staticModules",
                                          span: Span {
                                           start: Position {
                                            line: 657,
                                            column: 19,
                                           },
                                           end: Position {
                                            line: 657,
                                            column: 32,
                                           },
                                          },
                                         },
                                        ),
                                       ],
                                       span: Span {
                                        start: Position {
                                         line: 656,
                                         column: 20,
                                        },
                                        end: Position {
                                         line: 657,
                                         column: 33,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    span: Span {
                                     start: Position {
                                      line: 656,
                                      column: 19,
                                     },
                                     end: Position {
                                      line: 658,
                                      column: 10,
                                     },
                                    },
                                   },
                                  ),
                                 },
                                ),
                                KeyValue(
                                 BindingKeyValue {
                                  from: [
                                   Raw(
                                    PartRaw {
                                     content: "binOp",
                                     span: Span {
                                      start: Position {
                                       line: 659,
                                       column: 9,
                                      },
                                      end: Position {
                                       line: 659,
                                       column: 14,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  to: Function(
                                   Function {
                                    head: Simple(
                                     FunctionHeadSimple {
                                      identifier: "lhs",
                                     },
                                    ),
                                    body: Function(
                                     Function {
                                      head: Simple(
                                       FunctionHeadSimple {
                                        identifier: "rhs",
                                       },
                                      ),
                                      body: Map(
                                       Map {
                                        recursive: false,
                                        bindings: [
                                         KeyValue(
                                          BindingKeyValue {
                                           from: [
                                            Raw(
                                             PartRaw {
                                              content: "staticModules",
                                              span: Span {
                                               start: Position {
                                                line: 660,
                                                column: 11,
                                               },
                                               end: Position {
                                                line: 660,
                                                column: 24,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                           to: BinaryOperation(
                                            BinaryOperation {
                                             left: PropertyAccess(
                                              PropertyAccess {
                                               expression: Identifier(
                                                Identifier {
                                                 id: "lhs",
                                                 span: Span {
                                                  start: Position {
                                                   line: 660,
                                                   column: 27,
                                                  },
                                                  end: Position {
                                                   line: 660,
                                                   column: 30,
                                                  },
                                                 },
                                                },
                                               ),
                                               attribute_path: [
                                                Raw(
                                                 PartRaw {
                                                  content: "staticModules",
                                                  span: Span {
                                                   start: Position {
                                                    line: 660,
                                                    column: 31,
                                                   },
                                                   end: Position {
                                                    line: 660,
                                                    column: 44,
                                                   },
                                                  },
                                                 },
                                                ),
                                               ],
                                               default: None,
                                              },
                                             ),
                                             operator: Concatenation,
                                             right: PropertyAccess(
                                              PropertyAccess {
                                               expression: Identifier(
                                                Identifier {
                                                 id: "rhs",
                                                 span: Span {
                                                  start: Position {
                                                   line: 660,
                                                   column: 48,
                                                  },
                                                  end: Position {
                                                   line: 660,
                                                   column: 51,
                                                  },
                                                 },
                                                },
                                               ),
                                               attribute_path: [
                                                Raw(
                                                 PartRaw {
                                                  content: "staticModules",
                                                  span: Span {
                                                   start: Position {
                                                    line: 660,
                                                    column: 52,
                                                   },
                                                   end: Position {
                                                    line: 660,
                                                    column: 65,
                                                   },
                                                  },
                                                 },
                                                ),
                                               ],
                                               default: None,
                                              },
                                             ),
                                            },
                                           ),
                                          },
                                         ),
                                        ],
                                        span: Span {
                                         start: Position {
                                          line: 659,
                                          column: 27,
                                         },
                                         end: Position {
                                          line: 661,
                                          column: 10,
                                         },
                                        },
                                       },
                                      ),
                                      span: Span {
                                       start: Position {
                                        line: 659,
                                        column: 22,
                                       },
                                       end: Position {
                                        line: 661,
                                        column: 10,
                                       },
                                      },
                                     },
                                    ),
                                    span: Span {
                                     start: Position {
                                      line: 659,
                                      column: 17,
                                     },
                                     end: Position {
                                      line: 661,
                                      column: 10,
                                     },
                                    },
                                   },
                                  ),
                                 },
                                ),
                               ],
                               span: Span {
                                start: Position {
                                 line: 654,
                                 column: 56,
                                },
                                end: Position {
                                 line: 662,
                                 column: 8,
                                },
                               },
                              },
                             ),
                            },
                           ),
                          },
                         ),
                        ],
                        span: Span {
                         start: Position {
                          line: 640,
                          column: 69,
                         },
                         end: Position {
                          line: 663,
                          column: 6,
                         },
                        },
                       },
                      ),
                     ],
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 640,
                     column: 26,
                    },
                    end: Position {
                     line: 663,
                     column: 6,
                    },
                   },
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "optionType",
                    span: Span {
                     start: Position {
                      line: 666,
                      column: 5,
                     },
                     end: Position {
                      line: 666,
                      column: 15,
                     },
                    },
                   },
                  ),
                 ],
                 to: FunctionApplication(
                  FunctionApplication {
                   function: Identifier(
                    Identifier {
                     id: "mkOptionType",
                     span: Span {
                      start: Position {
                       line: 666,
                       column: 18,
                      },
                      end: Position {
                       line: 666,
                       column: 30,
                      },
                     },
                    },
                   ),
                   arguments: [
                    Map(
                     Map {
                      recursive: false,
                      bindings: [
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "name",
                            span: Span {
                             start: Position {
                              line: 667,
                              column: 7,
                             },
                             end: Position {
                              line: 667,
                              column: 11,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "optionType",
                              span: Span {
                               start: Position {
                                line: 667,
                                column: 15,
                               },
                               end: Position {
                                line: 667,
                                column: 25,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 667,
                             column: 14,
                            },
                            end: Position {
                             line: 667,
                             column: 26,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "description",
                            span: Span {
                             start: Position {
                              line: 668,
                              column: 7,
                             },
                             end: Position {
                              line: 668,
                              column: 18,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "optionType",
                              span: Span {
                               start: Position {
                                line: 668,
                                column: 22,
                               },
                               end: Position {
                                line: 668,
                                column: 32,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 668,
                             column: 21,
                            },
                            end: Position {
                             line: 668,
                             column: 33,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "descriptionClass",
                            span: Span {
                             start: Position {
                              line: 669,
                              column: 7,
                             },
                             end: Position {
                              line: 669,
                              column: 23,
                             },
                            },
                           },
                          ),
                         ],
                         to: String(
                          String_ {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "noun",
                              span: Span {
                               start: Position {
                                line: 669,
                                column: 27,
                               },
                               end: Position {
                                line: 669,
                                column: 31,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 669,
                             column: 26,
                            },
                            end: Position {
                             line: 669,
                             column: 32,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "check",
                            span: Span {
                             start: Position {
                              line: 670,
                              column: 7,
                             },
                             end: Position {
                              line: 670,
                              column: 12,
                             },
                            },
                           },
                          ),
                         ],
                         to: Function(
                          Function {
                           head: Simple(
                            FunctionHeadSimple {
                             identifier: "value",
                            },
                           ),
                           body: BinaryOperation(
                            BinaryOperation {
                             left: PropertyAccess(
                              PropertyAccess {
                               expression: Identifier(
                                Identifier {
                                 id: "value",
                                 span: Span {
                                  start: Position {
                                   line: 670,
                                   column: 22,
                                  },
                                  end: Position {
                                   line: 670,
                                   column: 27,
                                  },
                                 },
                                },
                               ),
                               attribute_path: [
                                Raw(
                                 PartRaw {
                                  content: "_type",
                                  span: Span {
                                   start: Position {
                                    line: 670,
                                    column: 28,
                                   },
                                   end: Position {
                                    line: 670,
                                    column: 33,
                                   },
                                  },
                                 },
                                ),
                               ],
                               default: Some(
                                Identifier(
                                 Identifier {
                                  id: "null",
                                  span: Span {
                                   start: Position {
                                    line: 670,
                                    column: 37,
                                   },
                                   end: Position {
                                    line: 670,
                                    column: 41,
                                   },
                                  },
                                 },
                                ),
                               ),
                              },
                             ),
                             operator: EqualTo,
                             right: String(
                              String_ {
                               parts: [
                                Raw(
                                 PartRaw {
                                  content: "option-type",
                                  span: Span {
                                   start: Position {
                                    line: 670,
                                    column: 46,
                                   },
                                   end: Position {
                                    line: 670,
                                    column: 57,
                                   },
                                  },
                                 },
                                ),
                               ],
                               span: Span {
                                start: Position {
                                 line: 670,
                                 column: 45,
                                },
                                end: Position {
                                 line: 670,
                                 column: 58,
                                },
                               },
                              },
                             ),
                            },
                           ),
                           span: Span {
                            start: Position {
                             line: 670,
                             column: 15,
                            },
                            end: Position {
                             line: 670,
                             column: 58,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "merge",
                            span: Span {
                             start: Position {
                              line: 671,
                              column: 7,
                             },
                             end: Position {
                              line: 671,
                              column: 12,
                             },
                            },
                           },
                          ),
                         ],
                         to: Function(
                          Function {
                           head: Simple(
                            FunctionHeadSimple {
                             identifier: "loc",
                            },
                           ),
                           body: Function(
                            Function {
                             head: Simple(
                              FunctionHeadSimple {
                               identifier: "defs",
                              },
                             ),
                             body: IfThenElse(
                              IfThenElse {
                               predicate: BinaryOperation(
                                BinaryOperation {
                                 left: FunctionApplication(
                                  FunctionApplication {
                                   function: Identifier(
                                    Identifier {
                                     id: "length",
                                     span: Span {
                                      start: Position {
                                       line: 672,
                                       column: 12,
                                      },
                                      end: Position {
                                       line: 672,
                                       column: 18,
                                      },
                                     },
                                    },
                                   ),
                                   arguments: [
                                    Identifier(
                                     Identifier {
                                      id: "defs",
                                      span: Span {
                                       start: Position {
                                        line: 672,
                                        column: 19,
                                       },
                                       end: Position {
                                        line: 672,
                                        column: 23,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                  },
                                 ),
                                 operator: EqualTo,
                                 right: Integer(
                                  Integer {
                                   value: "1",
                                   span: Span {
                                    start: Position {
                                     line: 672,
                                     column: 27,
                                    },
                                    end: Position {
                                     line: 672,
                                     column: 28,
                                    },
                                   },
                                  },
                                 ),
                                },
                               ),
                               then: PropertyAccess(
                                PropertyAccess {
                                 expression: FunctionApplication(
                                  FunctionApplication {
                                   function: Identifier(
                                    Identifier {
                                     id: "head",
                                     span: Span {
                                      start: Position {
                                       line: 673,
                                       column: 15,
                                      },
                                      end: Position {
                                       line: 673,
                                       column: 19,
                                      },
                                     },
                                    },
                                   ),
                                   arguments: [
                                    Identifier(
                                     Identifier {
                                      id: "defs",
                                      span: Span {
                                       start: Position {
                                        line: 673,
                                        column: 20,
                                       },
                                       end: Position {
                                        line: 673,
                                        column: 24,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                  },
                                 ),
                                 attribute_path: [
                                  Raw(
                                   PartRaw {
                                    content: "value",
                                    span: Span {
                                     start: Position {
                                      line: 673,
                                      column: 26,
                                     },
                                     end: Position {
                                      line: 673,
                                      column: 31,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 default: None,
                                },
                               ),
                               else_: LetIn(
                                LetIn {
                                 bindings: [
                                  KeyValue(
                                   BindingKeyValue {
                                    from: [
                                     Raw(
                                      PartRaw {
                                       content: "optionModules",
                                       span: Span {
                                        start: Position {
                                         line: 677,
                                         column: 11,
                                        },
                                        end: Position {
                                         line: 677,
                                         column: 24,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    to: FunctionApplication(
                                     FunctionApplication {
                                      function: Identifier(
                                       Identifier {
                                        id: "map",
                                        span: Span {
                                         start: Position {
                                          line: 677,
                                          column: 27,
                                         },
                                         end: Position {
                                          line: 677,
                                          column: 30,
                                         },
                                        },
                                       },
                                      ),
                                      arguments: [
                                       Function(
                                        Function {
                                         head: Destructured(
                                          FunctionHeadDestructured {
                                           ellipsis: false,
                                           identifier: None,
                                           arguments: [
                                            FunctionHeadDestructuredArgument {
                                             identifier: "value",
                                             default: None,
                                            },
                                            FunctionHeadDestructuredArgument {
                                             identifier: "file",
                                             default: None,
                                            },
                                           ],
                                          },
                                         ),
                                         body: Map(
                                          Map {
                                           recursive: false,
                                           bindings: [
                                            KeyValue(
                                             BindingKeyValue {
                                              from: [
                                               Raw(
                                                PartRaw {
                                                 content: "_file",
                                                 span: Span {
                                                  start: Position {
                                                   line: 679,
                                                   column: 15,
                                                  },
                                                  end: Position {
                                                   line: 679,
                                                   column: 20,
                                                  },
                                                 },
                                                },
                                               ),
                                              ],
                                              to: Identifier(
                                               Identifier {
                                                id: "file",
                                                span: Span {
                                                 start: Position {
                                                  line: 679,
                                                  column: 23,
                                                 },
                                                 end: Position {
                                                  line: 679,
                                                  column: 27,
                                                 },
                                                },
                                               },
                                              ),
                                             },
                                            ),
                                            KeyValue(
                                             BindingKeyValue {
                                              from: [
                                               Raw(
                                                PartRaw {
                                                 content: "options",
                                                 span: Span {
                                                  start: Position {
                                                   line: 682,
                                                   column: 15,
                                                  },
                                                  end: Position {
                                                   line: 682,
                                                   column: 22,
                                                  },
                                                 },
                                                },
                                               ),
                                              ],
                                              to: FunctionApplication(
                                               FunctionApplication {
                                                function: PropertyAccess(
                                                 PropertyAccess {
                                                  expression: Identifier(
                                                   Identifier {
                                                    id: "lib",
                                                    span: Span {
                                                     start: Position {
                                                      line: 682,
                                                      column: 25,
                                                     },
                                                     end: Position {
                                                      line: 682,
                                                      column: 28,
                                                     },
                                                    },
                                                   },
                                                  ),
                                                  attribute_path: [
                                                   Raw(
                                                    PartRaw {
                                                     content: "mkOption",
                                                     span: Span {
                                                      start: Position {
                                                       line: 682,
                                                       column: 29,
                                                      },
                                                      end: Position {
                                                       line: 682,
                                                       column: 37,
                                                      },
                                                     },
                                                    },
                                                   ),
                                                  ],
                                                  default: None,
                                                 },
                                                ),
                                                arguments: [
                                                 Map(
                                                  Map {
                                                   recursive: false,
                                                   bindings: [
                                                    KeyValue(
                                                     BindingKeyValue {
                                                      from: [
                                                       Raw(
                                                        PartRaw {
                                                         content: "type",
                                                         span: Span {
                                                          start: Position {
                                                           line: 683,
                                                           column: 17,
                                                          },
                                                          end: Position {
                                                           line: 683,
                                                           column: 21,
                                                          },
                                                         },
                                                        },
                                                       ),
                                                      ],
                                                      to: Identifier(
                                                       Identifier {
                                                        id: "value",
                                                        span: Span {
                                                         start: Position {
                                                          line: 683,
                                                          column: 24,
                                                         },
                                                         end: Position {
                                                          line: 683,
                                                          column: 29,
                                                         },
                                                        },
                                                       },
                                                      ),
                                                     },
                                                    ),
                                                   ],
                                                   span: Span {
                                                    start: Position {
                                                     line: 682,
                                                     column: 38,
                                                    },
                                                    end: Position {
                                                     line: 684,
                                                     column: 16,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                ],
                                               },
                                              ),
                                             },
                                            ),
                                           ],
                                           span: Span {
                                            start: Position {
                                             line: 678,
                                             column: 13,
                                            },
                                            end: Position {
                                             line: 685,
                                             column: 14,
                                            },
                                           },
                                          },
                                         ),
                                         span: Span {
                                          start: Position {
                                           line: 677,
                                           column: 32,
                                          },
                                          end: Position {
                                           line: 685,
                                           column: 14,
                                          },
                                         },
                                        },
                                       ),
                                       Identifier(
                                        Identifier {
                                         id: "defs",
                                         span: Span {
                                          start: Position {
                                           line: 686,
                                           column: 13,
                                          },
                                          end: Position {
                                           line: 686,
                                           column: 17,
                                          },
                                         },
                                        },
                                       ),
                                      ],
                                     },
                                    ),
                                   },
                                  ),
                                  KeyValue(
                                   BindingKeyValue {
                                    from: [
                                     Raw(
                                      PartRaw {
                                       content: "mergedOption",
                                       span: Span {
                                        start: Position {
                                         line: 689,
                                         column: 11,
                                        },
                                        end: Position {
                                         line: 689,
                                         column: 23,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    to: FunctionApplication(
                                     FunctionApplication {
                                      function: Identifier(
                                       Identifier {
                                        id: "fixupOptionType",
                                        span: Span {
                                         start: Position {
                                          line: 689,
                                          column: 26,
                                         },
                                         end: Position {
                                          line: 689,
                                          column: 41,
                                         },
                                        },
                                       },
                                      ),
                                      arguments: [
                                       Identifier(
                                        Identifier {
                                         id: "loc",
                                         span: Span {
                                          start: Position {
                                           line: 689,
                                           column: 42,
                                          },
                                          end: Position {
                                           line: 689,
                                           column: 45,
                                          },
                                         },
                                        },
                                       ),
                                       FunctionApplication(
                                        FunctionApplication {
                                         function: Identifier(
                                          Identifier {
                                           id: "mergeOptionDecls",
                                           span: Span {
                                            start: Position {
                                             line: 689,
                                             column: 47,
                                            },
                                            end: Position {
                                             line: 689,
                                             column: 63,
                                            },
                                           },
                                          },
                                         ),
                                         arguments: [
                                          Identifier(
                                           Identifier {
                                            id: "loc",
                                            span: Span {
                                             start: Position {
                                              line: 689,
                                              column: 64,
                                             },
                                             end: Position {
                                              line: 689,
                                              column: 67,
                                             },
                                            },
                                           },
                                          ),
                                          Identifier(
                                           Identifier {
                                            id: "optionModules",
                                            span: Span {
                                             start: Position {
                                              line: 689,
                                              column: 68,
                                             },
                                             end: Position {
                                              line: 689,
                                              column: 81,
                                             },
                                            },
                                           },
                                          ),
                                         ],
                                        },
                                       ),
                                      ],
                                     },
                                    ),
                                   },
                                  ),
                                 ],
                                 target: PropertyAccess(
                                  PropertyAccess {
                                   expression: Identifier(
                                    Identifier {
                                     id: "mergedOption",
                                     span: Span {
                                      start: Position {
                                       line: 690,
                                       column: 12,
                                      },
                                      end: Position {
                                       line: 690,
                                       column: 24,
                                      },
                                     },
                                    },
                                   ),
                                   attribute_path: [
                                    Raw(
                                     PartRaw {
                                      content: "type",
                                      span: Span {
                                       start: Position {
                                        line: 690,
                                        column: 25,
                                       },
                                       end: Position {
                                        line: 690,
                                        column: 29,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   default: None,
                                  },
                                 ),
                                 span: Span {
                                  start: Position {
                                   line: 674,
                                   column: 14,
                                  },
                                  end: Position {
                                   line: 690,
                                   column: 29,
                                  },
                                 },
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 672,
                                 column: 9,
                                },
                                end: Position {
                                 line: 690,
                                 column: 29,
                                },
                               },
                              },
                             ),
                             span: Span {
                              start: Position {
                               line: 671,
                               column: 20,
                              },
                              end: Position {
                               line: 690,
                               column: 29,
                              },
                             },
                            },
                           ),
                           span: Span {
                            start: Position {
                             line: 671,
                             column: 15,
                            },
                            end: Position {
                             line: 690,
                             column: 29,
                            },
                           },
                          },
                         ),
                        },
                       ),
                      ],
                      span: Span {
                       start: Position {
                        line: 666,
                        column: 31,
                       },
                       end: Position {
                        line: 691,
                        column: 6,
                       },
                      },
                     },
                    ),
                   ],
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "submoduleWith",
                    span: Span {
                     start: Position {
                      line: 693,
                      column: 5,
                     },
                     end: Position {
                      line: 693,
                      column: 18,
                     },
                    },
                   },
                  ),
                 ],
                 to: Function(
                  Function {
                   head: Destructured(
                    FunctionHeadDestructured {
                     ellipsis: false,
                     identifier: RightAt(
                      "attrs",
                     ),
                     arguments: [
                      FunctionHeadDestructuredArgument {
                       identifier: "modules",
                       default: None,
                      },
                      FunctionHeadDestructuredArgument {
                       identifier: "specialArgs",
                       default: Some(
                        Map(
                         Map {
                          recursive: false,
                          bindings: [],
                          span: Span {
                           start: Position {
                            line: 695,
                            column: 23,
                           },
                           end: Position {
                            line: 695,
                            column: 25,
                           },
                          },
                         },
                        ),
                       ),
                      },
                      FunctionHeadDestructuredArgument {
                       identifier: "shorthandOnlyDefinesConfig",
                       default: Some(
                        Identifier(
                         Identifier {
                          id: "false",
                          span: Span {
                           start: Position {
                            line: 696,
                            column: 38,
                           },
                           end: Position {
                            line: 696,
                            column: 43,
                           },
                          },
                         },
                        ),
                       ),
                      },
                      FunctionHeadDestructuredArgument {
                       identifier: "description",
                       default: Some(
                        Identifier(
                         Identifier {
                          id: "null",
                          span: Span {
                           start: Position {
                            line: 697,
                            column: 23,
                           },
                           end: Position {
                            line: 697,
                            column: 27,
                           },
                          },
                         },
                        ),
                       ),
                      },
                     ],
                    },
                   ),
                   body: LetIn(
                    LetIn {
                     bindings: [
                      Inherit(
                       BindingInherit {
                        from: Some(
                         PropertyAccess(
                          PropertyAccess {
                           expression: Identifier(
                            Identifier {
                             id: "lib",
                             span: Span {
                              start: Position {
                               line: 700,
                               column: 18,
                              },
                              end: Position {
                               line: 700,
                               column: 21,
                              },
                             },
                            },
                           ),
                           attribute_path: [
                            Raw(
                             PartRaw {
                              content: "modules",
                              span: Span {
                               start: Position {
                                line: 700,
                                column: 22,
                               },
                               end: Position {
                                line: 700,
                                column: 29,
                               },
                              },
                             },
                            ),
                           ],
                           default: None,
                          },
                         ),
                        ),
                        attributes: [
                         Raw(
                          PartRaw {
                           content: "evalModules",
                           span: Span {
                            start: Position {
                             line: 700,
                             column: 31,
                            },
                            end: Position {
                             line: 700,
                             column: 42,
                            },
                           },
                          },
                         ),
                        ],
                        span: Span {
                         start: Position {
                          line: 699,
                          column: 10,
                         },
                         end: Position {
                          line: 700,
                          column: 43,
                         },
                        },
                       },
                      ),
                      KeyValue(
                       BindingKeyValue {
                        from: [
                         Raw(
                          PartRaw {
                           content: "allModules",
                           span: Span {
                            start: Position {
                             line: 702,
                             column: 9,
                            },
                            end: Position {
                             line: 702,
                             column: 19,
                            },
                           },
                          },
                         ),
                        ],
                        to: Function(
                         Function {
                          head: Simple(
                           FunctionHeadSimple {
                            identifier: "defs",
                           },
                          ),
                          body: FunctionApplication(
                           FunctionApplication {
                            function: Identifier(
                             Identifier {
                              id: "map",
                              span: Span {
                               start: Position {
                                line: 702,
                                column: 28,
                               },
                               end: Position {
                                line: 702,
                                column: 31,
                               },
                              },
                             },
                            ),
                            arguments: [
                             Function(
                              Function {
                               head: Destructured(
                                FunctionHeadDestructured {
                                 ellipsis: false,
                                 identifier: None,
                                 arguments: [
                                  FunctionHeadDestructuredArgument {
                                   identifier: "value",
                                   default: None,
                                  },
                                  FunctionHeadDestructuredArgument {
                                   identifier: "file",
                                   default: None,
                                  },
                                 ],
                                },
                               ),
                               body: IfThenElse(
                                IfThenElse {
                                 predicate: BinaryOperation(
                                  BinaryOperation {
                                   left: FunctionApplication(
                                    FunctionApplication {
                                     function: Identifier(
                                      Identifier {
                                       id: "isAttrs",
                                       span: Span {
                                        start: Position {
                                         line: 703,
                                         column: 14,
                                        },
                                        end: Position {
                                         line: 703,
                                         column: 21,
                                        },
                                       },
                                      },
                                     ),
                                     arguments: [
                                      Identifier(
                                       Identifier {
                                        id: "value",
                                        span: Span {
                                         start: Position {
                                          line: 703,
                                          column: 22,
                                         },
                                         end: Position {
                                          line: 703,
                                          column: 27,
                                         },
                                        },
                                       },
                                      ),
                                     ],
                                    },
                                   ),
                                   operator: LogicalAnd,
                                   right: Identifier(
                                    Identifier {
                                     id: "shorthandOnlyDefinesConfig",
                                     span: Span {
                                      start: Position {
                                       line: 703,
                                       column: 31,
                                      },
                                      end: Position {
                                       line: 703,
                                       column: 57,
                                      },
                                     },
                                    },
                                   ),
                                  },
                                 ),
                                 then: Map(
                                  Map {
                                   recursive: false,
                                   bindings: [
                                    KeyValue(
                                     BindingKeyValue {
                                      from: [
                                       Raw(
                                        PartRaw {
                                         content: "_file",
                                         span: Span {
                                          start: Position {
                                           line: 704,
                                           column: 18,
                                          },
                                          end: Position {
                                           line: 704,
                                           column: 23,
                                          },
                                         },
                                        },
                                       ),
                                      ],
                                      to: Identifier(
                                       Identifier {
                                        id: "file",
                                        span: Span {
                                         start: Position {
                                          line: 704,
                                          column: 26,
                                         },
                                         end: Position {
                                          line: 704,
                                          column: 30,
                                         },
                                        },
                                       },
                                      ),
                                     },
                                    ),
                                    KeyValue(
                                     BindingKeyValue {
                                      from: [
                                       Raw(
                                        PartRaw {
                                         content: "config",
                                         span: Span {
                                          start: Position {
                                           line: 704,
                                           column: 32,
                                          },
                                          end: Position {
                                           line: 704,
                                           column: 38,
                                          },
                                         },
                                        },
                                       ),
                                      ],
                                      to: Identifier(
                                       Identifier {
                                        id: "value",
                                        span: Span {
                                         start: Position {
                                          line: 704,
                                          column: 41,
                                         },
                                         end: Position {
                                          line: 704,
                                          column: 46,
                                         },
                                        },
                                       },
                                      ),
                                     },
                                    ),
                                   ],
                                   span: Span {
                                    start: Position {
                                     line: 704,
                                     column: 16,
                                    },
                                    end: Position {
                                     line: 704,
                                     column: 49,
                                    },
                                   },
                                  },
                                 ),
                                 else_: Map(
                                  Map {
                                   recursive: false,
                                   bindings: [
                                    KeyValue(
                                     BindingKeyValue {
                                      from: [
                                       Raw(
                                        PartRaw {
                                         content: "_file",
                                         span: Span {
                                          start: Position {
                                           line: 705,
                                           column: 18,
                                          },
                                          end: Position {
                                           line: 705,
                                           column: 23,
                                          },
                                         },
                                        },
                                       ),
                                      ],
                                      to: Identifier(
                                       Identifier {
                                        id: "file",
                                        span: Span {
                                         start: Position {
                                          line: 705,
                                          column: 26,
                                         },
                                         end: Position {
                                          line: 705,
                                          column: 30,
                                         },
                                        },
                                       },
                                      ),
                                     },
                                    ),
                                    KeyValue(
                                     BindingKeyValue {
                                      from: [
                                       Raw(
                                        PartRaw {
                                         content: "imports",
                                         span: Span {
                                          start: Position {
                                           line: 705,
                                           column: 32,
                                          },
                                          end: Position {
                                           line: 705,
                                           column: 39,
                                          },
                                         },
                                        },
                                       ),
                                      ],
                                      to: List(
                                       List {
                                        elements: [
                                         Identifier(
                                          Identifier {
                                           id: "value",
                                           span: Span {
                                            start: Position {
                                             line: 705,
                                             column: 44,
                                            },
                                            end: Position {
                                             line: 705,
                                             column: 49,
                                            },
                                           },
                                          },
                                         ),
                                        ],
                                        span: Span {
                                         start: Position {
                                          line: 705,
                                          column: 42,
                                         },
                                         end: Position {
                                          line: 705,
                                          column: 51,
                                         },
                                        },
                                       },
                                      ),
                                     },
                                    ),
                                   ],
                                   span: Span {
                                    start: Position {
                                     line: 705,
                                     column: 16,
                                    },
                                    end: Position {
                                     line: 705,
                                     column: 54,
                                    },
                                   },
                                  },
                                 ),
                                 span: Span {
                                  start: Position {
                                   line: 703,
                                   column: 11,
                                  },
                                  end: Position {
                                   line: 705,
                                   column: 54,
                                  },
                                 },
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 702,
                                 column: 33,
                                },
                                end: Position {
                                 line: 705,
                                 column: 54,
                                },
                               },
                              },
                             ),
                             Identifier(
                              Identifier {
                               id: "defs",
                               span: Span {
                                start: Position {
                                 line: 706,
                                 column: 11,
                                },
                                end: Position {
                                 line: 706,
                                 column: 15,
                                },
                               },
                              },
                             ),
                            ],
                           },
                          ),
                          span: Span {
                           start: Position {
                            line: 702,
                            column: 22,
                           },
                           end: Position {
                            line: 706,
                            column: 15,
                           },
                          },
                         },
                        ),
                       },
                      ),
                      KeyValue(
                       BindingKeyValue {
                        from: [
                         Raw(
                          PartRaw {
                           content: "base",
                           span: Span {
                            start: Position {
                             line: 708,
                             column: 9,
                            },
                            end: Position {
                             line: 708,
                             column: 13,
                            },
                           },
                          },
                         ),
                        ],
                        to: FunctionApplication(
                         FunctionApplication {
                          function: Identifier(
                           Identifier {
                            id: "evalModules",
                            span: Span {
                             start: Position {
                              line: 708,
                              column: 16,
                             },
                             end: Position {
                              line: 708,
                              column: 27,
                             },
                            },
                           },
                          ),
                          arguments: [
                           Map(
                            Map {
                             recursive: false,
                             bindings: [
                              Inherit(
                               BindingInherit {
                                from: None,
                                attributes: [
                                 Raw(
                                  PartRaw {
                                   content: "specialArgs",
                                   span: Span {
                                    start: Position {
                                     line: 709,
                                     column: 19,
                                    },
                                    end: Position {
                                     line: 709,
                                     column: 30,
                                    },
                                   },
                                  },
                                 ),
                                ],
                                span: Span {
                                 start: Position {
                                  line: 708,
                                  column: 29,
                                 },
                                 end: Position {
                                  line: 709,
                                  column: 31,
                                 },
                                },
                               },
                              ),
                              KeyValue(
                               BindingKeyValue {
                                from: [
                                 Raw(
                                  PartRaw {
                                   content: "modules",
                                   span: Span {
                                    start: Position {
                                     line: 710,
                                     column: 11,
                                    },
                                    end: Position {
                                     line: 710,
                                     column: 18,
                                    },
                                   },
                                  },
                                 ),
                                ],
                                to: BinaryOperation(
                                 BinaryOperation {
                                  left: List(
                                   List {
                                    elements: [
                                     Map(
                                      Map {
                                       recursive: false,
                                       bindings: [
                                        KeyValue(
                                         BindingKeyValue {
                                          from: [
                                           Raw(
                                            PartRaw {
                                             content: "_module",
                                             span: Span {
                                              start: Position {
                                               line: 726,
                                               column: 13,
                                              },
                                              end: Position {
                                               line: 726,
                                               column: 20,
                                              },
                                             },
                                            },
                                           ),
                                           Raw(
                                            PartRaw {
                                             content: "args",
                                             span: Span {
                                              start: Position {
                                               line: 726,
                                               column: 21,
                                              },
                                              end: Position {
                                               line: 726,
                                               column: 25,
                                              },
                                             },
                                            },
                                           ),
                                           Raw(
                                            PartRaw {
                                             content: "name",
                                             span: Span {
                                              start: Position {
                                               line: 726,
                                               column: 26,
                                              },
                                              end: Position {
                                               line: 726,
                                               column: 30,
                                              },
                                             },
                                            },
                                           ),
                                          ],
                                          to: FunctionApplication(
                                           FunctionApplication {
                                            function: PropertyAccess(
                                             PropertyAccess {
                                              expression: Identifier(
                                               Identifier {
                                                id: "lib",
                                                span: Span {
                                                 start: Position {
                                                  line: 726,
                                                  column: 33,
                                                 },
                                                 end: Position {
                                                  line: 726,
                                                  column: 36,
                                                 },
                                                },
                                               },
                                              ),
                                              attribute_path: [
                                               Raw(
                                                PartRaw {
                                                 content: "mkOptionDefault",
                                                 span: Span {
                                                  start: Position {
                                                   line: 726,
                                                   column: 37,
                                                  },
                                                  end: Position {
                                                   line: 726,
                                                   column: 52,
                                                  },
                                                 },
                                                },
                                               ),
                                              ],
                                              default: None,
                                             },
                                            ),
                                            arguments: [
                                             String(
                                              String_ {
                                               parts: [
                                                Raw(
                                                 PartRaw {
                                                  content: "‹name›",
                                                  span: Span {
                                                   start: Position {
                                                    line: 726,
                                                    column: 54,
                                                   },
                                                   end: Position {
                                                    line: 726,
                                                    column: 64,
                                                   },
                                                  },
                                                 },
                                                ),
                                               ],
                                               span: Span {
                                                start: Position {
                                                 line: 726,
                                                 column: 53,
                                                },
                                                end: Position {
                                                 line: 726,
                                                 column: 65,
                                                },
                                               },
                                              },
                                             ),
                                            ],
                                           },
                                          ),
                                         },
                                        ),
                                       ],
                                       span: Span {
                                        start: Position {
                                         line: 710,
                                         column: 22,
                                        },
                                        end: Position {
                                         line: 727,
                                         column: 12,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    span: Span {
                                     start: Position {
                                      line: 710,
                                      column: 21,
                                     },
                                     end: Position {
                                      line: 727,
                                      column: 13,
                                     },
                                    },
                                   },
                                  ),
                                  operator: Concatenation,
                                  right: Identifier(
                                   Identifier {
                                    id: "modules",
                                    span: Span {
                                     start: Position {
                                      line: 727,
                                      column: 17,
                                     },
                                     end: Position {
                                      line: 727,
                                      column: 24,
                                     },
                                    },
                                   },
                                  ),
                                 },
                                ),
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 708,
                               column: 28,
                              },
                              end: Position {
                               line: 728,
                               column: 10,
                              },
                             },
                            },
                           ),
                          ],
                         },
                        ),
                       },
                      ),
                      KeyValue(
                       BindingKeyValue {
                        from: [
                         Raw(
                          PartRaw {
                           content: "freeformType",
                           span: Span {
                            start: Position {
                             line: 730,
                             column: 9,
                            },
                            end: Position {
                             line: 730,
                             column: 21,
                            },
                           },
                          },
                         ),
                        ],
                        to: PropertyAccess(
                         PropertyAccess {
                          expression: Identifier(
                           Identifier {
                            id: "base",
                            span: Span {
                             start: Position {
                              line: 730,
                              column: 24,
                             },
                             end: Position {
                              line: 730,
                              column: 28,
                             },
                            },
                           },
                          ),
                          attribute_path: [
                           Raw(
                            PartRaw {
                             content: "_module",
                             span: Span {
                              start: Position {
                               line: 730,
                               column: 29,
                              },
                              end: Position {
                               line: 730,
                               column: 36,
                              },
                             },
                            },
                           ),
                           Raw(
                            PartRaw {
                             content: "freeformType",
                             span: Span {
                              start: Position {
                               line: 730,
                               column: 37,
                              },
                              end: Position {
                               line: 730,
                               column: 49,
                              },
                             },
                            },
                           ),
                          ],
                          default: None,
                         },
                        ),
                       },
                      ),
                      KeyValue(
                       BindingKeyValue {
                        from: [
                         Raw(
                          PartRaw {
                           content: "name",
                           span: Span {
                            start: Position {
                             line: 732,
                             column: 9,
                            },
                            end: Position {
                             line: 732,
                             column: 13,
                            },
                           },
                          },
                         ),
                        ],
                        to: String(
                         String_ {
                          parts: [
                           Raw(
                            PartRaw {
                             content: "submodule",
                             span: Span {
                              start: Position {
                               line: 732,
                               column: 17,
                              },
                              end: Position {
                               line: 732,
                               column: 26,
                              },
                             },
                            },
                           ),
                          ],
                          span: Span {
                           start: Position {
                            line: 732,
                            column: 16,
                           },
                           end: Position {
                            line: 732,
                            column: 27,
                           },
                          },
                         },
                        ),
                       },
                      ),
                     ],
                     target: FunctionApplication(
                      FunctionApplication {
                       function: Identifier(
                        Identifier {
                         id: "mkOptionType",
                         span: Span {
                          start: Position {
                           line: 735,
                           column: 7,
                          },
                          end: Position {
                           line: 735,
                           column: 19,
                          },
                         },
                        },
                       ),
                       arguments: [
                        Map(
                         Map {
                          recursive: false,
                          bindings: [
                           Inherit(
                            BindingInherit {
                             from: None,
                             attributes: [
                              Raw(
                               PartRaw {
                                content: "name",
                                span: Span {
                                 start: Position {
                                  line: 736,
                                  column: 17,
                                 },
                                 end: Position {
                                  line: 736,
                                  column: 21,
                                 },
                                },
                               },
                              ),
                             ],
                             span: Span {
                              start: Position {
                               line: 735,
                               column: 21,
                              },
                              end: Position {
                               line: 736,
                               column: 22,
                              },
                             },
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "description",
                                span: Span {
                                 start: Position {
                                  line: 737,
                                  column: 9,
                                 },
                                 end: Position {
                                  line: 737,
                                  column: 20,
                                 },
                                },
                               },
                              ),
                             ],
                             to: IfThenElse(
                              IfThenElse {
                               predicate: BinaryOperation(
                                BinaryOperation {
                                 left: Identifier(
                                  Identifier {
                                   id: "description",
                                   span: Span {
                                    start: Position {
                                     line: 738,
                                     column: 14,
                                    },
                                    end: Position {
                                     line: 738,
                                     column: 25,
                                    },
                                   },
                                  },
                                 ),
                                 operator: NotEqualTo,
                                 right: Identifier(
                                  Identifier {
                                   id: "null",
                                   span: Span {
                                    start: Position {
                                     line: 738,
                                     column: 29,
                                    },
                                    end: Position {
                                     line: 738,
                                     column: 33,
                                    },
                                   },
                                  },
                                 ),
                                },
                               ),
                               then: Identifier(
                                Identifier {
                                 id: "description",
                                 span: Span {
                                  start: Position {
                                   line: 738,
                                   column: 39,
                                  },
                                  end: Position {
                                   line: 738,
                                   column: 50,
                                  },
                                 },
                                },
                               ),
                               else_: PropertyAccess(
                                PropertyAccess {
                                 expression: Identifier(
                                  Identifier {
                                   id: "freeformType",
                                   span: Span {
                                    start: Position {
                                     line: 739,
                                     column: 16,
                                    },
                                    end: Position {
                                     line: 739,
                                     column: 28,
                                    },
                                   },
                                  },
                                 ),
                                 attribute_path: [
                                  Raw(
                                   PartRaw {
                                    content: "description",
                                    span: Span {
                                     start: Position {
                                      line: 739,
                                      column: 29,
                                     },
                                     end: Position {
                                      line: 739,
                                      column: 40,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 default: Some(
                                  Identifier(
                                   Identifier {
                                    id: "name",
                                    span: Span {
                                     start: Position {
                                      line: 739,
                                      column: 44,
                                     },
                                     end: Position {
                                      line: 739,
                                      column: 48,
                                     },
                                    },
                                   },
                                  ),
                                 ),
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 738,
                                 column: 11,
                                },
                                end: Position {
                                 line: 739,
                                 column: 48,
                                },
                               },
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "check",
                                span: Span {
                                 start: Position {
                                  line: 740,
                                  column: 9,
                                 },
                                 end: Position {
                                  line: 740,
                                  column: 14,
                                 },
                                },
                               },
                              ),
                             ],
                             to: Function(
                              Function {
                               head: Simple(
                                FunctionHeadSimple {
                                 identifier: "x",
                                },
                               ),
                               body: BinaryOperation(
                                BinaryOperation {
                                 left: BinaryOperation(
                                  BinaryOperation {
                                   left: FunctionApplication(
                                    FunctionApplication {
                                     function: Identifier(
                                      Identifier {
                                       id: "isAttrs",
                                       span: Span {
                                        start: Position {
                                         line: 740,
                                         column: 20,
                                        },
                                        end: Position {
                                         line: 740,
                                         column: 27,
                                        },
                                       },
                                      },
                                     ),
                                     arguments: [
                                      Identifier(
                                       Identifier {
                                        id: "x",
                                        span: Span {
                                         start: Position {
                                          line: 740,
                                          column: 28,
                                         },
                                         end: Position {
                                          line: 740,
                                          column: 29,
                                         },
                                        },
                                       },
                                      ),
                                     ],
                                    },
                                   ),
                                   operator: LogicalOr,
                                   right: FunctionApplication(
                                    FunctionApplication {
                                     function: Identifier(
                                      Identifier {
                                       id: "isFunction",
                                       span: Span {
                                        start: Position {
                                         line: 740,
                                         column: 33,
                                        },
                                        end: Position {
                                         line: 740,
                                         column: 43,
                                        },
                                       },
                                      },
                                     ),
                                     arguments: [
                                      Identifier(
                                       Identifier {
                                        id: "x",
                                        span: Span {
                                         start: Position {
                                          line: 740,
                                          column: 44,
                                         },
                                         end: Position {
                                          line: 740,
                                          column: 45,
                                         },
                                        },
                                       },
                                      ),
                                     ],
                                    },
                                   ),
                                  },
                                 ),
                                 operator: LogicalOr,
                                 right: FunctionApplication(
                                  FunctionApplication {
                                   function: PropertyAccess(
                                    PropertyAccess {
                                     expression: Identifier(
                                      Identifier {
                                       id: "path",
                                       span: Span {
                                        start: Position {
                                         line: 740,
                                         column: 49,
                                        },
                                        end: Position {
                                         line: 740,
                                         column: 53,
                                        },
                                       },
                                      },
                                     ),
                                     attribute_path: [
                                      Raw(
                                       PartRaw {
                                        content: "check",
                                        span: Span {
                                         start: Position {
                                          line: 740,
                                          column: 54,
                                         },
                                         end: Position {
                                          line: 740,
                                          column: 59,
                                         },
                                        },
                                       },
                                      ),
                                     ],
                                     default: None,
                                    },
                                   ),
                                   arguments: [
                                    Identifier(
                                     Identifier {
                                      id: "x",
                                      span: Span {
                                       start: Position {
                                        line: 740,
                                        column: 60,
                                       },
                                       end: Position {
                                        line: 740,
                                        column: 61,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                  },
                                 ),
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 740,
                                 column: 17,
                                },
                                end: Position {
                                 line: 740,
                                 column: 61,
                                },
                               },
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "merge",
                                span: Span {
                                 start: Position {
                                  line: 741,
                                  column: 9,
                                 },
                                 end: Position {
                                  line: 741,
                                  column: 14,
                                 },
                                },
                               },
                              ),
                             ],
                             to: Function(
                              Function {
                               head: Simple(
                                FunctionHeadSimple {
                                 identifier: "loc",
                                },
                               ),
                               body: Function(
                                Function {
                                 head: Simple(
                                  FunctionHeadSimple {
                                   identifier: "defs",
                                  },
                                 ),
                                 body: PropertyAccess(
                                  PropertyAccess {
                                   expression: FunctionApplication(
                                    FunctionApplication {
                                     function: PropertyAccess(
                                      PropertyAccess {
                                       expression: Identifier(
                                        Identifier {
                                         id: "base",
                                         span: Span {
                                          start: Position {
                                           line: 742,
                                           column: 12,
                                          },
                                          end: Position {
                                           line: 742,
                                           column: 16,
                                          },
                                         },
                                        },
                                       ),
                                       attribute_path: [
                                        Raw(
                                         PartRaw {
                                          content: "extendModules",
                                          span: Span {
                                           start: Position {
                                            line: 742,
                                            column: 17,
                                           },
                                           end: Position {
                                            line: 742,
                                            column: 30,
                                           },
                                          },
                                         },
                                        ),
                                       ],
                                       default: None,
                                      },
                                     ),
                                     arguments: [
                                      Map(
                                       Map {
                                        recursive: false,
                                        bindings: [
                                         KeyValue(
                                          BindingKeyValue {
                                           from: [
                                            Raw(
                                             PartRaw {
                                              content: "modules",
                                              span: Span {
                                               start: Position {
                                                line: 743,
                                                column: 13,
                                               },
                                               end: Position {
                                                line: 743,
                                                column: 20,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                           to: BinaryOperation(
                                            BinaryOperation {
                                             left: List(
                                              List {
                                               elements: [
                                                Map(
                                                 Map {
                                                  recursive: false,
                                                  bindings: [
                                                   KeyValue(
                                                    BindingKeyValue {
                                                     from: [
                                                      Raw(
                                                       PartRaw {
                                                        content: "_module",
                                                        span: Span {
                                                         start: Position {
                                                          line: 743,
                                                          column: 27,
                                                         },
                                                         end: Position {
                                                          line: 743,
                                                          column: 34,
                                                         },
                                                        },
                                                       },
                                                      ),
                                                      Raw(
                                                       PartRaw {
                                                        content: "args",
                                                        span: Span {
                                                         start: Position {
                                                          line: 743,
                                                          column: 35,
                                                         },
                                                         end: Position {
                                                          line: 743,
                                                          column: 39,
                                                         },
                                                        },
                                                       },
                                                      ),
                                                      Raw(
                                                       PartRaw {
                                                        content: "name",
                                                        span: Span {
                                                         start: Position {
                                                          line: 743,
                                                          column: 40,
                                                         },
                                                         end: Position {
                                                          line: 743,
                                                          column: 44,
                                                         },
                                                        },
                                                       },
                                                      ),
                                                     ],
                                                     to: FunctionApplication(
                                                      FunctionApplication {
                                                       function: Identifier(
                                                        Identifier {
                                                         id: "last",
                                                         span: Span {
                                                          start: Position {
                                                           line: 743,
                                                           column: 47,
                                                          },
                                                          end: Position {
                                                           line: 743,
                                                           column: 51,
                                                          },
                                                         },
                                                        },
                                                       ),
                                                       arguments: [
                                                        Identifier(
                                                         Identifier {
                                                          id: "loc",
                                                          span: Span {
                                                           start: Position {
                                                            line: 743,
                                                            column: 52,
                                                           },
                                                           end: Position {
                                                            line: 743,
                                                            column: 55,
                                                           },
                                                          },
                                                         },
                                                        ),
                                                       ],
                                                      },
                                                     ),
                                                    },
                                                   ),
                                                  ],
                                                  span: Span {
                                                   start: Position {
                                                    line: 743,
                                                    column: 25,
                                                   },
                                                   end: Position {
                                                    line: 743,
                                                    column: 58,
                                                   },
                                                  },
                                                 },
                                                ),
                                               ],
                                               span: Span {
                                                start: Position {
                                                 line: 743,
                                                 column: 23,
                                                },
                                                end: Position {
                                                 line: 743,
                                                 column: 60,
                                                },
                                               },
                                              },
                                             ),
                                             operator: Concatenation,
                                             right: FunctionApplication(
                                              FunctionApplication {
                                               function: Identifier(
                                                Identifier {
                                                 id: "allModules",
                                                 span: Span {
                                                  start: Position {
                                                   line: 743,
                                                   column: 64,
                                                  },
                                                  end: Position {
                                                   line: 743,
                                                   column: 74,
                                                  },
                                                 },
                                                },
                                               ),
                                               arguments: [
                                                Identifier(
                                                 Identifier {
                                                  id: "defs",
                                                  span: Span {
                                                   start: Position {
                                                    line: 743,
                                                    column: 75,
                                                   },
                                                   end: Position {
                                                    line: 743,
                                                    column: 79,
                                                   },
                                                  },
                                                 },
                                                ),
                                               ],
                                              },
                                             ),
                                            },
                                           ),
                                          },
                                         ),
                                         KeyValue(
                                          BindingKeyValue {
                                           from: [
                                            Raw(
                                             PartRaw {
                                              content: "prefix",
                                              span: Span {
                                               start: Position {
                                                line: 744,
                                                column: 13,
                                               },
                                               end: Position {
                                                line: 744,
                                                column: 19,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                           to: Identifier(
                                            Identifier {
                                             id: "loc",
                                             span: Span {
                                              start: Position {
                                               line: 744,
                                               column: 22,
                                              },
                                              end: Position {
                                               line: 744,
                                               column: 25,
                                              },
                                             },
                                            },
                                           ),
                                          },
                                         ),
                                        ],
                                        span: Span {
                                         start: Position {
                                          line: 742,
                                          column: 31,
                                         },
                                         end: Position {
                                          line: 745,
                                          column: 12,
                                         },
                                        },
                                       },
                                      ),
                                     ],
                                    },
                                   ),
                                   attribute_path: [
                                    Raw(
                                     PartRaw {
                                      content: "config",
                                      span: Span {
                                       start: Position {
                                        line: 745,
                                        column: 14,
                                       },
                                       end: Position {
                                        line: 745,
                                        column: 20,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   default: None,
                                  },
                                 ),
                                 span: Span {
                                  start: Position {
                                   line: 741,
                                   column: 22,
                                  },
                                  end: Position {
                                   line: 745,
                                   column: 20,
                                  },
                                 },
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 741,
                                 column: 17,
                                },
                                end: Position {
                                 line: 745,
                                 column: 20,
                                },
                               },
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "emptyValue",
                                span: Span {
                                 start: Position {
                                  line: 746,
                                  column: 9,
                                 },
                                 end: Position {
                                  line: 746,
                                  column: 19,
                                 },
                                },
                               },
                              ),
                             ],
                             to: Map(
                              Map {
                               recursive: false,
                               bindings: [
                                KeyValue(
                                 BindingKeyValue {
                                  from: [
                                   Raw(
                                    PartRaw {
                                     content: "value",
                                     span: Span {
                                      start: Position {
                                       line: 746,
                                       column: 24,
                                      },
                                      end: Position {
                                       line: 746,
                                       column: 29,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  to: Map(
                                   Map {
                                    recursive: false,
                                    bindings: [],
                                    span: Span {
                                     start: Position {
                                      line: 746,
                                      column: 32,
                                     },
                                     end: Position {
                                      line: 746,
                                      column: 34,
                                     },
                                    },
                                   },
                                  ),
                                 },
                                ),
                               ],
                               span: Span {
                                start: Position {
                                 line: 746,
                                 column: 22,
                                },
                                end: Position {
                                 line: 746,
                                 column: 37,
                                },
                               },
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "getSubOptions",
                                span: Span {
                                 start: Position {
                                  line: 747,
                                  column: 9,
                                 },
                                 end: Position {
                                  line: 747,
                                  column: 22,
                                 },
                                },
                               },
                              ),
                             ],
                             to: Function(
                              Function {
                               head: Simple(
                                FunctionHeadSimple {
                                 identifier: "prefix",
                                },
                               ),
                               body: BinaryOperation(
                                BinaryOperation {
                                 left: PropertyAccess(
                                  PropertyAccess {
                                   expression: FunctionApplication(
                                    FunctionApplication {
                                     function: PropertyAccess(
                                      PropertyAccess {
                                       expression: Identifier(
                                        Identifier {
                                         id: "base",
                                         span: Span {
                                          start: Position {
                                           line: 747,
                                           column: 34,
                                          },
                                          end: Position {
                                           line: 747,
                                           column: 38,
                                          },
                                         },
                                        },
                                       ),
                                       attribute_path: [
                                        Raw(
                                         PartRaw {
                                          content: "extendModules",
                                          span: Span {
                                           start: Position {
                                            line: 747,
                                            column: 39,
                                           },
                                           end: Position {
                                            line: 747,
                                            column: 52,
                                           },
                                          },
                                         },
                                        ),
                                       ],
                                       default: None,
                                      },
                                     ),
                                     arguments: [
                                      Map(
                                       Map {
                                        recursive: false,
                                        bindings: [
                                         Inherit(
                                          BindingInherit {
                                           from: None,
                                           attributes: [
                                            Raw(
                                             PartRaw {
                                              content: "prefix",
                                              span: Span {
                                               start: Position {
                                                line: 748,
                                                column: 21,
                                               },
                                               end: Position {
                                                line: 748,
                                                column: 27,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                           span: Span {
                                            start: Position {
                                             line: 748,
                                             column: 12,
                                            },
                                            end: Position {
                                             line: 748,
                                             column: 28,
                                            },
                                           },
                                          },
                                         ),
                                        ],
                                        span: Span {
                                         start: Position {
                                          line: 748,
                                          column: 11,
                                         },
                                         end: Position {
                                          line: 748,
                                          column: 30,
                                         },
                                        },
                                       },
                                      ),
                                     ],
                                    },
                                   ),
                                   attribute_path: [
                                    Raw(
                                     PartRaw {
                                      content: "options",
                                      span: Span {
                                       start: Position {
                                        line: 748,
                                        column: 32,
                                       },
                                       end: Position {
                                        line: 748,
                                        column: 39,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   default: None,
                                  },
                                 ),
                                 operator: Update,
                                 right: FunctionApplication(
                                  FunctionApplication {
                                   function: Identifier(
                                    Identifier {
                                     id: "optionalAttrs",
                                     span: Span {
                                      start: Position {
                                       line: 748,
                                       column: 43,
                                      },
                                      end: Position {
                                       line: 748,
                                       column: 56,
                                      },
                                     },
                                    },
                                   ),
                                   arguments: [
                                    BinaryOperation(
                                     BinaryOperation {
                                      left: Identifier(
                                       Identifier {
                                        id: "freeformType",
                                        span: Span {
                                         start: Position {
                                          line: 748,
                                          column: 58,
                                         },
                                         end: Position {
                                          line: 748,
                                          column: 70,
                                         },
                                        },
                                       },
                                      ),
                                      operator: NotEqualTo,
                                      right: Identifier(
                                       Identifier {
                                        id: "null",
                                        span: Span {
                                         start: Position {
                                          line: 748,
                                          column: 74,
                                         },
                                         end: Position {
                                          line: 748,
                                          column: 78,
                                         },
                                        },
                                       },
                                      ),
                                     },
                                    ),
                                    Map(
                                     Map {
                                      recursive: false,
                                      bindings: [
                                       KeyValue(
                                        BindingKeyValue {
                                         from: [
                                          Raw(
                                           PartRaw {
                                            content: "_freeformOptions",
                                            span: Span {
                                             start: Position {
                                              line: 752,
                                              column: 13,
                                             },
                                             end: Position {
                                              line: 752,
                                              column: 29,
                                             },
                                            },
                                           },
                                          ),
                                         ],
                                         to: FunctionApplication(
                                          FunctionApplication {
                                           function: PropertyAccess(
                                            PropertyAccess {
                                             expression: Identifier(
                                              Identifier {
                                               id: "freeformType",
                                               span: Span {
                                                start: Position {
                                                 line: 752,
                                                 column: 32,
                                                },
                                                end: Position {
                                                 line: 752,
                                                 column: 44,
                                                },
                                               },
                                              },
                                             ),
                                             attribute_path: [
                                              Raw(
                                               PartRaw {
                                                content: "getSubOptions",
                                                span: Span {
                                                 start: Position {
                                                  line: 752,
                                                  column: 45,
                                                 },
                                                 end: Position {
                                                  line: 752,
                                                  column: 58,
                                                 },
                                                },
                                               },
                                              ),
                                             ],
                                             default: None,
                                            },
                                           ),
                                           arguments: [
                                            Identifier(
                                             Identifier {
                                              id: "prefix",
                                              span: Span {
                                               start: Position {
                                                line: 752,
                                                column: 59,
                                               },
                                               end: Position {
                                                line: 752,
                                                column: 65,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                          },
                                         ),
                                        },
                                       ),
                                      ],
                                      span: Span {
                                       start: Position {
                                        line: 748,
                                        column: 80,
                                       },
                                       end: Position {
                                        line: 753,
                                        column: 12,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                  },
                                 ),
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 747,
                                 column: 25,
                                },
                                end: Position {
                                 line: 753,
                                 column: 12,
                                },
                               },
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "getSubModules",
                                span: Span {
                                 start: Position {
                                  line: 754,
                                  column: 9,
                                 },
                                 end: Position {
                                  line: 754,
                                  column: 22,
                                 },
                                },
                               },
                              ),
                             ],
                             to: Identifier(
                              Identifier {
                               id: "modules",
                               span: Span {
                                start: Position {
                                 line: 754,
                                 column: 25,
                                },
                                end: Position {
                                 line: 754,
                                 column: 32,
                                },
                               },
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "substSubModules",
                                span: Span {
                                 start: Position {
                                  line: 755,
                                  column: 9,
                                 },
                                 end: Position {
                                  line: 755,
                                  column: 24,
                                 },
                                },
                               },
                              ),
                             ],
                             to: Function(
                              Function {
                               head: Simple(
                                FunctionHeadSimple {
                                 identifier: "m",
                                },
                               ),
                               body: FunctionApplication(
                                FunctionApplication {
                                 function: Identifier(
                                  Identifier {
                                   id: "submoduleWith",
                                   span: Span {
                                    start: Position {
                                     line: 755,
                                     column: 30,
                                    },
                                    end: Position {
                                     line: 755,
                                     column: 43,
                                    },
                                   },
                                  },
                                 ),
                                 arguments: [
                                  BinaryOperation(
                                   BinaryOperation {
                                    left: Identifier(
                                     Identifier {
                                      id: "attrs",
                                      span: Span {
                                       start: Position {
                                        line: 755,
                                        column: 45,
                                       },
                                       end: Position {
                                        line: 755,
                                        column: 50,
                                       },
                                      },
                                     },
                                    ),
                                    operator: Update,
                                    right: Map(
                                     Map {
                                      recursive: false,
                                      bindings: [
                                       KeyValue(
                                        BindingKeyValue {
                                         from: [
                                          Raw(
                                           PartRaw {
                                            content: "modules",
                                            span: Span {
                                             start: Position {
                                              line: 756,
                                              column: 11,
                                             },
                                             end: Position {
                                              line: 756,
                                              column: 18,
                                             },
                                            },
                                           },
                                          ),
                                         ],
                                         to: Identifier(
                                          Identifier {
                                           id: "m",
                                           span: Span {
                                            start: Position {
                                             line: 756,
                                             column: 21,
                                            },
                                            end: Position {
                                             line: 756,
                                             column: 22,
                                            },
                                           },
                                          },
                                         ),
                                        },
                                       ),
                                      ],
                                      span: Span {
                                       start: Position {
                                        line: 755,
                                        column: 54,
                                       },
                                       end: Position {
                                        line: 757,
                                        column: 10,
                                       },
                                      },
                                     },
                                    ),
                                   },
                                  ),
                                 ],
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 755,
                                 column: 27,
                                },
                                end: Position {
                                 line: 757,
                                 column: 11,
                                },
                               },
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "nestedTypes",
                                span: Span {
                                 start: Position {
                                  line: 758,
                                  column: 9,
                                 },
                                 end: Position {
                                  line: 758,
                                  column: 20,
                                 },
                                },
                               },
                              ),
                             ],
                             to: FunctionApplication(
                              FunctionApplication {
                               function: PropertyAccess(
                                PropertyAccess {
                                 expression: Identifier(
                                  Identifier {
                                   id: "lib",
                                   span: Span {
                                    start: Position {
                                     line: 758,
                                     column: 23,
                                    },
                                    end: Position {
                                     line: 758,
                                     column: 26,
                                    },
                                   },
                                  },
                                 ),
                                 attribute_path: [
                                  Raw(
                                   PartRaw {
                                    content: "optionalAttrs",
                                    span: Span {
                                     start: Position {
                                      line: 758,
                                      column: 27,
                                     },
                                     end: Position {
                                      line: 758,
                                      column: 40,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 default: None,
                                },
                               ),
                               arguments: [
                                BinaryOperation(
                                 BinaryOperation {
                                  left: Identifier(
                                   Identifier {
                                    id: "freeformType",
                                    span: Span {
                                     start: Position {
                                      line: 758,
                                      column: 42,
                                     },
                                     end: Position {
                                      line: 758,
                                      column: 54,
                                     },
                                    },
                                   },
                                  ),
                                  operator: NotEqualTo,
                                  right: Identifier(
                                   Identifier {
                                    id: "null",
                                    span: Span {
                                     start: Position {
                                      line: 758,
                                      column: 58,
                                     },
                                     end: Position {
                                      line: 758,
                                      column: 62,
                                     },
                                    },
                                   },
                                  ),
                                 },
                                ),
                                Map(
                                 Map {
                                  recursive: false,
                                  bindings: [
                                   KeyValue(
                                    BindingKeyValue {
                                     from: [
                                      Raw(
                                       PartRaw {
                                        content: "freeformType",
                                        span: Span {
                                         start: Position {
                                          line: 759,
                                          column: 11,
                                         },
                                         end: Position {
                                          line: 759,
                                          column: 23,
                                         },
                                        },
                                       },
                                      ),
                                     ],
                                     to: Identifier(
                                      Identifier {
                                       id: "freeformType",
                                       span: Span {
                                        start: Position {
                                         line: 759,
                                         column: 26,
                                        },
                                        end: Position {
                                         line: 759,
                                         column: 38,
                                        },
                                       },
                                      },
                                     ),
                                    },
                                   ),
                                  ],
                                  span: Span {
                                   start: Position {
                                    line: 758,
                                    column: 64,
                                   },
                                   end: Position {
                                    line: 760,
                                    column: 10,
                                   },
                                  },
                                 },
                                ),
                               ],
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "functor",
                                span: Span {
                                 start: Position {
                                  line: 761,
                                  column: 9,
                                 },
                                 end: Position {
                                  line: 761,
                                  column: 16,
                                 },
                                },
                               },
                              ),
                             ],
                             to: BinaryOperation(
                              BinaryOperation {
                               left: FunctionApplication(
                                FunctionApplication {
                                 function: Identifier(
                                  Identifier {
                                   id: "defaultFunctor",
                                   span: Span {
                                    start: Position {
                                     line: 761,
                                     column: 19,
                                    },
                                    end: Position {
                                     line: 761,
                                     column: 33,
                                    },
                                   },
                                  },
                                 ),
                                 arguments: [
                                  Identifier(
                                   Identifier {
                                    id: "name",
                                    span: Span {
                                     start: Position {
                                      line: 761,
                                      column: 34,
                                     },
                                     end: Position {
                                      line: 761,
                                      column: 38,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                },
                               ),
                               operator: Update,
                               right: Map(
                                Map {
                                 recursive: false,
                                 bindings: [
                                  KeyValue(
                                   BindingKeyValue {
                                    from: [
                                     Raw(
                                      PartRaw {
                                       content: "type",
                                       span: Span {
                                        start: Position {
                                         line: 762,
                                         column: 11,
                                        },
                                        end: Position {
                                         line: 762,
                                         column: 15,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    to: PropertyAccess(
                                     PropertyAccess {
                                      expression: Identifier(
                                       Identifier {
                                        id: "types",
                                        span: Span {
                                         start: Position {
                                          line: 762,
                                          column: 18,
                                         },
                                         end: Position {
                                          line: 762,
                                          column: 23,
                                         },
                                        },
                                       },
                                      ),
                                      attribute_path: [
                                       Raw(
                                        PartRaw {
                                         content: "submoduleWith",
                                         span: Span {
                                          start: Position {
                                           line: 762,
                                           column: 24,
                                          },
                                          end: Position {
                                           line: 762,
                                           column: 37,
                                          },
                                         },
                                        },
                                       ),
                                      ],
                                      default: None,
                                     },
                                    ),
                                   },
                                  ),
                                  KeyValue(
                                   BindingKeyValue {
                                    from: [
                                     Raw(
                                      PartRaw {
                                       content: "payload",
                                       span: Span {
                                        start: Position {
                                         line: 763,
                                         column: 11,
                                        },
                                        end: Position {
                                         line: 763,
                                         column: 18,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    to: Map(
                                     Map {
                                      recursive: false,
                                      bindings: [
                                       Inherit(
                                        BindingInherit {
                                         from: None,
                                         attributes: [
                                          Raw(
                                           PartRaw {
                                            content: "modules",
                                            span: Span {
                                             start: Position {
                                              line: 764,
                                              column: 21,
                                             },
                                             end: Position {
                                              line: 764,
                                              column: 28,
                                             },
                                            },
                                           },
                                          ),
                                          Raw(
                                           PartRaw {
                                            content: "specialArgs",
                                            span: Span {
                                             start: Position {
                                              line: 764,
                                              column: 29,
                                             },
                                             end: Position {
                                              line: 764,
                                              column: 40,
                                             },
                                            },
                                           },
                                          ),
                                          Raw(
                                           PartRaw {
                                            content: "shorthandOnlyDefinesConfig",
                                            span: Span {
                                             start: Position {
                                              line: 764,
                                              column: 41,
                                             },
                                             end: Position {
                                              line: 764,
                                              column: 67,
                                             },
                                            },
                                           },
                                          ),
                                          Raw(
                                           PartRaw {
                                            content: "description",
                                            span: Span {
                                             start: Position {
                                              line: 764,
                                              column: 68,
                                             },
                                             end: Position {
                                              line: 764,
                                              column: 79,
                                             },
                                            },
                                           },
                                          ),
                                         ],
                                         span: Span {
                                          start: Position {
                                           line: 763,
                                           column: 22,
                                          },
                                          end: Position {
                                           line: 764,
                                           column: 80,
                                          },
                                         },
                                        },
                                       ),
                                      ],
                                      span: Span {
                                       start: Position {
                                        line: 763,
                                        column: 21,
                                       },
                                       end: Position {
                                        line: 765,
                                        column: 12,
                                       },
                                      },
                                     },
                                    ),
                                   },
                                  ),
                                  KeyValue(
                                   BindingKeyValue {
                                    from: [
                                     Raw(
                                      PartRaw {
                                       content: "binOp",
                                       span: Span {
                                        start: Position {
                                         line: 766,
                                         column: 11,
                                        },
                                        end: Position {
                                         line: 766,
                                         column: 16,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    to: Function(
                                     Function {
                                      head: Simple(
                                       FunctionHeadSimple {
                                        identifier: "lhs",
                                       },
                                      ),
                                      body: Function(
                                       Function {
                                        head: Simple(
                                         FunctionHeadSimple {
                                          identifier: "rhs",
                                         },
                                        ),
                                        body: Map(
                                         Map {
                                          recursive: false,
                                          bindings: [
                                           KeyValue(
                                            BindingKeyValue {
                                             from: [
                                              Raw(
                                               PartRaw {
                                                content: "modules",
                                                span: Span {
                                                 start: Position {
                                                  line: 767,
                                                  column: 13,
                                                 },
                                                 end: Position {
                                                  line: 767,
                                                  column: 20,
                                                 },
                                                },
                                               },
                                              ),
                                             ],
                                             to: BinaryOperation(
                                              BinaryOperation {
                                               left: PropertyAccess(
                                                PropertyAccess {
                                                 expression: Identifier(
                                                  Identifier {
                                                   id: "lhs",
                                                   span: Span {
                                                    start: Position {
                                                     line: 767,
                                                     column: 23,
                                                    },
                                                    end: Position {
                                                     line: 767,
                                                     column: 26,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                 attribute_path: [
                                                  Raw(
                                                   PartRaw {
                                                    content: "modules",
                                                    span: Span {
                                                     start: Position {
                                                      line: 767,
                                                      column: 27,
                                                     },
                                                     end: Position {
                                                      line: 767,
                                                      column: 34,
                                                     },
                                                    },
                                                   },
                                                  ),
                                                 ],
                                                 default: None,
                                                },
                                               ),
                                               operator: Concatenation,
                                               right: PropertyAccess(
                                                PropertyAccess {
                                                 expression: Identifier(
                                                  Identifier {
                                                   id: "rhs",
                                                   span: Span {
                                                    start: Position {
                                                     line: 767,
                                                     column: 38,
                                                    },
                                                    end: Position {
                                                     line: 767,
                                                     column: 41,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                 attribute_path: [
                                                  Raw(
                                                   PartRaw {
                                                    content: "modules",
                                                    span: Span {
                                                     start: Position {
                                                      line: 767,
                                                      column: 42,
                                                     },
                                                     end: Position {
                                                      line: 767,
                                                      column: 49,
                                                     },
                                                    },
                                                   },
                                                  ),
                                                 ],
                                                 default: None,
                                                },
                                               ),
                                              },
                                             ),
                                            },
                                           ),
                                           KeyValue(
                                            BindingKeyValue {
                                             from: [
                                              Raw(
                                               PartRaw {
                                                content: "specialArgs",
                                                span: Span {
                                                 start: Position {
                                                  line: 768,
                                                  column: 13,
                                                 },
                                                 end: Position {
                                                  line: 768,
                                                  column: 24,
                                                 },
                                                },
                                               },
                                              ),
                                             ],
                                             to: LetIn(
                                              LetIn {
                                               bindings: [
                                                KeyValue(
                                                 BindingKeyValue {
                                                  from: [
                                                   Raw(
                                                    PartRaw {
                                                     content: "intersecting",
                                                     span: Span {
                                                      start: Position {
                                                       line: 769,
                                                       column: 19,
                                                      },
                                                      end: Position {
                                                       line: 769,
                                                       column: 31,
                                                      },
                                                     },
                                                    },
                                                   ),
                                                  ],
                                                  to: FunctionApplication(
                                                   FunctionApplication {
                                                    function: PropertyAccess(
                                                     PropertyAccess {
                                                      expression: Identifier(
                                                       Identifier {
                                                        id: "builtins",
                                                        span: Span {
                                                         start: Position {
                                                          line: 769,
                                                          column: 34,
                                                         },
                                                         end: Position {
                                                          line: 769,
                                                          column: 42,
                                                         },
                                                        },
                                                       },
                                                      ),
                                                      attribute_path: [
                                                       Raw(
                                                        PartRaw {
                                                         content: "intersectAttrs",
                                                         span: Span {
                                                          start: Position {
                                                           line: 769,
                                                           column: 43,
                                                          },
                                                          end: Position {
                                                           line: 769,
                                                           column: 57,
                                                          },
                                                         },
                                                        },
                                                       ),
                                                      ],
                                                      default: None,
                                                     },
                                                    ),
                                                    arguments: [
                                                     PropertyAccess(
                                                      PropertyAccess {
                                                       expression: Identifier(
                                                        Identifier {
                                                         id: "lhs",
                                                         span: Span {
                                                          start: Position {
                                                           line: 769,
                                                           column: 58,
                                                          },
                                                          end: Position {
                                                           line: 769,
                                                           column: 61,
                                                          },
                                                         },
                                                        },
                                                       ),
                                                       attribute_path: [
                                                        Raw(
                                                         PartRaw {
                                                          content: "specialArgs",
                                                          span: Span {
                                                           start: Position {
                                                            line: 769,
                                                            column: 62,
                                                           },
                                                           end: Position {
                                                            line: 769,
                                                            column: 73,
                                                           },
                                                          },
                                                         },
                                                        ),
                                                       ],
                                                       default: None,
                                                      },
                                                     ),
                                                     PropertyAccess(
                                                      PropertyAccess {
                                                       expression: Identifier(
                                                        Identifier {
                                                         id: "rhs",
                                                         span: Span {
                                                          start: Position {
                                                           line: 769,
                                                           column: 74,
                                                          },
                                                          end: Position {
                                                           line: 769,
                                                           column: 77,
                                                          },
                                                         },
                                                        },
                                                       ),
                                                       attribute_path: [
                                                        Raw(
                                                         PartRaw {
                                                          content: "specialArgs",
                                                          span: Span {
                                                           start: Position {
                                                            line: 769,
                                                            column: 78,
                                                           },
                                                           end: Position {
                                                            line: 769,
                                                            column: 89,
                                                           },
                                                          },
                                                         },
                                                        ),
                                                       ],
                                                       default: None,
                                                      },
                                                     ),
                                                    ],
                                                   },
                                                  ),
                                                 },
                                                ),
                                               ],
                                               target: IfThenElse(
                                                IfThenElse {
                                                 predicate: BinaryOperation(
                                                  BinaryOperation {
                                                   left: Identifier(
                                                    Identifier {
                                                     id: "intersecting",
                                                     span: Span {
                                                      start: Position {
                                                       line: 770,
                                                       column: 21,
                                                      },
                                                      end: Position {
                                                       line: 770,
                                                       column: 33,
                                                      },
                                                     },
                                                    },
                                                   ),
                                                   operator: EqualTo,
                                                   right: Map(
                                                    Map {
                                                     recursive: false,
                                                     bindings: [],
                                                     span: Span {
                                                      start: Position {
                                                       line: 770,
                                                       column: 37,
                                                      },
                                                      end: Position {
                                                       line: 770,
                                                       column: 39,
                                                      },
                                                     },
                                                    },
                                                   ),
                                                  },
                                                 ),
                                                 then: BinaryOperation(
                                                  BinaryOperation {
                                                   left: PropertyAccess(
                                                    PropertyAccess {
                                                     expression: Identifier(
                                                      Identifier {
                                                       id: "lhs",
                                                       span: Span {
                                                        start: Position {
                                                         line: 771,
                                                         column: 20,
                                                        },
                                                        end: Position {
                                                         line: 771,
                                                         column: 23,
                                                        },
                                                       },
                                                      },
                                                     ),
                                                     attribute_path: [
                                                      Raw(
                                                       PartRaw {
                                                        content: "specialArgs",
                                                        span: Span {
                                                         start: Position {
                                                          line: 771,
                                                          column: 24,
                                                         },
                                                         end: Position {
                                                          line: 771,
                                                          column: 35,
                                                         },
                                                        },
                                                       },
                                                      ),
                                                     ],
                                                     default: None,
                                                    },
                                                   ),
                                                   operator: Update,
                                                   right: PropertyAccess(
                                                    PropertyAccess {
                                                     expression: Identifier(
                                                      Identifier {
                                                       id: "rhs",
                                                       span: Span {
                                                        start: Position {
                                                         line: 771,
                                                         column: 39,
                                                        },
                                                        end: Position {
                                                         line: 771,
                                                         column: 42,
                                                        },
                                                       },
                                                      },
                                                     ),
                                                     attribute_path: [
                                                      Raw(
                                                       PartRaw {
                                                        content: "specialArgs",
                                                        span: Span {
                                                         start: Position {
                                                          line: 771,
                                                          column: 43,
                                                         },
                                                         end: Position {
                                                          line: 771,
                                                          column: 54,
                                                         },
                                                        },
                                                       },
                                                      ),
                                                     ],
                                                     default: None,
                                                    },
                                                   ),
                                                  },
                                                 ),
                                                 else_: FunctionApplication(
                                                  FunctionApplication {
                                                   function: Identifier(
                                                    Identifier {
                                                     id: "throw",
                                                     span: Span {
                                                      start: Position {
                                                       line: 772,
                                                       column: 20,
                                                      },
                                                      end: Position {
                                                       line: 772,
                                                       column: 25,
                                                      },
                                                     },
                                                    },
                                                   ),
                                                   arguments: [
                                                    String(
                                                     String_ {
                                                      parts: [
                                                       Raw(
                                                        PartRaw {
                                                         content: "A submoduleWith option is declared multiple times with the same specialArgs \"",
                                                         span: Span {
                                                          start: Position {
                                                           line: 772,
                                                           column: 27,
                                                          },
                                                          end: Position {
                                                           line: 772,
                                                           column: 141,
                                                          },
                                                         },
                                                        },
                                                       ),
                                                       Interpolation(
                                                        PartInterpolation {
                                                         expression: FunctionApplication(
                                                          FunctionApplication {
                                                           function: Identifier(
                                                            Identifier {
                                                             id: "toString",
                                                             span: Span {
                                                              start: Position {
                                                               line: 772,
                                                               column: 107,
                                                              },
                                                              end: Position {
                                                               line: 772,
                                                               column: 115,
                                                              },
                                                             },
                                                            },
                                                           ),
                                                           arguments: [
                                                            FunctionApplication(
                                                             FunctionApplication {
                                                              function: Identifier(
                                                               Identifier {
                                                                id: "attrNames",
                                                                span: Span {
                                                                 start: Position {
                                                                  line: 772,
                                                                  column: 117,
                                                                 },
                                                                 end: Position {
                                                                  line: 772,
                                                                  column: 126,
                                                                 },
                                                                },
                                                               },
                                                              ),
                                                              arguments: [
                                                               Identifier(
                                                                Identifier {
                                                                 id: "intersecting",
                                                                 span: Span {
                                                                  start: Position {
                                                                   line: 772,
                                                                   column: 127,
                                                                  },
                                                                  end: Position {
                                                                   line: 772,
                                                                   column: 139,
                                                                  },
                                                                 },
                                                                },
                                                               ),
                                                              ],
                                                             },
                                                            ),
                                                           ],
                                                          },
                                                         ),
                                                        },
                                                       ),
                                                       Raw(
                                                        PartRaw {
                                                         content: "\"",
                                                         span: Span {
                                                          start: Position {
                                                           line: 772,
                                                           column: 27,
                                                          },
                                                          end: Position {
                                                           line: 772,
                                                           column: 143,
                                                          },
                                                         },
                                                        },
                                                       ),
                                                      ],
                                                      span: Span {
                                                       start: Position {
                                                        line: 772,
                                                        column: 26,
                                                       },
                                                       end: Position {
                                                        line: 772,
                                                        column: 144,
                                                       },
                                                      },
                                                     },
                                                    ),
                                                   ],
                                                  },
                                                 ),
                                                 span: Span {
                                                  start: Position {
                                                   line: 770,
                                                   column: 18,
                                                  },
                                                  end: Position {
                                                   line: 772,
                                                   column: 144,
                                                  },
                                                 },
                                                },
                                               ),
                                               span: Span {
                                                start: Position {
                                                 line: 769,
                                                 column: 15,
                                                },
                                                end: Position {
                                                 line: 772,
                                                 column: 144,
                                                },
                                               },
                                              },
                                             ),
                                            },
                                           ),
                                           KeyValue(
                                            BindingKeyValue {
                                             from: [
                                              Raw(
                                               PartRaw {
                                                content: "shorthandOnlyDefinesConfig",
                                                span: Span {
                                                 start: Position {
                                                  line: 773,
                                                  column: 13,
                                                 },
                                                 end: Position {
                                                  line: 773,
                                                  column: 39,
                                                 },
                                                },
                                               },
                                              ),
                                             ],
                                             to: IfThenElse(
                                              IfThenElse {
                                               predicate: BinaryOperation(
                                                BinaryOperation {
                                                 left: PropertyAccess(
                                                  PropertyAccess {
                                                   expression: Identifier(
                                                    Identifier {
                                                     id: "lhs",
                                                     span: Span {
                                                      start: Position {
                                                       line: 774,
                                                       column: 18,
                                                      },
                                                      end: Position {
                                                       line: 774,
                                                       column: 21,
                                                      },
                                                     },
                                                    },
                                                   ),
                                                   attribute_path: [
                                                    Raw(
                                                     PartRaw {
                                                      content: "shorthandOnlyDefinesConfig",
                                                      span: Span {
                                                       start: Position {
                                                        line: 774,
                                                        column: 22,
                                                       },
                                                       end: Position {
                                                        line: 774,
                                                        column: 48,
                                                       },
                                                      },
                                                     },
                                                    ),
                                                   ],
                                                   default: None,
                                                  },
                                                 ),
                                                 operator: EqualTo,
                                                 right: Identifier(
                                                  Identifier {
                                                   id: "null",
                                                   span: Span {
                                                    start: Position {
                                                     line: 774,
                                                     column: 52,
                                                    },
                                                    end: Position {
                                                     line: 774,
                                                     column: 56,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                },
                                               ),
                                               then: PropertyAccess(
                                                PropertyAccess {
                                                 expression: Identifier(
                                                  Identifier {
                                                   id: "rhs",
                                                   span: Span {
                                                    start: Position {
                                                     line: 775,
                                                     column: 20,
                                                    },
                                                    end: Position {
                                                     line: 775,
                                                     column: 23,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                 attribute_path: [
                                                  Raw(
                                                   PartRaw {
                                                    content: "shorthandOnlyDefinesConfig",
                                                    span: Span {
                                                     start: Position {
                                                      line: 775,
                                                      column: 24,
                                                     },
                                                     end: Position {
                                                      line: 775,
                                                      column: 50,
                                                     },
                                                    },
                                                   },
                                                  ),
                                                 ],
                                                 default: None,
                                                },
                                               ),
                                               else_: IfThenElse(
                                                IfThenElse {
                                                 predicate: BinaryOperation(
                                                  BinaryOperation {
                                                   left: PropertyAccess(
                                                    PropertyAccess {
                                                     expression: Identifier(
                                                      Identifier {
                                                       id: "rhs",
                                                       span: Span {
                                                        start: Position {
                                                         line: 776,
                                                         column: 23,
                                                        },
                                                        end: Position {
                                                         line: 776,
                                                         column: 26,
                                                        },
                                                       },
                                                      },
                                                     ),
                                                     attribute_path: [
                                                      Raw(
                                                       PartRaw {
                                                        content: "shorthandOnlyDefinesConfig",
                                                        span: Span {
                                                         start: Position {
                                                          line: 776,
                                                          column: 27,
                                                         },
                                                         end: Position {
                                                          line: 776,
                                                          column: 53,
                                                         },
                                                        },
                                                       },
                                                      ),
                                                     ],
                                                     default: None,
                                                    },
                                                   ),
                                                   operator: EqualTo,
                                                   right: Identifier(
                                                    Identifier {
                                                     id: "null",
                                                     span: Span {
                                                      start: Position {
                                                       line: 776,
                                                       column: 57,
                                                      },
                                                      end: Position {
                                                       line: 776,
                                                       column: 61,
                                                      },
                                                     },
                                                    },
                                                   ),
                                                  },
                                                 ),
                                                 then: PropertyAccess(
                                                  PropertyAccess {
                                                   expression: Identifier(
                                                    Identifier {
                                                     id: "lhs",
                                                     span: Span {
                                                      start: Position {
                                                       line: 777,
                                                       column: 20,
                                                      },
                                                      end: Position {
                                                       line: 777,
                                                       column: 23,
                                                      },
                                                     },
                                                    },
                                                   ),
                                                   attribute_path: [
                                                    Raw(
                                                     PartRaw {
                                                      content: "shorthandOnlyDefinesConfig",
                                                      span: Span {
                                                       start: Position {
                                                        line: 777,
                                                        column: 24,
                                                       },
                                                       end: Position {
                                                        line: 777,
                                                        column: 50,
                                                       },
                                                      },
                                                     },
                                                    ),
                                                   ],
                                                   default: None,
                                                  },
                                                 ),
                                                 else_: IfThenElse(
                                                  IfThenElse {
                                                   predicate: BinaryOperation(
                                                    BinaryOperation {
                                                     left: PropertyAccess(
                                                      PropertyAccess {
                                                       expression: Identifier(
                                                        Identifier {
                                                         id: "lhs",
                                                         span: Span {
                                                          start: Position {
                                                           line: 778,
                                                           column: 23,
                                                          },
                                                          end: Position {
                                                           line: 778,
                                                           column: 26,
                                                          },
                                                         },
                                                        },
                                                       ),
                                                       attribute_path: [
                                                        Raw(
                                                         PartRaw {
                                                          content: "shorthandOnlyDefinesConfig",
                                                          span: Span {
                                                           start: Position {
                                                            line: 778,
                                                            column: 27,
                                                           },
                                                           end: Position {
                                                            line: 778,
                                                            column: 53,
                                                           },
                                                          },
                                                         },
                                                        ),
                                                       ],
                                                       default: None,
                                                      },
                                                     ),
                                                     operator: EqualTo,
                                                     right: PropertyAccess(
                                                      PropertyAccess {
                                                       expression: Identifier(
                                                        Identifier {
                                                         id: "rhs",
                                                         span: Span {
                                                          start: Position {
                                                           line: 778,
                                                           column: 57,
                                                          },
                                                          end: Position {
                                                           line: 778,
                                                           column: 60,
                                                          },
                                                         },
                                                        },
                                                       ),
                                                       attribute_path: [
                                                        Raw(
                                                         PartRaw {
                                                          content: "shorthandOnlyDefinesConfig",
                                                          span: Span {
                                                           start: Position {
                                                            line: 778,
                                                            column: 61,
                                                           },
                                                           end: Position {
                                                            line: 778,
                                                            column: 87,
                                                           },
                                                          },
                                                         },
                                                        ),
                                                       ],
                                                       default: None,
                                                      },
                                                     ),
                                                    },
                                                   ),
                                                   then: PropertyAccess(
                                                    PropertyAccess {
                                                     expression: Identifier(
                                                      Identifier {
                                                       id: "lhs",
                                                       span: Span {
                                                        start: Position {
                                                         line: 779,
                                                         column: 20,
                                                        },
                                                        end: Position {
                                                         line: 779,
                                                         column: 23,
                                                        },
                                                       },
                                                      },
                                                     ),
                                                     attribute_path: [
                                                      Raw(
                                                       PartRaw {
                                                        content: "shorthandOnlyDefinesConfig",
                                                        span: Span {
                                                         start: Position {
                                                          line: 779,
                                                          column: 24,
                                                         },
                                                         end: Position {
                                                          line: 779,
                                                          column: 50,
                                                         },
                                                        },
                                                       },
                                                      ),
                                                     ],
                                                     default: None,
                                                    },
                                                   ),
                                                   else_: FunctionApplication(
                                                    FunctionApplication {
                                                     function: Identifier(
                                                      Identifier {
                                                       id: "throw",
                                                       span: Span {
                                                        start: Position {
                                                         line: 780,
                                                         column: 20,
                                                        },
                                                        end: Position {
                                                         line: 780,
                                                         column: 25,
                                                        },
                                                       },
                                                      },
                                                     ),
                                                     arguments: [
                                                      String(
                                                       String_ {
                                                        parts: [
                                                         Raw(
                                                          PartRaw {
                                                           content: "A submoduleWith option is declared multiple times with conflicting shorthandOnlyDefinesConfig values",
                                                           span: Span {
                                                            start: Position {
                                                             line: 780,
                                                             column: 27,
                                                            },
                                                            end: Position {
                                                             line: 780,
                                                             column: 127,
                                                            },
                                                           },
                                                          },
                                                         ),
                                                        ],
                                                        span: Span {
                                                         start: Position {
                                                          line: 780,
                                                          column: 26,
                                                         },
                                                         end: Position {
                                                          line: 780,
                                                          column: 128,
                                                         },
                                                        },
                                                       },
                                                      ),
                                                     ],
                                                    },
                                                   ),
                                                   span: Span {
                                                    start: Position {
                                                     line: 778,
                                                     column: 20,
                                                    },
                                                    end: Position {
                                                     line: 780,
                                                     column: 128,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                 span: Span {
                                                  start: Position {
                                                   line: 776,
                                                   column: 20,
                                                  },
                                                  end: Position {
                                                   line: 780,
                                                   column: 128,
                                                  },
                                                 },
                                                },
                                               ),
                                               span: Span {
                                                start: Position {
                                                 line: 774,
                                                 column: 15,
                                                },
                                                end: Position {
                                                 line: 780,
                                                 column: 128,
                                                },
                                               },
                                              },
                                             ),
                                            },
                                           ),
                                           KeyValue(
                                            BindingKeyValue {
                                             from: [
                                              Raw(
                                               PartRaw {
                                                content: "description",
                                                span: Span {
                                                 start: Position {
                                                  line: 781,
                                                  column: 13,
                                                 },
                                                 end: Position {
                                                  line: 781,
                                                  column: 24,
                                                 },
                                                },
                                               },
                                              ),
                                             ],
                                             to: IfThenElse(
                                              IfThenElse {
                                               predicate: BinaryOperation(
                                                BinaryOperation {
                                                 left: PropertyAccess(
                                                  PropertyAccess {
                                                   expression: Identifier(
                                                    Identifier {
                                                     id: "lhs",
                                                     span: Span {
                                                      start: Position {
                                                       line: 782,
                                                       column: 18,
                                                      },
                                                      end: Position {
                                                       line: 782,
                                                       column: 21,
                                                      },
                                                     },
                                                    },
                                                   ),
                                                   attribute_path: [
                                                    Raw(
                                                     PartRaw {
                                                      content: "description",
                                                      span: Span {
                                                       start: Position {
                                                        line: 782,
                                                        column: 22,
                                                       },
                                                       end: Position {
                                                        line: 782,
                                                        column: 33,
                                                       },
                                                      },
                                                     },
                                                    ),
                                                   ],
                                                   default: None,
                                                  },
                                                 ),
                                                 operator: EqualTo,
                                                 right: Identifier(
                                                  Identifier {
                                                   id: "null",
                                                   span: Span {
                                                    start: Position {
                                                     line: 782,
                                                     column: 37,
                                                    },
                                                    end: Position {
                                                     line: 782,
                                                     column: 41,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                },
                                               ),
                                               then: PropertyAccess(
                                                PropertyAccess {
                                                 expression: Identifier(
                                                  Identifier {
                                                   id: "rhs",
                                                   span: Span {
                                                    start: Position {
                                                     line: 783,
                                                     column: 20,
                                                    },
                                                    end: Position {
                                                     line: 783,
                                                     column: 23,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                 attribute_path: [
                                                  Raw(
                                                   PartRaw {
                                                    content: "description",
                                                    span: Span {
                                                     start: Position {
                                                      line: 783,
                                                      column: 24,
                                                     },
                                                     end: Position {
                                                      line: 783,
                                                      column: 35,
                                                     },
                                                    },
                                                   },
                                                  ),
                                                 ],
                                                 default: None,
                                                },
                                               ),
                                               else_: IfThenElse(
                                                IfThenElse {
                                                 predicate: BinaryOperation(
                                                  BinaryOperation {
                                                   left: PropertyAccess(
                                                    PropertyAccess {
                                                     expression: Identifier(
                                                      Identifier {
                                                       id: "rhs",
                                                       span: Span {
                                                        start: Position {
                                                         line: 784,
                                                         column: 23,
                                                        },
                                                        end: Position {
                                                         line: 784,
                                                         column: 26,
                                                        },
                                                       },
                                                      },
                                                     ),
                                                     attribute_path: [
                                                      Raw(
                                                       PartRaw {
                                                        content: "description",
                                                        span: Span {
                                                         start: Position {
                                                          line: 784,
                                                          column: 27,
                                                         },
                                                         end: Position {
                                                          line: 784,
                                                          column: 38,
                                                         },
                                                        },
                                                       },
                                                      ),
                                                     ],
                                                     default: None,
                                                    },
                                                   ),
                                                   operator: EqualTo,
                                                   right: Identifier(
                                                    Identifier {
                                                     id: "null",
                                                     span: Span {
                                                      start: Position {
                                                       line: 784,
                                                       column: 42,
                                                      },
                                                      end: Position {
                                                       line: 784,
                                                       column: 46,
                                                      },
                                                     },
                                                    },
                                                   ),
                                                  },
                                                 ),
                                                 then: PropertyAccess(
                                                  PropertyAccess {
                                                   expression: Identifier(
                                                    Identifier {
                                                     id: "lhs",
                                                     span: Span {
                                                      start: Position {
                                                       line: 785,
                                                       column: 20,
                                                      },
                                                      end: Position {
                                                       line: 785,
                                                       column: 23,
                                                      },
                                                     },
                                                    },
                                                   ),
                                                   attribute_path: [
                                                    Raw(
                                                     PartRaw {
                                                      content: "description",
                                                      span: Span {
                                                       start: Position {
                                                        line: 785,
                                                        column: 24,
                                                       },
                                                       end: Position {
                                                        line: 785,
                                                        column: 35,
                                                       },
                                                      },
                                                     },
                                                    ),
                                                   ],
                                                   default: None,
                                                  },
                                                 ),
                                                 else_: IfThenElse(
                                                  IfThenElse {
                                                   predicate: BinaryOperation(
                                                    BinaryOperation {
                                                     left: PropertyAccess(
                                                      PropertyAccess {
                                                       expression: Identifier(
                                                        Identifier {
                                                         id: "lhs",
                                                         span: Span {
                                                          start: Position {
                                                           line: 786,
                                                           column: 23,
                                                          },
                                                          end: Position {
                                                           line: 786,
                                                           column: 26,
                                                          },
                                                         },
                                                        },
                                                       ),
                                                       attribute_path: [
                                                        Raw(
                                                         PartRaw {
                                                          content: "description",
                                                          span: Span {
                                                           start: Position {
                                                            line: 786,
                                                            column: 27,
                                                           },
                                                           end: Position {
                                                            line: 786,
                                                            column: 38,
                                                           },
                                                          },
                                                         },
                                                        ),
                                                       ],
                                                       default: None,
                                                      },
                                                     ),
                                                     operator: EqualTo,
                                                     right: PropertyAccess(
                                                      PropertyAccess {
                                                       expression: Identifier(
                                                        Identifier {
                                                         id: "rhs",
                                                         span: Span {
                                                          start: Position {
                                                           line: 786,
                                                           column: 42,
                                                          },
                                                          end: Position {
                                                           line: 786,
                                                           column: 45,
                                                          },
                                                         },
                                                        },
                                                       ),
                                                       attribute_path: [
                                                        Raw(
                                                         PartRaw {
                                                          content: "description",
                                                          span: Span {
                                                           start: Position {
                                                            line: 786,
                                                            column: 46,
                                                           },
                                                           end: Position {
                                                            line: 786,
                                                            column: 57,
                                                           },
                                                          },
                                                         },
                                                        ),
                                                       ],
                                                       default: None,
                                                      },
                                                     ),
                                                    },
                                                   ),
                                                   then: PropertyAccess(
                                                    PropertyAccess {
                                                     expression: Identifier(
                                                      Identifier {
                                                       id: "lhs",
                                                       span: Span {
                                                        start: Position {
                                                         line: 787,
                                                         column: 20,
                                                        },
                                                        end: Position {
                                                         line: 787,
                                                         column: 23,
                                                        },
                                                       },
                                                      },
                                                     ),
                                                     attribute_path: [
                                                      Raw(
                                                       PartRaw {
                                                        content: "description",
                                                        span: Span {
                                                         start: Position {
                                                          line: 787,
                                                          column: 24,
                                                         },
                                                         end: Position {
                                                          line: 787,
                                                          column: 35,
                                                         },
                                                        },
                                                       },
                                                      ),
                                                     ],
                                                     default: None,
                                                    },
                                                   ),
                                                   else_: FunctionApplication(
                                                    FunctionApplication {
                                                     function: Identifier(
                                                      Identifier {
                                                       id: "throw",
                                                       span: Span {
                                                        start: Position {
                                                         line: 788,
                                                         column: 20,
                                                        },
                                                        end: Position {
                                                         line: 788,
                                                         column: 25,
                                                        },
                                                       },
                                                      },
                                                     ),
                                                     arguments: [
                                                      String(
                                                       String_ {
                                                        parts: [
                                                         Raw(
                                                          PartRaw {
                                                           content: "A submoduleWith option is declared multiple times with conflicting descriptions",
                                                           span: Span {
                                                            start: Position {
                                                             line: 788,
                                                             column: 27,
                                                            },
                                                            end: Position {
                                                             line: 788,
                                                             column: 106,
                                                            },
                                                           },
                                                          },
                                                         ),
                                                        ],
                                                        span: Span {
                                                         start: Position {
                                                          line: 788,
                                                          column: 26,
                                                         },
                                                         end: Position {
                                                          line: 788,
                                                          column: 107,
                                                         },
                                                        },
                                                       },
                                                      ),
                                                     ],
                                                    },
                                                   ),
                                                   span: Span {
                                                    start: Position {
                                                     line: 786,
                                                     column: 20,
                                                    },
                                                    end: Position {
                                                     line: 788,
                                                     column: 107,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                 span: Span {
                                                  start: Position {
                                                   line: 784,
                                                   column: 20,
                                                  },
                                                  end: Position {
                                                   line: 788,
                                                   column: 107,
                                                  },
                                                 },
                                                },
                                               ),
                                               span: Span {
                                                start: Position {
                                                 line: 782,
                                                 column: 15,
                                                },
                                                end: Position {
                                                 line: 788,
                                                 column: 107,
                                                },
                                               },
                                              },
                                             ),
                                            },
                                           ),
                                          ],
                                          span: Span {
                                           start: Position {
                                            line: 766,
                                            column: 29,
                                           },
                                           end: Position {
                                            line: 789,
                                            column: 12,
                                           },
                                          },
                                         },
                                        ),
                                        span: Span {
                                         start: Position {
                                          line: 766,
                                          column: 24,
                                         },
                                         end: Position {
                                          line: 789,
                                          column: 12,
                                         },
                                        },
                                       },
                                      ),
                                      span: Span {
                                       start: Position {
                                        line: 766,
                                        column: 19,
                                       },
                                       end: Position {
                                        line: 789,
                                        column: 12,
                                       },
                                      },
                                     },
                                    ),
                                   },
                                  ),
                                 ],
                                 span: Span {
                                  start: Position {
                                   line: 761,
                                   column: 42,
                                  },
                                  end: Position {
                                   line: 790,
                                   column: 10,
                                  },
                                 },
                                },
                               ),
                              },
                             ),
                            },
                           ),
                          ],
                          span: Span {
                           start: Position {
                            line: 735,
                            column: 20,
                           },
                           end: Position {
                            line: 791,
                            column: 8,
                           },
                          },
                         },
                        ),
                       ],
                      },
                     ),
                     span: Span {
                      start: Position {
                       line: 699,
                       column: 7,
                      },
                      end: Position {
                       line: 791,
                       column: 8,
                      },
                     },
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 694,
                     column: 7,
                    },
                    end: Position {
                     line: 791,
                     column: 8,
                    },
                   },
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "enum",
                    span: Span {
                     start: Position {
                      line: 794,
                      column: 5,
                     },
                     end: Position {
                      line: 794,
                      column: 9,
                     },
                    },
                   },
                  ),
                 ],
                 to: Function(
                  Function {
                   head: Simple(
                    FunctionHeadSimple {
                     identifier: "values",
                    },
                   ),
                   body: LetIn(
                    LetIn {
                     bindings: [
                      Inherit(
                       BindingInherit {
                        from: Some(
                         PropertyAccess(
                          PropertyAccess {
                           expression: Identifier(
                            Identifier {
                             id: "lib",
                             span: Span {
                              start: Position {
                               line: 796,
                               column: 18,
                              },
                              end: Position {
                               line: 796,
                               column: 21,
                              },
                             },
                            },
                           ),
                           attribute_path: [
                            Raw(
                             PartRaw {
                              content: "lists",
                              span: Span {
                               start: Position {
                                line: 796,
                                column: 22,
                               },
                               end: Position {
                                line: 796,
                                column: 27,
                               },
                              },
                             },
                            ),
                           ],
                           default: None,
                          },
                         ),
                        ),
                        attributes: [
                         Raw(
                          PartRaw {
                           content: "unique",
                           span: Span {
                            start: Position {
                             line: 796,
                             column: 29,
                            },
                            end: Position {
                             line: 796,
                             column: 35,
                            },
                           },
                          },
                         ),
                        ],
                        span: Span {
                         start: Position {
                          line: 795,
                          column: 10,
                         },
                         end: Position {
                          line: 796,
                          column: 36,
                         },
                        },
                       },
                      ),
                      KeyValue(
                       BindingKeyValue {
                        from: [
                         Raw(
                          PartRaw {
                           content: "show",
                           span: Span {
                            start: Position {
                             line: 797,
                             column: 9,
                            },
                            end: Position {
                             line: 797,
                             column: 13,
                            },
                           },
                          },
                         ),
                        ],
                        to: Function(
                         Function {
                          head: Simple(
                           FunctionHeadSimple {
                            identifier: "v",
                           },
                          ),
                          body: IfThenElse(
                           IfThenElse {
                            predicate: FunctionApplication(
                             FunctionApplication {
                              function: PropertyAccess(
                               PropertyAccess {
                                expression: Identifier(
                                 Identifier {
                                  id: "builtins",
                                  span: Span {
                                   start: Position {
                                    line: 798,
                                    column: 19,
                                   },
                                   end: Position {
                                    line: 798,
                                    column: 27,
                                   },
                                  },
                                 },
                                ),
                                attribute_path: [
                                 Raw(
                                  PartRaw {
                                   content: "isString",
                                   span: Span {
                                    start: Position {
                                     line: 798,
                                     column: 28,
                                    },
                                    end: Position {
                                     line: 798,
                                     column: 36,
                                    },
                                   },
                                  },
                                 ),
                                ],
                                default: None,
                               },
                              ),
                              arguments: [
                               Identifier(
                                Identifier {
                                 id: "v",
                                 span: Span {
                                  start: Position {
                                   line: 798,
                                   column: 37,
                                  },
                                  end: Position {
                                   line: 798,
                                   column: 38,
                                  },
                                 },
                                },
                               ),
                              ],
                             },
                            ),
                            then: IndentedString(
                             IndentedString {
                              parts: [
                               Raw(
                                PartRaw {
                                 content: "\"",
                                 span: Span {
                                  start: Position {
                                   line: 798,
                                   column: 46,
                                  },
                                  end: Position {
                                   line: 798,
                                   column: 47,
                                  },
                                 },
                                },
                               ),
                               Interpolation(
                                PartInterpolation {
                                 expression: Identifier(
                                  Identifier {
                                   id: "v",
                                   span: Span {
                                    start: Position {
                                     line: 798,
                                     column: 49,
                                    },
                                    end: Position {
                                     line: 798,
                                     column: 50,
                                    },
                                   },
                                  },
                                 ),
                                },
                               ),
                               Raw(
                                PartRaw {
                                 content: "\"",
                                 span: Span {
                                  start: Position {
                                   line: 798,
                                   column: 46,
                                  },
                                  end: Position {
                                   line: 798,
                                   column: 52,
                                  },
                                 },
                                },
                               ),
                              ],
                              span: Span {
                               start: Position {
                                line: 798,
                                column: 44,
                               },
                               end: Position {
                                line: 798,
                                column: 54,
                               },
                              },
                             },
                            ),
                            else_: IfThenElse(
                             IfThenElse {
                              predicate: FunctionApplication(
                               FunctionApplication {
                                function: PropertyAccess(
                                 PropertyAccess {
                                  expression: Identifier(
                                   Identifier {
                                    id: "builtins",
                                    span: Span {
                                     start: Position {
                                      line: 799,
                                      column: 19,
                                     },
                                     end: Position {
                                      line: 799,
                                      column: 27,
                                     },
                                    },
                                   },
                                  ),
                                  attribute_path: [
                                   Raw(
                                    PartRaw {
                                     content: "isInt",
                                     span: Span {
                                      start: Position {
                                       line: 799,
                                       column: 28,
                                      },
                                      end: Position {
                                       line: 799,
                                       column: 33,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  default: None,
                                 },
                                ),
                                arguments: [
                                 Identifier(
                                  Identifier {
                                   id: "v",
                                   span: Span {
                                    start: Position {
                                     line: 799,
                                     column: 34,
                                    },
                                    end: Position {
                                     line: 799,
                                     column: 35,
                                    },
                                   },
                                  },
                                 ),
                                ],
                               },
                              ),
                              then: FunctionApplication(
                               FunctionApplication {
                                function: PropertyAccess(
                                 PropertyAccess {
                                  expression: Identifier(
                                   Identifier {
                                    id: "builtins",
                                    span: Span {
                                     start: Position {
                                      line: 799,
                                      column: 41,
                                     },
                                     end: Position {
                                      line: 799,
                                      column: 49,
                                     },
                                    },
                                   },
                                  ),
                                  attribute_path: [
                                   Raw(
                                    PartRaw {
                                     content: "toString",
                                     span: Span {
                                      start: Position {
                                       line: 799,
                                       column: 50,
                                      },
                                      end: Position {
                                       line: 799,
                                       column: 58,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  default: None,
                                 },
                                ),
                                arguments: [
                                 Identifier(
                                  Identifier {
                                   id: "v",
                                   span: Span {
                                    start: Position {
                                     line: 799,
                                     column: 59,
                                    },
                                    end: Position {
                                     line: 799,
                                     column: 60,
                                    },
                                   },
                                  },
                                 ),
                                ],
                               },
                              ),
                              else_: IfThenElse(
                               IfThenElse {
                                predicate: FunctionApplication(
                                 FunctionApplication {
                                  function: PropertyAccess(
                                   PropertyAccess {
                                    expression: Identifier(
                                     Identifier {
                                      id: "builtins",
                                      span: Span {
                                       start: Position {
                                        line: 800,
                                        column: 19,
                                       },
                                       end: Position {
                                        line: 800,
                                        column: 27,
                                       },
                                      },
                                     },
                                    ),
                                    attribute_path: [
                                     Raw(
                                      PartRaw {
                                       content: "isBool",
                                       span: Span {
                                        start: Position {
                                         line: 800,
                                         column: 28,
                                        },
                                        end: Position {
                                         line: 800,
                                         column: 34,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    default: None,
                                   },
                                  ),
                                  arguments: [
                                   Identifier(
                                    Identifier {
                                     id: "v",
                                     span: Span {
                                      start: Position {
                                       line: 800,
                                       column: 35,
                                      },
                                      end: Position {
                                       line: 800,
                                       column: 36,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                 },
                                ),
                                then: FunctionApplication(
                                 FunctionApplication {
                                  function: Identifier(
                                   Identifier {
                                    id: "boolToString",
                                    span: Span {
                                     start: Position {
                                      line: 800,
                                      column: 42,
                                     },
                                     end: Position {
                                      line: 800,
                                      column: 54,
                                     },
                                    },
                                   },
                                  ),
                                  arguments: [
                                   Identifier(
                                    Identifier {
                                     id: "v",
                                     span: Span {
                                      start: Position {
                                       line: 800,
                                       column: 55,
                                      },
                                      end: Position {
                                       line: 800,
                                       column: 56,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                 },
                                ),
                                else_: IndentedString(
                                 IndentedString {
                                  parts: [
                                   Raw(
                                    PartRaw {
                                     content: "<",
                                     span: Span {
                                      start: Position {
                                       line: 801,
                                       column: 18,
                                      },
                                      end: Position {
                                       line: 801,
                                       column: 19,
                                      },
                                     },
                                    },
                                   ),
                                   Interpolation(
                                    PartInterpolation {
                                     expression: FunctionApplication(
                                      FunctionApplication {
                                       function: PropertyAccess(
                                        PropertyAccess {
                                         expression: Identifier(
                                          Identifier {
                                           id: "builtins",
                                           span: Span {
                                            start: Position {
                                             line: 801,
                                             column: 21,
                                            },
                                            end: Position {
                                             line: 801,
                                             column: 29,
                                            },
                                           },
                                          },
                                         ),
                                         attribute_path: [
                                          Raw(
                                           PartRaw {
                                            content: "typeOf",
                                            span: Span {
                                             start: Position {
                                              line: 801,
                                              column: 30,
                                             },
                                             end: Position {
                                              line: 801,
                                              column: 36,
                                             },
                                            },
                                           },
                                          ),
                                         ],
                                         default: None,
                                        },
                                       ),
                                       arguments: [
                                        Identifier(
                                         Identifier {
                                          id: "v",
                                          span: Span {
                                           start: Position {
                                            line: 801,
                                            column: 37,
                                           },
                                           end: Position {
                                            line: 801,
                                            column: 38,
                                           },
                                          },
                                         },
                                        ),
                                       ],
                                      },
                                     ),
                                    },
                                   ),
                                   Raw(
                                    PartRaw {
                                     content: ">",
                                     span: Span {
                                      start: Position {
                                       line: 801,
                                       column: 18,
                                      },
                                      end: Position {
                                       line: 801,
                                       column: 40,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  span: Span {
                                   start: Position {
                                    line: 801,
                                    column: 16,
                                   },
                                   end: Position {
                                    line: 801,
                                    column: 42,
                                   },
                                  },
                                 },
                                ),
                                span: Span {
                                 start: Position {
                                  line: 800,
                                  column: 16,
                                 },
                                 end: Position {
                                  line: 801,
                                  column: 42,
                                 },
                                },
                               },
                              ),
                              span: Span {
                               start: Position {
                                line: 799,
                                column: 16,
                               },
                               end: Position {
                                line: 801,
                                column: 42,
                               },
                              },
                             },
                            ),
                            span: Span {
                             start: Position {
                              line: 798,
                              column: 16,
                             },
                             end: Position {
                              line: 801,
                              column: 42,
                             },
                            },
                           },
                          ),
                          span: Span {
                           start: Position {
                            line: 797,
                            column: 16,
                           },
                           end: Position {
                            line: 801,
                            column: 42,
                           },
                          },
                         },
                        ),
                       },
                      ),
                     ],
                     target: FunctionApplication(
                      FunctionApplication {
                       function: Identifier(
                        Identifier {
                         id: "mkOptionType",
                         span: Span {
                          start: Position {
                           line: 803,
                           column: 7,
                          },
                          end: Position {
                           line: 803,
                           column: 19,
                          },
                         },
                        },
                       ),
                       arguments: [
                        Map(
                         Map {
                          recursive: true,
                          bindings: [
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "name",
                                span: Span {
                                 start: Position {
                                  line: 804,
                                  column: 9,
                                 },
                                 end: Position {
                                  line: 804,
                                  column: 13,
                                 },
                                },
                               },
                              ),
                             ],
                             to: String(
                              String_ {
                               parts: [
                                Raw(
                                 PartRaw {
                                  content: "enum",
                                  span: Span {
                                   start: Position {
                                    line: 804,
                                    column: 17,
                                   },
                                   end: Position {
                                    line: 804,
                                    column: 21,
                                   },
                                  },
                                 },
                                ),
                               ],
                               span: Span {
                                start: Position {
                                 line: 804,
                                 column: 16,
                                },
                                end: Position {
                                 line: 804,
                                 column: 22,
                                },
                               },
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "description",
                                span: Span {
                                 start: Position {
                                  line: 805,
                                  column: 9,
                                 },
                                 end: Position {
                                  line: 805,
                                  column: 20,
                                 },
                                },
                               },
                              ),
                             ],
                             to: IfThenElse(
                              IfThenElse {
                               predicate: BinaryOperation(
                                BinaryOperation {
                                 left: Identifier(
                                  Identifier {
                                   id: "values",
                                   span: Span {
                                    start: Position {
                                     line: 810,
                                     column: 14,
                                    },
                                    end: Position {
                                     line: 810,
                                     column: 20,
                                    },
                                   },
                                  },
                                 ),
                                 operator: EqualTo,
                                 right: List(
                                  List {
                                   elements: [],
                                   span: Span {
                                    start: Position {
                                     line: 810,
                                     column: 24,
                                    },
                                    end: Position {
                                     line: 810,
                                     column: 26,
                                    },
                                   },
                                  },
                                 ),
                                },
                               ),
                               then: String(
                                String_ {
                                 parts: [
                                  Raw(
                                   PartRaw {
                                    content: "impossible (empty enum)",
                                    span: Span {
                                     start: Position {
                                      line: 811,
                                      column: 14,
                                     },
                                     end: Position {
                                      line: 811,
                                      column: 37,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 span: Span {
                                  start: Position {
                                   line: 811,
                                   column: 13,
                                  },
                                  end: Position {
                                   line: 811,
                                   column: 38,
                                  },
                                 },
                                },
                               ),
                               else_: IfThenElse(
                                IfThenElse {
                                 predicate: BinaryOperation(
                                  BinaryOperation {
                                   left: FunctionApplication(
                                    FunctionApplication {
                                     function: PropertyAccess(
                                      PropertyAccess {
                                       expression: Identifier(
                                        Identifier {
                                         id: "builtins",
                                         span: Span {
                                          start: Position {
                                           line: 812,
                                           column: 19,
                                          },
                                          end: Position {
                                           line: 812,
                                           column: 27,
                                          },
                                         },
                                        },
                                       ),
                                       attribute_path: [
                                        Raw(
                                         PartRaw {
                                          content: "length",
                                          span: Span {
                                           start: Position {
                                            line: 812,
                                            column: 28,
                                           },
                                           end: Position {
                                            line: 812,
                                            column: 34,
                                           },
                                          },
                                         },
                                        ),
                                       ],
                                       default: None,
                                      },
                                     ),
                                     arguments: [
                                      Identifier(
                                       Identifier {
                                        id: "values",
                                        span: Span {
                                         start: Position {
                                          line: 812,
                                          column: 35,
                                         },
                                         end: Position {
                                          line: 812,
                                          column: 41,
                                         },
                                        },
                                       },
                                      ),
                                     ],
                                    },
                                   ),
                                   operator: EqualTo,
                                   right: Integer(
                                    Integer {
                                     value: "1",
                                     span: Span {
                                      start: Position {
                                       line: 812,
                                       column: 45,
                                      },
                                      end: Position {
                                       line: 812,
                                       column: 46,
                                      },
                                     },
                                    },
                                   ),
                                  },
                                 ),
                                 then: String(
                                  String_ {
                                   parts: [
                                    Raw(
                                     PartRaw {
                                      content: "value ",
                                      span: Span {
                                       start: Position {
                                        line: 813,
                                        column: 14,
                                       },
                                       end: Position {
                                        line: 813,
                                        column: 50,
                                       },
                                      },
                                     },
                                    ),
                                    Interpolation(
                                     PartInterpolation {
                                      expression: FunctionApplication(
                                       FunctionApplication {
                                        function: Identifier(
                                         Identifier {
                                          id: "show",
                                          span: Span {
                                           start: Position {
                                            line: 813,
                                            column: 22,
                                           },
                                           end: Position {
                                            line: 813,
                                            column: 26,
                                           },
                                          },
                                         },
                                        ),
                                        arguments: [
                                         FunctionApplication(
                                          FunctionApplication {
                                           function: PropertyAccess(
                                            PropertyAccess {
                                             expression: Identifier(
                                              Identifier {
                                               id: "builtins",
                                               span: Span {
                                                start: Position {
                                                 line: 813,
                                                 column: 28,
                                                },
                                                end: Position {
                                                 line: 813,
                                                 column: 36,
                                                },
                                               },
                                              },
                                             ),
                                             attribute_path: [
                                              Raw(
                                               PartRaw {
                                                content: "head",
                                                span: Span {
                                                 start: Position {
                                                  line: 813,
                                                  column: 37,
                                                 },
                                                 end: Position {
                                                  line: 813,
                                                  column: 41,
                                                 },
                                                },
                                               },
                                              ),
                                             ],
                                             default: None,
                                            },
                                           ),
                                           arguments: [
                                            Identifier(
                                             Identifier {
                                              id: "values",
                                              span: Span {
                                               start: Position {
                                                line: 813,
                                                column: 42,
                                               },
                                               end: Position {
                                                line: 813,
                                                column: 48,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                          },
                                         ),
                                        ],
                                       },
                                      ),
                                     },
                                    ),
                                    Raw(
                                     PartRaw {
                                      content: " (singular enum)",
                                      span: Span {
                                       start: Position {
                                        line: 813,
                                        column: 14,
                                       },
                                       end: Position {
                                        line: 813,
                                        column: 66,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   span: Span {
                                    start: Position {
                                     line: 813,
                                     column: 13,
                                    },
                                    end: Position {
                                     line: 813,
                                     column: 67,
                                    },
                                   },
                                  },
                                 ),
                                 else_: String(
                                  String_ {
                                   parts: [
                                    Raw(
                                     PartRaw {
                                      content: "one of ",
                                      span: Span {
                                       start: Position {
                                        line: 815,
                                        column: 14,
                                       },
                                       end: Position {
                                        line: 815,
                                        column: 60,
                                       },
                                      },
                                     },
                                    ),
                                    Interpolation(
                                     PartInterpolation {
                                      expression: FunctionApplication(
                                       FunctionApplication {
                                        function: Identifier(
                                         Identifier {
                                          id: "concatMapStringsSep",
                                          span: Span {
                                           start: Position {
                                            line: 815,
                                            column: 23,
                                           },
                                           end: Position {
                                            line: 815,
                                            column: 42,
                                           },
                                          },
                                         },
                                        ),
                                        arguments: [
                                         String(
                                          String_ {
                                           parts: [
                                            Raw(
                                             PartRaw {
                                              content: ", ",
                                              span: Span {
                                               start: Position {
                                                line: 815,
                                                column: 44,
                                               },
                                               end: Position {
                                                line: 815,
                                                column: 46,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                           span: Span {
                                            start: Position {
                                             line: 815,
                                             column: 43,
                                            },
                                            end: Position {
                                             line: 815,
                                             column: 47,
                                            },
                                           },
                                          },
                                         ),
                                         Identifier(
                                          Identifier {
                                           id: "show",
                                           span: Span {
                                            start: Position {
                                             line: 815,
                                             column: 48,
                                            },
                                            end: Position {
                                             line: 815,
                                             column: 52,
                                            },
                                           },
                                          },
                                         ),
                                         Identifier(
                                          Identifier {
                                           id: "values",
                                           span: Span {
                                            start: Position {
                                             line: 815,
                                             column: 53,
                                            },
                                            end: Position {
                                             line: 815,
                                             column: 59,
                                            },
                                           },
                                          },
                                         ),
                                        ],
                                       },
                                      ),
                                     },
                                    ),
                                   ],
                                   span: Span {
                                    start: Position {
                                     line: 815,
                                     column: 13,
                                    },
                                    end: Position {
                                     line: 815,
                                     column: 61,
                                    },
                                   },
                                  },
                                 ),
                                 span: Span {
                                  start: Position {
                                   line: 812,
                                   column: 16,
                                  },
                                  end: Position {
                                   line: 815,
                                   column: 61,
                                  },
                                 },
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 810,
                                 column: 11,
                                },
                                end: Position {
                                 line: 815,
                                 column: 61,
                                },
                               },
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "descriptionClass",
                                span: Span {
                                 start: Position {
                                  line: 816,
                                  column: 9,
                                 },
                                 end: Position {
                                  line: 816,
                                  column: 25,
                                 },
                                },
                               },
                              ),
                             ],
                             to: IfThenElse(
                              IfThenElse {
                               predicate: BinaryOperation(
                                BinaryOperation {
                                 left: FunctionApplication(
                                  FunctionApplication {
                                   function: PropertyAccess(
                                    PropertyAccess {
                                     expression: Identifier(
                                      Identifier {
                                       id: "builtins",
                                       span: Span {
                                        start: Position {
                                         line: 817,
                                         column: 14,
                                        },
                                        end: Position {
                                         line: 817,
                                         column: 22,
                                        },
                                       },
                                      },
                                     ),
                                     attribute_path: [
                                      Raw(
                                       PartRaw {
                                        content: "length",
                                        span: Span {
                                         start: Position {
                                          line: 817,
                                          column: 23,
                                         },
                                         end: Position {
                                          line: 817,
                                          column: 29,
                                         },
                                        },
                                       },
                                      ),
                                     ],
                                     default: None,
                                    },
                                   ),
                                   arguments: [
                                    Identifier(
                                     Identifier {
                                      id: "values",
                                      span: Span {
                                       start: Position {
                                        line: 817,
                                        column: 30,
                                       },
                                       end: Position {
                                        line: 817,
                                        column: 36,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                  },
                                 ),
                                 operator: LessThan,
                                 right: Integer(
                                  Integer {
                                   value: "2",
                                   span: Span {
                                    start: Position {
                                     line: 817,
                                     column: 39,
                                    },
                                    end: Position {
                                     line: 817,
                                     column: 40,
                                    },
                                   },
                                  },
                                 ),
                                },
                               ),
                               then: String(
                                String_ {
                                 parts: [
                                  Raw(
                                   PartRaw {
                                    content: "noun",
                                    span: Span {
                                     start: Position {
                                      line: 818,
                                      column: 17,
                                     },
                                     end: Position {
                                      line: 818,
                                      column: 21,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 span: Span {
                                  start: Position {
                                   line: 818,
                                   column: 16,
                                  },
                                  end: Position {
                                   line: 818,
                                   column: 22,
                                  },
                                 },
                                },
                               ),
                               else_: String(
                                String_ {
                                 parts: [
                                  Raw(
                                   PartRaw {
                                    content: "conjunction",
                                    span: Span {
                                     start: Position {
                                      line: 819,
                                      column: 17,
                                     },
                                     end: Position {
                                      line: 819,
                                      column: 28,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 span: Span {
                                  start: Position {
                                   line: 819,
                                   column: 16,
                                  },
                                  end: Position {
                                   line: 819,
                                   column: 29,
                                  },
                                 },
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 817,
                                 column: 11,
                                },
                                end: Position {
                                 line: 819,
                                 column: 29,
                                },
                               },
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "check",
                                span: Span {
                                 start: Position {
                                  line: 820,
                                  column: 9,
                                 },
                                 end: Position {
                                  line: 820,
                                  column: 14,
                                 },
                                },
                               },
                              ),
                             ],
                             to: FunctionApplication(
                              FunctionApplication {
                               function: Identifier(
                                Identifier {
                                 id: "flip",
                                 span: Span {
                                  start: Position {
                                   line: 820,
                                   column: 17,
                                  },
                                  end: Position {
                                   line: 820,
                                   column: 21,
                                  },
                                 },
                                },
                               ),
                               arguments: [
                                Identifier(
                                 Identifier {
                                  id: "elem",
                                  span: Span {
                                   start: Position {
                                    line: 820,
                                    column: 22,
                                   },
                                   end: Position {
                                    line: 820,
                                    column: 26,
                                   },
                                  },
                                 },
                                ),
                                Identifier(
                                 Identifier {
                                  id: "values",
                                  span: Span {
                                   start: Position {
                                    line: 820,
                                    column: 27,
                                   },
                                   end: Position {
                                    line: 820,
                                    column: 33,
                                   },
                                  },
                                 },
                                ),
                               ],
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "merge",
                                span: Span {
                                 start: Position {
                                  line: 821,
                                  column: 9,
                                 },
                                 end: Position {
                                  line: 821,
                                  column: 14,
                                 },
                                },
                               },
                              ),
                             ],
                             to: Identifier(
                              Identifier {
                               id: "mergeEqualOption",
                               span: Span {
                                start: Position {
                                 line: 821,
                                 column: 17,
                                },
                                end: Position {
                                 line: 821,
                                 column: 33,
                                },
                               },
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "functor",
                                span: Span {
                                 start: Position {
                                  line: 822,
                                  column: 9,
                                 },
                                 end: Position {
                                  line: 822,
                                  column: 16,
                                 },
                                },
                               },
                              ),
                             ],
                             to: BinaryOperation(
                              BinaryOperation {
                               left: FunctionApplication(
                                FunctionApplication {
                                 function: Identifier(
                                  Identifier {
                                   id: "defaultFunctor",
                                   span: Span {
                                    start: Position {
                                     line: 822,
                                     column: 20,
                                    },
                                    end: Position {
                                     line: 822,
                                     column: 34,
                                    },
                                   },
                                  },
                                 ),
                                 arguments: [
                                  Identifier(
                                   Identifier {
                                    id: "name",
                                    span: Span {
                                     start: Position {
                                      line: 822,
                                      column: 35,
                                     },
                                     end: Position {
                                      line: 822,
                                      column: 39,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                },
                               ),
                               operator: Update,
                               right: Map(
                                Map {
                                 recursive: false,
                                 bindings: [
                                  KeyValue(
                                   BindingKeyValue {
                                    from: [
                                     Raw(
                                      PartRaw {
                                       content: "payload",
                                       span: Span {
                                        start: Position {
                                         line: 822,
                                         column: 46,
                                        },
                                        end: Position {
                                         line: 822,
                                         column: 53,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    to: Identifier(
                                     Identifier {
                                      id: "values",
                                      span: Span {
                                       start: Position {
                                        line: 822,
                                        column: 56,
                                       },
                                       end: Position {
                                        line: 822,
                                        column: 62,
                                       },
                                      },
                                     },
                                    ),
                                   },
                                  ),
                                  KeyValue(
                                   BindingKeyValue {
                                    from: [
                                     Raw(
                                      PartRaw {
                                       content: "binOp",
                                       span: Span {
                                        start: Position {
                                         line: 822,
                                         column: 64,
                                        },
                                        end: Position {
                                         line: 822,
                                         column: 69,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    to: Function(
                                     Function {
                                      head: Simple(
                                       FunctionHeadSimple {
                                        identifier: "a",
                                       },
                                      ),
                                      body: Function(
                                       Function {
                                        head: Simple(
                                         FunctionHeadSimple {
                                          identifier: "b",
                                         },
                                        ),
                                        body: FunctionApplication(
                                         FunctionApplication {
                                          function: Identifier(
                                           Identifier {
                                            id: "unique",
                                            span: Span {
                                             start: Position {
                                              line: 822,
                                              column: 78,
                                             },
                                             end: Position {
                                              line: 822,
                                              column: 84,
                                             },
                                            },
                                           },
                                          ),
                                          arguments: [
                                           BinaryOperation(
                                            BinaryOperation {
                                             left: Identifier(
                                              Identifier {
                                               id: "a",
                                               span: Span {
                                                start: Position {
                                                 line: 822,
                                                 column: 86,
                                                },
                                                end: Position {
                                                 line: 822,
                                                 column: 87,
                                                },
                                               },
                                              },
                                             ),
                                             operator: Concatenation,
                                             right: Identifier(
                                              Identifier {
                                               id: "b",
                                               span: Span {
                                                start: Position {
                                                 line: 822,
                                                 column: 91,
                                                },
                                                end: Position {
                                                 line: 822,
                                                 column: 92,
                                                },
                                               },
                                              },
                                             ),
                                            },
                                           ),
                                          ],
                                         },
                                        ),
                                        span: Span {
                                         start: Position {
                                          line: 822,
                                          column: 75,
                                         },
                                         end: Position {
                                          line: 822,
                                          column: 93,
                                         },
                                        },
                                       },
                                      ),
                                      span: Span {
                                       start: Position {
                                        line: 822,
                                        column: 72,
                                       },
                                       end: Position {
                                        line: 822,
                                        column: 93,
                                       },
                                      },
                                     },
                                    ),
                                   },
                                  ),
                                 ],
                                 span: Span {
                                  start: Position {
                                   line: 822,
                                   column: 44,
                                  },
                                  end: Position {
                                   line: 822,
                                   column: 96,
                                  },
                                 },
                                },
                               ),
                              },
                             ),
                            },
                           ),
                          ],
                          span: Span {
                           start: Position {
                            line: 803,
                            column: 20,
                           },
                           end: Position {
                            line: 823,
                            column: 8,
                           },
                          },
                         },
                        ),
                       ],
                      },
                     ),
                     span: Span {
                      start: Position {
                       line: 795,
                       column: 7,
                      },
                      end: Position {
                       line: 823,
                       column: 8,
                      },
                     },
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 794,
                     column: 12,
                    },
                    end: Position {
                     line: 823,
                     column: 8,
                    },
                   },
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "either",
                    span: Span {
                     start: Position {
                      line: 826,
                      column: 5,
                     },
                     end: Position {
                      line: 826,
                      column: 11,
                     },
                    },
                   },
                  ),
                 ],
                 to: Function(
                  Function {
                   head: Simple(
                    FunctionHeadSimple {
                     identifier: "t1",
                    },
                   ),
                   body: Function(
                    Function {
                     head: Simple(
                      FunctionHeadSimple {
                       identifier: "t2",
                      },
                     ),
                     body: FunctionApplication(
                      FunctionApplication {
                       function: Identifier(
                        Identifier {
                         id: "mkOptionType",
                         span: Span {
                          start: Position {
                           line: 826,
                           column: 22,
                          },
                          end: Position {
                           line: 826,
                           column: 34,
                          },
                         },
                        },
                       ),
                       arguments: [
                        Map(
                         Map {
                          recursive: true,
                          bindings: [
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "name",
                                span: Span {
                                 start: Position {
                                  line: 827,
                                  column: 7,
                                 },
                                 end: Position {
                                  line: 827,
                                  column: 11,
                                 },
                                },
                               },
                              ),
                             ],
                             to: String(
                              String_ {
                               parts: [
                                Raw(
                                 PartRaw {
                                  content: "either",
                                  span: Span {
                                   start: Position {
                                    line: 827,
                                    column: 15,
                                   },
                                   end: Position {
                                    line: 827,
                                    column: 21,
                                   },
                                  },
                                 },
                                ),
                               ],
                               span: Span {
                                start: Position {
                                 line: 827,
                                 column: 14,
                                },
                                end: Position {
                                 line: 827,
                                 column: 22,
                                },
                               },
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "description",
                                span: Span {
                                 start: Position {
                                  line: 828,
                                  column: 7,
                                 },
                                 end: Position {
                                  line: 828,
                                  column: 18,
                                 },
                                },
                               },
                              ),
                             ],
                             to: String(
                              String_ {
                               parts: [
                                Interpolation(
                                 PartInterpolation {
                                  expression: FunctionApplication(
                                   FunctionApplication {
                                    function: Identifier(
                                     Identifier {
                                      id: "optionDescriptionPhrase",
                                      span: Span {
                                       start: Position {
                                        line: 828,
                                        column: 24,
                                       },
                                       end: Position {
                                        line: 828,
                                        column: 47,
                                       },
                                      },
                                     },
                                    ),
                                    arguments: [
                                     Function(
                                      Function {
                                       head: Simple(
                                        FunctionHeadSimple {
                                         identifier: "class",
                                        },
                                       ),
                                       body: BinaryOperation(
                                        BinaryOperation {
                                         left: BinaryOperation(
                                          BinaryOperation {
                                           left: Identifier(
                                            Identifier {
                                             id: "class",
                                             span: Span {
                                              start: Position {
                                               line: 828,
                                               column: 56,
                                              },
                                              end: Position {
                                               line: 828,
                                               column: 61,
                                              },
                                             },
                                            },
                                           ),
                                           operator: EqualTo,
                                           right: String(
                                            String_ {
                                             parts: [
                                              Raw(
                                               PartRaw {
                                                content: "noun",
                                                span: Span {
                                                 start: Position {
                                                  line: 828,
                                                  column: 66,
                                                 },
                                                 end: Position {
                                                  line: 828,
                                                  column: 70,
                                                 },
                                                },
                                               },
                                              ),
                                             ],
                                             span: Span {
                                              start: Position {
                                               line: 828,
                                               column: 65,
                                              },
                                              end: Position {
                                               line: 828,
                                               column: 71,
                                              },
                                             },
                                            },
                                           ),
                                          },
                                         ),
                                         operator: LogicalOr,
                                         right: BinaryOperation(
                                          BinaryOperation {
                                           left: Identifier(
                                            Identifier {
                                             id: "class",
                                             span: Span {
                                              start: Position {
                                               line: 828,
                                               column: 75,
                                              },
                                              end: Position {
                                               line: 828,
                                               column: 80,
                                              },
                                             },
                                            },
                                           ),
                                           operator: EqualTo,
                                           right: String(
                                            String_ {
                                             parts: [
                                              Raw(
                                               PartRaw {
                                                content: "conjunction",
                                                span: Span {
                                                 start: Position {
                                                  line: 828,
                                                  column: 85,
                                                 },
                                                 end: Position {
                                                  line: 828,
                                                  column: 96,
                                                 },
                                                },
                                               },
                                              ),
                                             ],
                                             span: Span {
                                              start: Position {
                                               line: 828,
                                               column: 84,
                                              },
                                              end: Position {
                                               line: 828,
                                               column: 97,
                                              },
                                             },
                                            },
                                           ),
                                          },
                                         ),
                                        },
                                       ),
                                       span: Span {
                                        start: Position {
                                         line: 828,
                                         column: 49,
                                        },
                                        end: Position {
                                         line: 828,
                                         column: 97,
                                        },
                                       },
                                      },
                                     ),
                                     Identifier(
                                      Identifier {
                                       id: "t1",
                                       span: Span {
                                        start: Position {
                                         line: 828,
                                         column: 99,
                                        },
                                        end: Position {
                                         line: 828,
                                         column: 101,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                   },
                                  ),
                                 },
                                ),
                                Raw(
                                 PartRaw {
                                  content: " or ",
                                  span: Span {
                                   start: Position {
                                    line: 828,
                                    column: 22,
                                   },
                                   end: Position {
                                    line: 828,
                                    column: 106,
                                   },
                                  },
                                 },
                                ),
                                Interpolation(
                                 PartInterpolation {
                                  expression: FunctionApplication(
                                   FunctionApplication {
                                    function: Identifier(
                                     Identifier {
                                      id: "optionDescriptionPhrase",
                                      span: Span {
                                       start: Position {
                                        line: 828,
                                        column: 108,
                                       },
                                       end: Position {
                                        line: 828,
                                        column: 131,
                                       },
                                      },
                                     },
                                    ),
                                    arguments: [
                                     Function(
                                      Function {
                                       head: Simple(
                                        FunctionHeadSimple {
                                         identifier: "class",
                                        },
                                       ),
                                       body: BinaryOperation(
                                        BinaryOperation {
                                         left: BinaryOperation(
                                          BinaryOperation {
                                           left: BinaryOperation(
                                            BinaryOperation {
                                             left: Identifier(
                                              Identifier {
                                               id: "class",
                                               span: Span {
                                                start: Position {
                                                 line: 828,
                                                 column: 140,
                                                },
                                                end: Position {
                                                 line: 828,
                                                 column: 145,
                                                },
                                               },
                                              },
                                             ),
                                             operator: EqualTo,
                                             right: String(
                                              String_ {
                                               parts: [
                                                Raw(
                                                 PartRaw {
                                                  content: "noun",
                                                  span: Span {
                                                   start: Position {
                                                    line: 828,
                                                    column: 150,
                                                   },
                                                   end: Position {
                                                    line: 828,
                                                    column: 154,
                                                   },
                                                  },
                                                 },
                                                ),
                                               ],
                                               span: Span {
                                                start: Position {
                                                 line: 828,
                                                 column: 149,
                                                },
                                                end: Position {
                                                 line: 828,
                                                 column: 155,
                                                },
                                               },
                                              },
                                             ),
                                            },
                                           ),
                                           operator: LogicalOr,
                                           right: BinaryOperation(
                                            BinaryOperation {
                                             left: Identifier(
                                              Identifier {
                                               id: "class",
                                               span: Span {
                                                start: Position {
                                                 line: 828,
                                                 column: 159,
                                                },
                                                end: Position {
                                                 line: 828,
                                                 column: 164,
                                                },
                                               },
                                              },
                                             ),
                                             operator: EqualTo,
                                             right: String(
                                              String_ {
                                               parts: [
                                                Raw(
                                                 PartRaw {
                                                  content: "conjunction",
                                                  span: Span {
                                                   start: Position {
                                                    line: 828,
                                                    column: 169,
                                                   },
                                                   end: Position {
                                                    line: 828,
                                                    column: 180,
                                                   },
                                                  },
                                                 },
                                                ),
                                               ],
                                               span: Span {
                                                start: Position {
                                                 line: 828,
                                                 column: 168,
                                                },
                                                end: Position {
                                                 line: 828,
                                                 column: 181,
                                                },
                                               },
                                              },
                                             ),
                                            },
                                           ),
                                          },
                                         ),
                                         operator: LogicalOr,
                                         right: BinaryOperation(
                                          BinaryOperation {
                                           left: Identifier(
                                            Identifier {
                                             id: "class",
                                             span: Span {
                                              start: Position {
                                               line: 828,
                                               column: 185,
                                              },
                                              end: Position {
                                               line: 828,
                                               column: 190,
                                              },
                                             },
                                            },
                                           ),
                                           operator: EqualTo,
                                           right: String(
                                            String_ {
                                             parts: [
                                              Raw(
                                               PartRaw {
                                                content: "composite",
                                                span: Span {
                                                 start: Position {
                                                  line: 828,
                                                  column: 195,
                                                 },
                                                 end: Position {
                                                  line: 828,
                                                  column: 204,
                                                 },
                                                },
                                               },
                                              ),
                                             ],
                                             span: Span {
                                              start: Position {
                                               line: 828,
                                               column: 194,
                                              },
                                              end: Position {
                                               line: 828,
                                               column: 205,
                                              },
                                             },
                                            },
                                           ),
                                          },
                                         ),
                                        },
                                       ),
                                       span: Span {
                                        start: Position {
                                         line: 828,
                                         column: 133,
                                        },
                                        end: Position {
                                         line: 828,
                                         column: 205,
                                        },
                                       },
                                      },
                                     ),
                                     Identifier(
                                      Identifier {
                                       id: "t2",
                                       span: Span {
                                        start: Position {
                                         line: 828,
                                         column: 207,
                                        },
                                        end: Position {
                                         line: 828,
                                         column: 209,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                   },
                                  ),
                                 },
                                ),
                               ],
                               span: Span {
                                start: Position {
                                 line: 828,
                                 column: 21,
                                },
                                end: Position {
                                 line: 828,
                                 column: 211,
                                },
                               },
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "descriptionClass",
                                span: Span {
                                 start: Position {
                                  line: 829,
                                  column: 7,
                                 },
                                 end: Position {
                                  line: 829,
                                  column: 23,
                                 },
                                },
                               },
                              ),
                             ],
                             to: String(
                              String_ {
                               parts: [
                                Raw(
                                 PartRaw {
                                  content: "conjunction",
                                  span: Span {
                                   start: Position {
                                    line: 829,
                                    column: 27,
                                   },
                                   end: Position {
                                    line: 829,
                                    column: 38,
                                   },
                                  },
                                 },
                                ),
                               ],
                               span: Span {
                                start: Position {
                                 line: 829,
                                 column: 26,
                                },
                                end: Position {
                                 line: 829,
                                 column: 39,
                                },
                               },
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "check",
                                span: Span {
                                 start: Position {
                                  line: 830,
                                  column: 7,
                                 },
                                 end: Position {
                                  line: 830,
                                  column: 12,
                                 },
                                },
                               },
                              ),
                             ],
                             to: Function(
                              Function {
                               head: Simple(
                                FunctionHeadSimple {
                                 identifier: "x",
                                },
                               ),
                               body: BinaryOperation(
                                BinaryOperation {
                                 left: FunctionApplication(
                                  FunctionApplication {
                                   function: PropertyAccess(
                                    PropertyAccess {
                                     expression: Identifier(
                                      Identifier {
                                       id: "t1",
                                       span: Span {
                                        start: Position {
                                         line: 830,
                                         column: 18,
                                        },
                                        end: Position {
                                         line: 830,
                                         column: 20,
                                        },
                                       },
                                      },
                                     ),
                                     attribute_path: [
                                      Raw(
                                       PartRaw {
                                        content: "check",
                                        span: Span {
                                         start: Position {
                                          line: 830,
                                          column: 21,
                                         },
                                         end: Position {
                                          line: 830,
                                          column: 26,
                                         },
                                        },
                                       },
                                      ),
                                     ],
                                     default: None,
                                    },
                                   ),
                                   arguments: [
                                    Identifier(
                                     Identifier {
                                      id: "x",
                                      span: Span {
                                       start: Position {
                                        line: 830,
                                        column: 27,
                                       },
                                       end: Position {
                                        line: 830,
                                        column: 28,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                  },
                                 ),
                                 operator: LogicalOr,
                                 right: FunctionApplication(
                                  FunctionApplication {
                                   function: PropertyAccess(
                                    PropertyAccess {
                                     expression: Identifier(
                                      Identifier {
                                       id: "t2",
                                       span: Span {
                                        start: Position {
                                         line: 830,
                                         column: 32,
                                        },
                                        end: Position {
                                         line: 830,
                                         column: 34,
                                        },
                                       },
                                      },
                                     ),
                                     attribute_path: [
                                      Raw(
                                       PartRaw {
                                        content: "check",
                                        span: Span {
                                         start: Position {
                                          line: 830,
                                          column: 35,
                                         },
                                         end: Position {
                                          line: 830,
                                          column: 40,
                                         },
                                        },
                                       },
                                      ),
                                     ],
                                     default: None,
                                    },
                                   ),
                                   arguments: [
                                    Identifier(
                                     Identifier {
                                      id: "x",
                                      span: Span {
                                       start: Position {
                                        line: 830,
                                        column: 41,
                                       },
                                       end: Position {
                                        line: 830,
                                        column: 42,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                  },
                                 ),
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 830,
                                 column: 15,
                                },
                                end: Position {
                                 line: 830,
                                 column: 42,
                                },
                               },
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "merge",
                                span: Span {
                                 start: Position {
                                  line: 831,
                                  column: 7,
                                 },
                                 end: Position {
                                  line: 831,
                                  column: 12,
                                 },
                                },
                               },
                              ),
                             ],
                             to: Function(
                              Function {
                               head: Simple(
                                FunctionHeadSimple {
                                 identifier: "loc",
                                },
                               ),
                               body: Function(
                                Function {
                                 head: Simple(
                                  FunctionHeadSimple {
                                   identifier: "defs",
                                  },
                                 ),
                                 body: LetIn(
                                  LetIn {
                                   bindings: [
                                    KeyValue(
                                     BindingKeyValue {
                                      from: [
                                       Raw(
                                        PartRaw {
                                         content: "defList",
                                         span: Span {
                                          start: Position {
                                           line: 833,
                                           column: 11,
                                          },
                                          end: Position {
                                           line: 833,
                                           column: 18,
                                          },
                                         },
                                        },
                                       ),
                                      ],
                                      to: FunctionApplication(
                                       FunctionApplication {
                                        function: Identifier(
                                         Identifier {
                                          id: "map",
                                          span: Span {
                                           start: Position {
                                            line: 833,
                                            column: 21,
                                           },
                                           end: Position {
                                            line: 833,
                                            column: 24,
                                           },
                                          },
                                         },
                                        ),
                                        arguments: [
                                         Function(
                                          Function {
                                           head: Simple(
                                            FunctionHeadSimple {
                                             identifier: "d",
                                            },
                                           ),
                                           body: PropertyAccess(
                                            PropertyAccess {
                                             expression: Identifier(
                                              Identifier {
                                               id: "d",
                                               span: Span {
                                                start: Position {
                                                 line: 833,
                                                 column: 29,
                                                },
                                                end: Position {
                                                 line: 833,
                                                 column: 30,
                                                },
                                               },
                                              },
                                             ),
                                             attribute_path: [
                                              Raw(
                                               PartRaw {
                                                content: "value",
                                                span: Span {
                                                 start: Position {
                                                  line: 833,
                                                  column: 31,
                                                 },
                                                 end: Position {
                                                  line: 833,
                                                  column: 36,
                                                 },
                                                },
                                               },
                                              ),
                                             ],
                                             default: None,
                                            },
                                           ),
                                           span: Span {
                                            start: Position {
                                             line: 833,
                                             column: 26,
                                            },
                                            end: Position {
                                             line: 833,
                                             column: 36,
                                            },
                                           },
                                          },
                                         ),
                                         Identifier(
                                          Identifier {
                                           id: "defs",
                                           span: Span {
                                            start: Position {
                                             line: 833,
                                             column: 38,
                                            },
                                            end: Position {
                                             line: 833,
                                             column: 42,
                                            },
                                           },
                                          },
                                         ),
                                        ],
                                       },
                                      ),
                                     },
                                    ),
                                   ],
                                   target: IfThenElse(
                                    IfThenElse {
                                     predicate: FunctionApplication(
                                      FunctionApplication {
                                       function: Identifier(
                                        Identifier {
                                         id: "all",
                                         span: Span {
                                          start: Position {
                                           line: 835,
                                           column: 16,
                                          },
                                          end: Position {
                                           line: 835,
                                           column: 19,
                                          },
                                         },
                                        },
                                       ),
                                       arguments: [
                                        Function(
                                         Function {
                                          head: Simple(
                                           FunctionHeadSimple {
                                            identifier: "x",
                                           },
                                          ),
                                          body: FunctionApplication(
                                           FunctionApplication {
                                            function: PropertyAccess(
                                             PropertyAccess {
                                              expression: Identifier(
                                               Identifier {
                                                id: "t1",
                                                span: Span {
                                                 start: Position {
                                                  line: 835,
                                                  column: 24,
                                                 },
                                                 end: Position {
                                                  line: 835,
                                                  column: 26,
                                                 },
                                                },
                                               },
                                              ),
                                              attribute_path: [
                                               Raw(
                                                PartRaw {
                                                 content: "check",
                                                 span: Span {
                                                  start: Position {
                                                   line: 835,
                                                   column: 27,
                                                  },
                                                  end: Position {
                                                   line: 835,
                                                   column: 32,
                                                  },
                                                 },
                                                },
                                               ),
                                              ],
                                              default: None,
                                             },
                                            ),
                                            arguments: [
                                             Identifier(
                                              Identifier {
                                               id: "x",
                                               span: Span {
                                                start: Position {
                                                 line: 835,
                                                 column: 33,
                                                },
                                                end: Position {
                                                 line: 835,
                                                 column: 34,
                                                },
                                               },
                                              },
                                             ),
                                            ],
                                           },
                                          ),
                                          span: Span {
                                           start: Position {
                                            line: 835,
                                            column: 21,
                                           },
                                           end: Position {
                                            line: 835,
                                            column: 34,
                                           },
                                          },
                                         },
                                        ),
                                        Identifier(
                                         Identifier {
                                          id: "defList",
                                          span: Span {
                                           start: Position {
                                            line: 835,
                                            column: 36,
                                           },
                                           end: Position {
                                            line: 835,
                                            column: 43,
                                           },
                                          },
                                         },
                                        ),
                                       ],
                                      },
                                     ),
                                     then: FunctionApplication(
                                      FunctionApplication {
                                       function: PropertyAccess(
                                        PropertyAccess {
                                         expression: Identifier(
                                          Identifier {
                                           id: "t1",
                                           span: Span {
                                            start: Position {
                                             line: 836,
                                             column: 21,
                                            },
                                            end: Position {
                                             line: 836,
                                             column: 23,
                                            },
                                           },
                                          },
                                         ),
                                         attribute_path: [
                                          Raw(
                                           PartRaw {
                                            content: "merge",
                                            span: Span {
                                             start: Position {
                                              line: 836,
                                              column: 24,
                                             },
                                             end: Position {
                                              line: 836,
                                              column: 29,
                                             },
                                            },
                                           },
                                          ),
                                         ],
                                         default: None,
                                        },
                                       ),
                                       arguments: [
                                        Identifier(
                                         Identifier {
                                          id: "loc",
                                          span: Span {
                                           start: Position {
                                            line: 836,
                                            column: 30,
                                           },
                                           end: Position {
                                            line: 836,
                                            column: 33,
                                           },
                                          },
                                         },
                                        ),
                                        Identifier(
                                         Identifier {
                                          id: "defs",
                                          span: Span {
                                           start: Position {
                                            line: 836,
                                            column: 34,
                                           },
                                           end: Position {
                                            line: 836,
                                            column: 38,
                                           },
                                          },
                                         },
                                        ),
                                       ],
                                      },
                                     ),
                                     else_: IfThenElse(
                                      IfThenElse {
                                       predicate: FunctionApplication(
                                        FunctionApplication {
                                         function: Identifier(
                                          Identifier {
                                           id: "all",
                                           span: Span {
                                            start: Position {
                                             line: 837,
                                             column: 19,
                                            },
                                            end: Position {
                                             line: 837,
                                             column: 22,
                                            },
                                           },
                                          },
                                         ),
                                         arguments: [
                                          Function(
                                           Function {
                                            head: Simple(
                                             FunctionHeadSimple {
                                              identifier: "x",
                                             },
                                            ),
                                            body: FunctionApplication(
                                             FunctionApplication {
                                              function: PropertyAccess(
                                               PropertyAccess {
                                                expression: Identifier(
                                                 Identifier {
                                                  id: "t2",
                                                  span: Span {
                                                   start: Position {
                                                    line: 837,
                                                    column: 27,
                                                   },
                                                   end: Position {
                                                    line: 837,
                                                    column: 29,
                                                   },
                                                  },
                                                 },
                                                ),
                                                attribute_path: [
                                                 Raw(
                                                  PartRaw {
                                                   content: "check",
                                                   span: Span {
                                                    start: Position {
                                                     line: 837,
                                                     column: 30,
                                                    },
                                                    end: Position {
                                                     line: 837,
                                                     column: 35,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                ],
                                                default: None,
                                               },
                                              ),
                                              arguments: [
                                               Identifier(
                                                Identifier {
                                                 id: "x",
                                                 span: Span {
                                                  start: Position {
                                                   line: 837,
                                                   column: 36,
                                                  },
                                                  end: Position {
                                                   line: 837,
                                                   column: 37,
                                                  },
                                                 },
                                                },
                                               ),
                                              ],
                                             },
                                            ),
                                            span: Span {
                                             start: Position {
                                              line: 837,
                                              column: 24,
                                             },
                                             end: Position {
                                              line: 837,
                                              column: 37,
                                             },
                                            },
                                           },
                                          ),
                                          Identifier(
                                           Identifier {
                                            id: "defList",
                                            span: Span {
                                             start: Position {
                                              line: 837,
                                              column: 39,
                                             },
                                             end: Position {
                                              line: 837,
                                              column: 46,
                                             },
                                            },
                                           },
                                          ),
                                         ],
                                        },
                                       ),
                                       then: FunctionApplication(
                                        FunctionApplication {
                                         function: PropertyAccess(
                                          PropertyAccess {
                                           expression: Identifier(
                                            Identifier {
                                             id: "t2",
                                             span: Span {
                                              start: Position {
                                               line: 838,
                                               column: 21,
                                              },
                                              end: Position {
                                               line: 838,
                                               column: 23,
                                              },
                                             },
                                            },
                                           ),
                                           attribute_path: [
                                            Raw(
                                             PartRaw {
                                              content: "merge",
                                              span: Span {
                                               start: Position {
                                                line: 838,
                                                column: 24,
                                               },
                                               end: Position {
                                                line: 838,
                                                column: 29,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                           default: None,
                                          },
                                         ),
                                         arguments: [
                                          Identifier(
                                           Identifier {
                                            id: "loc",
                                            span: Span {
                                             start: Position {
                                              line: 838,
                                              column: 30,
                                             },
                                             end: Position {
                                              line: 838,
                                              column: 33,
                                             },
                                            },
                                           },
                                          ),
                                          Identifier(
                                           Identifier {
                                            id: "defs",
                                            span: Span {
                                             start: Position {
                                              line: 838,
                                              column: 34,
                                             },
                                             end: Position {
                                              line: 838,
                                              column: 38,
                                             },
                                            },
                                           },
                                          ),
                                         ],
                                        },
                                       ),
                                       else_: FunctionApplication(
                                        FunctionApplication {
                                         function: Identifier(
                                          Identifier {
                                           id: "mergeOneOption",
                                           span: Span {
                                            start: Position {
                                             line: 839,
                                             column: 16,
                                            },
                                            end: Position {
                                             line: 839,
                                             column: 30,
                                            },
                                           },
                                          },
                                         ),
                                         arguments: [
                                          Identifier(
                                           Identifier {
                                            id: "loc",
                                            span: Span {
                                             start: Position {
                                              line: 839,
                                              column: 31,
                                             },
                                             end: Position {
                                              line: 839,
                                              column: 34,
                                             },
                                            },
                                           },
                                          ),
                                          Identifier(
                                           Identifier {
                                            id: "defs",
                                            span: Span {
                                             start: Position {
                                              line: 839,
                                              column: 35,
                                             },
                                             end: Position {
                                              line: 839,
                                              column: 39,
                                             },
                                            },
                                           },
                                          ),
                                         ],
                                        },
                                       ),
                                       span: Span {
                                        start: Position {
                                         line: 837,
                                         column: 16,
                                        },
                                        end: Position {
                                         line: 839,
                                         column: 39,
                                        },
                                       },
                                      },
                                     ),
                                     span: Span {
                                      start: Position {
                                       line: 835,
                                       column: 11,
                                      },
                                      end: Position {
                                       line: 839,
                                       column: 39,
                                      },
                                     },
                                    },
                                   ),
                                   span: Span {
                                    start: Position {
                                     line: 832,
                                     column: 9,
                                    },
                                    end: Position {
                                     line: 839,
                                     column: 39,
                                    },
                                   },
                                  },
                                 ),
                                 span: Span {
                                  start: Position {
                                   line: 831,
                                   column: 20,
                                  },
                                  end: Position {
                                   line: 839,
                                   column: 39,
                                  },
                                 },
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 831,
                                 column: 15,
                                },
                                end: Position {
                                 line: 839,
                                 column: 39,
                                },
                               },
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "typeMerge",
                                span: Span {
                                 start: Position {
                                  line: 840,
                                  column: 7,
                                 },
                                 end: Position {
                                  line: 840,
                                  column: 16,
                                 },
                                },
                               },
                              ),
                             ],
                             to: Function(
                              Function {
                               head: Simple(
                                FunctionHeadSimple {
                                 identifier: "f'",
                                },
                               ),
                               body: LetIn(
                                LetIn {
                                 bindings: [
                                  KeyValue(
                                   BindingKeyValue {
                                    from: [
                                     Raw(
                                      PartRaw {
                                       content: "mt1",
                                       span: Span {
                                        start: Position {
                                         line: 841,
                                         column: 13,
                                        },
                                        end: Position {
                                         line: 841,
                                         column: 16,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    to: FunctionApplication(
                                     FunctionApplication {
                                      function: PropertyAccess(
                                       PropertyAccess {
                                        expression: Identifier(
                                         Identifier {
                                          id: "t1",
                                          span: Span {
                                           start: Position {
                                            line: 841,
                                            column: 19,
                                           },
                                           end: Position {
                                            line: 841,
                                            column: 21,
                                           },
                                          },
                                         },
                                        ),
                                        attribute_path: [
                                         Raw(
                                          PartRaw {
                                           content: "typeMerge",
                                           span: Span {
                                            start: Position {
                                             line: 841,
                                             column: 22,
                                            },
                                            end: Position {
                                             line: 841,
                                             column: 31,
                                            },
                                           },
                                          },
                                         ),
                                        ],
                                        default: None,
                                       },
                                      ),
                                      arguments: [
                                       PropertyAccess(
                                        PropertyAccess {
                                         expression: FunctionApplication(
                                          FunctionApplication {
                                           function: Identifier(
                                            Identifier {
                                             id: "elemAt",
                                             span: Span {
                                              start: Position {
                                               line: 841,
                                               column: 33,
                                              },
                                              end: Position {
                                               line: 841,
                                               column: 39,
                                              },
                                             },
                                            },
                                           ),
                                           arguments: [
                                            PropertyAccess(
                                             PropertyAccess {
                                              expression: Identifier(
                                               Identifier {
                                                id: "f'",
                                                span: Span {
                                                 start: Position {
                                                  line: 841,
                                                  column: 40,
                                                 },
                                                 end: Position {
                                                  line: 841,
                                                  column: 42,
                                                 },
                                                },
                                               },
                                              ),
                                              attribute_path: [
                                               Raw(
                                                PartRaw {
                                                 content: "wrapped",
                                                 span: Span {
                                                  start: Position {
                                                   line: 841,
                                                   column: 43,
                                                  },
                                                  end: Position {
                                                   line: 841,
                                                   column: 50,
                                                  },
                                                 },
                                                },
                                               ),
                                              ],
                                              default: None,
                                             },
                                            ),
                                            Integer(
                                             Integer {
                                              value: "0",
                                              span: Span {
                                               start: Position {
                                                line: 841,
                                                column: 51,
                                               },
                                               end: Position {
                                                line: 841,
                                                column: 52,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                          },
                                         ),
                                         attribute_path: [
                                          Raw(
                                           PartRaw {
                                            content: "functor",
                                            span: Span {
                                             start: Position {
                                              line: 841,
                                              column: 54,
                                             },
                                             end: Position {
                                              line: 841,
                                              column: 61,
                                             },
                                            },
                                           },
                                          ),
                                         ],
                                         default: None,
                                        },
                                       ),
                                      ],
                                     },
                                    ),
                                   },
                                  ),
                                  KeyValue(
                                   BindingKeyValue {
                                    from: [
                                     Raw(
                                      PartRaw {
                                       content: "mt2",
                                       span: Span {
                                        start: Position {
                                         line: 842,
                                         column: 13,
                                        },
                                        end: Position {
                                         line: 842,
                                         column: 16,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    to: FunctionApplication(
                                     FunctionApplication {
                                      function: PropertyAccess(
                                       PropertyAccess {
                                        expression: Identifier(
                                         Identifier {
                                          id: "t2",
                                          span: Span {
                                           start: Position {
                                            line: 842,
                                            column: 19,
                                           },
                                           end: Position {
                                            line: 842,
                                            column: 21,
                                           },
                                          },
                                         },
                                        ),
                                        attribute_path: [
                                         Raw(
                                          PartRaw {
                                           content: "typeMerge",
                                           span: Span {
                                            start: Position {
                                             line: 842,
                                             column: 22,
                                            },
                                            end: Position {
                                             line: 842,
                                             column: 31,
                                            },
                                           },
                                          },
                                         ),
                                        ],
                                        default: None,
                                       },
                                      ),
                                      arguments: [
                                       PropertyAccess(
                                        PropertyAccess {
                                         expression: FunctionApplication(
                                          FunctionApplication {
                                           function: Identifier(
                                            Identifier {
                                             id: "elemAt",
                                             span: Span {
                                              start: Position {
                                               line: 842,
                                               column: 33,
                                              },
                                              end: Position {
                                               line: 842,
                                               column: 39,
                                              },
                                             },
                                            },
                                           ),
                                           arguments: [
                                            PropertyAccess(
                                             PropertyAccess {
                                              expression: Identifier(
                                               Identifier {
                                                id: "f'",
                                                span: Span {
                                                 start: Position {
                                                  line: 842,
                                                  column: 40,
                                                 },
                                                 end: Position {
                                                  line: 842,
                                                  column: 42,
                                                 },
                                                },
                                               },
                                              ),
                                              attribute_path: [
                                               Raw(
                                                PartRaw {
                                                 content: "wrapped",
                                                 span: Span {
                                                  start: Position {
                                                   line: 842,
                                                   column: 43,
                                                  },
                                                  end: Position {
                                                   line: 842,
                                                   column: 50,
                                                  },
                                                 },
                                                },
                                               ),
                                              ],
                                              default: None,
                                             },
                                            ),
                                            Integer(
                                             Integer {
                                              value: "1",
                                              span: Span {
                                               start: Position {
                                                line: 842,
                                                column: 51,
                                               },
                                               end: Position {
                                                line: 842,
                                                column: 52,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                          },
                                         ),
                                         attribute_path: [
                                          Raw(
                                           PartRaw {
                                            content: "functor",
                                            span: Span {
                                             start: Position {
                                              line: 842,
                                              column: 54,
                                             },
                                             end: Position {
                                              line: 842,
                                              column: 61,
                                             },
                                            },
                                           },
                                          ),
                                         ],
                                         default: None,
                                        },
                                       ),
                                      ],
                                     },
                                    ),
                                   },
                                  ),
                                 ],
                                 target: IfThenElse(
                                  IfThenElse {
                                   predicate: BinaryOperation(
                                    BinaryOperation {
                                     left: BinaryOperation(
                                      BinaryOperation {
                                       left: BinaryOperation(
                                        BinaryOperation {
                                         left: Identifier(
                                          Identifier {
                                           id: "name",
                                           span: Span {
                                            start: Position {
                                             line: 844,
                                             column: 16,
                                            },
                                            end: Position {
                                             line: 844,
                                             column: 20,
                                            },
                                           },
                                          },
                                         ),
                                         operator: EqualTo,
                                         right: PropertyAccess(
                                          PropertyAccess {
                                           expression: Identifier(
                                            Identifier {
                                             id: "f'",
                                             span: Span {
                                              start: Position {
                                               line: 844,
                                               column: 24,
                                              },
                                              end: Position {
                                               line: 844,
                                               column: 26,
                                              },
                                             },
                                            },
                                           ),
                                           attribute_path: [
                                            Raw(
                                             PartRaw {
                                              content: "name",
                                              span: Span {
                                               start: Position {
                                                line: 844,
                                                column: 27,
                                               },
                                               end: Position {
                                                line: 844,
                                                column: 31,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                           default: None,
                                          },
                                         ),
                                        },
                                       ),
                                       operator: LogicalAnd,
                                       right: BinaryOperation(
                                        BinaryOperation {
                                         left: Identifier(
                                          Identifier {
                                           id: "mt1",
                                           span: Span {
                                            start: Position {
                                             line: 844,
                                             column: 37,
                                            },
                                            end: Position {
                                             line: 844,
                                             column: 40,
                                            },
                                           },
                                          },
                                         ),
                                         operator: NotEqualTo,
                                         right: Identifier(
                                          Identifier {
                                           id: "null",
                                           span: Span {
                                            start: Position {
                                             line: 844,
                                             column: 44,
                                            },
                                            end: Position {
                                             line: 844,
                                             column: 48,
                                            },
                                           },
                                          },
                                         ),
                                        },
                                       ),
                                      },
                                     ),
                                     operator: LogicalAnd,
                                     right: BinaryOperation(
                                      BinaryOperation {
                                       left: Identifier(
                                        Identifier {
                                         id: "mt2",
                                         span: Span {
                                          start: Position {
                                           line: 844,
                                           column: 54,
                                          },
                                          end: Position {
                                           line: 844,
                                           column: 57,
                                          },
                                         },
                                        },
                                       ),
                                       operator: NotEqualTo,
                                       right: Identifier(
                                        Identifier {
                                         id: "null",
                                         span: Span {
                                          start: Position {
                                           line: 844,
                                           column: 61,
                                          },
                                          end: Position {
                                           line: 844,
                                           column: 65,
                                          },
                                         },
                                        },
                                       ),
                                      },
                                     ),
                                    },
                                   ),
                                   then: FunctionApplication(
                                    FunctionApplication {
                                     function: PropertyAccess(
                                      PropertyAccess {
                                       expression: Identifier(
                                        Identifier {
                                         id: "functor",
                                         span: Span {
                                          start: Position {
                                           line: 845,
                                           column: 17,
                                          },
                                          end: Position {
                                           line: 845,
                                           column: 24,
                                          },
                                         },
                                        },
                                       ),
                                       attribute_path: [
                                        Raw(
                                         PartRaw {
                                          content: "type",
                                          span: Span {
                                           start: Position {
                                            line: 845,
                                            column: 25,
                                           },
                                           end: Position {
                                            line: 845,
                                            column: 29,
                                           },
                                          },
                                         },
                                        ),
                                       ],
                                       default: None,
                                      },
                                     ),
                                     arguments: [
                                      Identifier(
                                       Identifier {
                                        id: "mt1",
                                        span: Span {
                                         start: Position {
                                          line: 845,
                                          column: 30,
                                         },
                                         end: Position {
                                          line: 845,
                                          column: 33,
                                         },
                                        },
                                       },
                                      ),
                                      Identifier(
                                       Identifier {
                                        id: "mt2",
                                        span: Span {
                                         start: Position {
                                          line: 845,
                                          column: 34,
                                         },
                                         end: Position {
                                          line: 845,
                                          column: 37,
                                         },
                                        },
                                       },
                                      ),
                                     ],
                                    },
                                   ),
                                   else_: Identifier(
                                    Identifier {
                                     id: "null",
                                     span: Span {
                                      start: Position {
                                       line: 846,
                                       column: 17,
                                      },
                                      end: Position {
                                       line: 846,
                                       column: 21,
                                      },
                                     },
                                    },
                                   ),
                                   span: Span {
                                    start: Position {
                                     line: 844,
                                     column: 12,
                                    },
                                    end: Position {
                                     line: 846,
                                     column: 21,
                                    },
                                   },
                                  },
                                 ),
                                 span: Span {
                                  start: Position {
                                   line: 841,
                                   column: 9,
                                  },
                                  end: Position {
                                   line: 846,
                                   column: 21,
                                  },
                                 },
                                },
                               ),
                               span: Span {
                                start: Position {
                                 line: 840,
                                 column: 19,
                                },
                                end: Position {
                                 line: 846,
                                 column: 21,
                                },
                               },
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "functor",
                                span: Span {
                                 start: Position {
                                  line: 847,
                                  column: 7,
                                 },
                                 end: Position {
                                  line: 847,
                                  column: 14,
                                 },
                                },
                               },
                              ),
                             ],
                             to: BinaryOperation(
                              BinaryOperation {
                               left: FunctionApplication(
                                FunctionApplication {
                                 function: Identifier(
                                  Identifier {
                                   id: "defaultFunctor",
                                   span: Span {
                                    start: Position {
                                     line: 847,
                                     column: 18,
                                    },
                                    end: Position {
                                     line: 847,
                                     column: 32,
                                    },
                                   },
                                  },
                                 ),
                                 arguments: [
                                  Identifier(
                                   Identifier {
                                    id: "name",
                                    span: Span {
                                     start: Position {
                                      line: 847,
                                      column: 33,
                                     },
                                     end: Position {
                                      line: 847,
                                      column: 37,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                },
                               ),
                               operator: Update,
                               right: Map(
                                Map {
                                 recursive: false,
                                 bindings: [
                                  KeyValue(
                                   BindingKeyValue {
                                    from: [
                                     Raw(
                                      PartRaw {
                                       content: "wrapped",
                                       span: Span {
                                        start: Position {
                                         line: 847,
                                         column: 44,
                                        },
                                        end: Position {
                                         line: 847,
                                         column: 51,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    to: List(
                                     List {
                                      elements: [
                                       Identifier(
                                        Identifier {
                                         id: "t1",
                                         span: Span {
                                          start: Position {
                                           line: 847,
                                           column: 56,
                                          },
                                          end: Position {
                                           line: 847,
                                           column: 58,
                                          },
                                         },
                                        },
                                       ),
                                       Identifier(
                                        Identifier {
                                         id: "t2",
                                         span: Span {
                                          start: Position {
                                           line: 847,
                                           column: 59,
                                          },
                                          end: Position {
                                           line: 847,
                                           column: 61,
                                          },
                                         },
                                        },
                                       ),
                                      ],
                                      span: Span {
                                       start: Position {
                                        line: 847,
                                        column: 54,
                                       },
                                       end: Position {
                                        line: 847,
                                        column: 63,
                                       },
                                      },
                                     },
                                    ),
                                   },
                                  ),
                                 ],
                                 span: Span {
                                  start: Position {
                                   line: 847,
                                   column: 42,
                                  },
                                  end: Position {
                                   line: 847,
                                   column: 66,
                                  },
                                 },
                                },
                               ),
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "nestedTypes",
                                span: Span {
                                 start: Position {
                                  line: 848,
                                  column: 7,
                                 },
                                 end: Position {
                                  line: 848,
                                  column: 18,
                                 },
                                },
                               },
                              ),
                              Raw(
                               PartRaw {
                                content: "left",
                                span: Span {
                                 start: Position {
                                  line: 848,
                                  column: 19,
                                 },
                                 end: Position {
                                  line: 848,
                                  column: 23,
                                 },
                                },
                               },
                              ),
                             ],
                             to: Identifier(
                              Identifier {
                               id: "t1",
                               span: Span {
                                start: Position {
                                 line: 848,
                                 column: 26,
                                },
                                end: Position {
                                 line: 848,
                                 column: 28,
                                },
                               },
                              },
                             ),
                            },
                           ),
                           KeyValue(
                            BindingKeyValue {
                             from: [
                              Raw(
                               PartRaw {
                                content: "nestedTypes",
                                span: Span {
                                 start: Position {
                                  line: 849,
                                  column: 7,
                                 },
                                 end: Position {
                                  line: 849,
                                  column: 18,
                                 },
                                },
                               },
                              ),
                              Raw(
                               PartRaw {
                                content: "right",
                                span: Span {
                                 start: Position {
                                  line: 849,
                                  column: 19,
                                 },
                                 end: Position {
                                  line: 849,
                                  column: 24,
                                 },
                                },
                               },
                              ),
                             ],
                             to: Identifier(
                              Identifier {
                               id: "t2",
                               span: Span {
                                start: Position {
                                 line: 849,
                                 column: 27,
                                },
                                end: Position {
                                 line: 849,
                                 column: 29,
                                },
                               },
                              },
                             ),
                            },
                           ),
                          ],
                          span: Span {
                           start: Position {
                            line: 826,
                            column: 35,
                           },
                           end: Position {
                            line: 850,
                            column: 6,
                           },
                          },
                         },
                        ),
                       ],
                      },
                     ),
                     span: Span {
                      start: Position {
                       line: 826,
                       column: 18,
                      },
                      end: Position {
                       line: 850,
                       column: 6,
                      },
                     },
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 826,
                     column: 14,
                    },
                    end: Position {
                     line: 850,
                     column: 6,
                    },
                   },
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "oneOf",
                    span: Span {
                     start: Position {
                      line: 853,
                      column: 5,
                     },
                     end: Position {
                      line: 853,
                      column: 10,
                     },
                    },
                   },
                  ),
                 ],
                 to: Function(
                  Function {
                   head: Simple(
                    FunctionHeadSimple {
                     identifier: "ts",
                    },
                   ),
                   body: LetIn(
                    LetIn {
                     bindings: [
                      KeyValue(
                       BindingKeyValue {
                        from: [
                         Raw(
                          PartRaw {
                           content: "head'",
                           span: Span {
                            start: Position {
                             line: 855,
                             column: 9,
                            },
                            end: Position {
                             line: 855,
                             column: 14,
                            },
                           },
                          },
                         ),
                        ],
                        to: IfThenElse(
                         IfThenElse {
                          predicate: BinaryOperation(
                           BinaryOperation {
                            left: Identifier(
                             Identifier {
                              id: "ts",
                              span: Span {
                               start: Position {
                                line: 855,
                                column: 20,
                               },
                               end: Position {
                                line: 855,
                                column: 22,
                               },
                              },
                             },
                            ),
                            operator: EqualTo,
                            right: List(
                             List {
                              elements: [],
                              span: Span {
                               start: Position {
                                line: 855,
                                column: 26,
                               },
                               end: Position {
                                line: 855,
                                column: 28,
                               },
                              },
                             },
                            ),
                           },
                          ),
                          then: FunctionApplication(
                           FunctionApplication {
                            function: Identifier(
                             Identifier {
                              id: "throw",
                              span: Span {
                               start: Position {
                                line: 855,
                                column: 34,
                               },
                               end: Position {
                                line: 855,
                                column: 39,
                               },
                              },
                             },
                            ),
                            arguments: [
                             String(
                              String_ {
                               parts: [
                                Raw(
                                 PartRaw {
                                  content: "types.oneOf needs to get at least one type in its argument",
                                  span: Span {
                                   start: Position {
                                    line: 855,
                                    column: 41,
                                   },
                                   end: Position {
                                    line: 855,
                                    column: 99,
                                   },
                                  },
                                 },
                                ),
                               ],
                               span: Span {
                                start: Position {
                                 line: 855,
                                 column: 40,
                                },
                                end: Position {
                                 line: 855,
                                 column: 100,
                                },
                               },
                              },
                             ),
                            ],
                           },
                          ),
                          else_: FunctionApplication(
                           FunctionApplication {
                            function: Identifier(
                             Identifier {
                              id: "head",
                              span: Span {
                               start: Position {
                                line: 855,
                                column: 106,
                               },
                               end: Position {
                                line: 855,
                                column: 110,
                               },
                              },
                             },
                            ),
                            arguments: [
                             Identifier(
                              Identifier {
                               id: "ts",
                               span: Span {
                                start: Position {
                                 line: 855,
                                 column: 111,
                                },
                                end: Position {
                                 line: 855,
                                 column: 113,
                                },
                               },
                              },
                             ),
                            ],
                           },
                          ),
                          span: Span {
                           start: Position {
                            line: 855,
                            column: 17,
                           },
                           end: Position {
                            line: 855,
                            column: 113,
                           },
                          },
                         },
                        ),
                       },
                      ),
                      KeyValue(
                       BindingKeyValue {
                        from: [
                         Raw(
                          PartRaw {
                           content: "tail'",
                           span: Span {
                            start: Position {
                             line: 856,
                             column: 9,
                            },
                            end: Position {
                             line: 856,
                             column: 14,
                            },
                           },
                          },
                         ),
                        ],
                        to: FunctionApplication(
                         FunctionApplication {
                          function: Identifier(
                           Identifier {
                            id: "tail",
                            span: Span {
                             start: Position {
                              line: 856,
                              column: 17,
                             },
                             end: Position {
                              line: 856,
                              column: 21,
                             },
                            },
                           },
                          ),
                          arguments: [
                           Identifier(
                            Identifier {
                             id: "ts",
                             span: Span {
                              start: Position {
                               line: 856,
                               column: 22,
                              },
                              end: Position {
                               line: 856,
                               column: 24,
                              },
                             },
                            },
                           ),
                          ],
                         },
                        ),
                       },
                      ),
                     ],
                     target: FunctionApplication(
                      FunctionApplication {
                       function: Identifier(
                        Identifier {
                         id: "foldl'",
                         span: Span {
                          start: Position {
                           line: 857,
                           column: 10,
                          },
                          end: Position {
                           line: 857,
                           column: 16,
                          },
                         },
                        },
                       ),
                       arguments: [
                        Identifier(
                         Identifier {
                          id: "either",
                          span: Span {
                           start: Position {
                            line: 857,
                            column: 17,
                           },
                           end: Position {
                            line: 857,
                            column: 23,
                           },
                          },
                         },
                        ),
                        Identifier(
                         Identifier {
                          id: "head'",
                          span: Span {
                           start: Position {
                            line: 857,
                            column: 24,
                           },
                           end: Position {
                            line: 857,
                            column: 29,
                           },
                          },
                         },
                        ),
                        Identifier(
                         Identifier {
                          id: "tail'",
                          span: Span {
                           start: Position {
                            line: 857,
                            column: 30,
                           },
                           end: Position {
                            line: 857,
                            column: 35,
                           },
                          },
                         },
                        ),
                       ],
                      },
                     ),
                     span: Span {
                      start: Position {
                       line: 854,
                       column: 7,
                      },
                      end: Position {
                       line: 857,
                       column: 35,
                      },
                     },
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 853,
                     column: 13,
                    },
                    end: Position {
                     line: 857,
                     column: 35,
                    },
                   },
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "coercedTo",
                    span: Span {
                     start: Position {
                      line: 861,
                      column: 5,
                     },
                     end: Position {
                      line: 861,
                      column: 14,
                     },
                    },
                   },
                  ),
                 ],
                 to: Function(
                  Function {
                   head: Simple(
                    FunctionHeadSimple {
                     identifier: "coercedType",
                    },
                   ),
                   body: Function(
                    Function {
                     head: Simple(
                      FunctionHeadSimple {
                       identifier: "coerceFunc",
                      },
                     ),
                     body: Function(
                      Function {
                       head: Simple(
                        FunctionHeadSimple {
                         identifier: "finalType",
                        },
                       ),
                       body: Assert(
                        Assert {
                         expression: FunctionApplication(
                          FunctionApplication {
                           function: PropertyAccess(
                            PropertyAccess {
                             expression: Identifier(
                              Identifier {
                               id: "lib",
                               span: Span {
                                start: Position {
                                 line: 862,
                                 column: 14,
                                },
                                end: Position {
                                 line: 862,
                                 column: 17,
                                },
                               },
                              },
                             ),
                             attribute_path: [
                              Raw(
                               PartRaw {
                                content: "assertMsg",
                                span: Span {
                                 start: Position {
                                  line: 862,
                                  column: 18,
                                 },
                                 end: Position {
                                  line: 862,
                                  column: 27,
                                 },
                                },
                               },
                              ),
                             ],
                             default: None,
                            },
                           ),
                           arguments: [
                            BinaryOperation(
                             BinaryOperation {
                              left: PropertyAccess(
                               PropertyAccess {
                                expression: Identifier(
                                 Identifier {
                                  id: "coercedType",
                                  span: Span {
                                   start: Position {
                                    line: 862,
                                    column: 29,
                                   },
                                   end: Position {
                                    line: 862,
                                    column: 40,
                                   },
                                  },
                                 },
                                ),
                                attribute_path: [
                                 Raw(
                                  PartRaw {
                                   content: "getSubModules",
                                   span: Span {
                                    start: Position {
                                     line: 862,
                                     column: 41,
                                    },
                                    end: Position {
                                     line: 862,
                                     column: 54,
                                    },
                                   },
                                  },
                                 ),
                                ],
                                default: None,
                               },
                              ),
                              operator: EqualTo,
                              right: Identifier(
                               Identifier {
                                id: "null",
                                span: Span {
                                 start: Position {
                                  line: 862,
                                  column: 58,
                                 },
                                 end: Position {
                                  line: 862,
                                  column: 62,
                                 },
                                },
                               },
                              ),
                             },
                            ),
                            String(
                             String_ {
                              parts: [
                               Raw(
                                PartRaw {
                                 content: "coercedTo: coercedType must not have submodules (it’s a ",
                                 span: Span {
                                  start: Position {
                                   line: 863,
                                   column: 10,
                                  },
                                  end: Position {
                                   line: 864,
                                   column: 35,
                                  },
                                 },
                                },
                               ),
                               Interpolation(
                                PartInterpolation {
                                 expression: PropertyAccess(
                                  PropertyAccess {
                                   expression: Identifier(
                                    Identifier {
                                     id: "coercedType",
                                     span: Span {
                                      start: Position {
                                       line: 864,
                                       column: 11,
                                      },
                                      end: Position {
                                       line: 864,
                                       column: 22,
                                      },
                                     },
                                    },
                                   ),
                                   attribute_path: [
                                    Raw(
                                     PartRaw {
                                      content: "description",
                                      span: Span {
                                       start: Position {
                                        line: 864,
                                        column: 23,
                                       },
                                       end: Position {
                                        line: 864,
                                        column: 34,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   default: None,
                                  },
                                 ),
                                },
                               ),
                               Raw(
                                PartRaw {
                                 content: ")",
                                 span: Span {
                                  start: Position {
                                   line: 863,
                                   column: 10,
                                  },
                                  end: Position {
                                   line: 864,
                                   column: 36,
                                  },
                                 },
                                },
                               ),
                              ],
                              span: Span {
                               start: Position {
                                line: 863,
                                column: 9,
                               },
                               end: Position {
                                line: 864,
                                column: 37,
                               },
                              },
                             },
                            ),
                           ],
                          },
                         ),
                         target: FunctionApplication(
                          FunctionApplication {
                           function: Identifier(
                            Identifier {
                             id: "mkOptionType",
                             span: Span {
                              start: Position {
                               line: 865,
                               column: 7,
                              },
                              end: Position {
                               line: 865,
                               column: 19,
                              },
                             },
                            },
                           ),
                           arguments: [
                            Map(
                             Map {
                              recursive: true,
                              bindings: [
                               KeyValue(
                                BindingKeyValue {
                                 from: [
                                  Raw(
                                   PartRaw {
                                    content: "name",
                                    span: Span {
                                     start: Position {
                                      line: 866,
                                      column: 9,
                                     },
                                     end: Position {
                                      line: 866,
                                      column: 13,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 to: String(
                                  String_ {
                                   parts: [
                                    Raw(
                                     PartRaw {
                                      content: "coercedTo",
                                      span: Span {
                                       start: Position {
                                        line: 866,
                                        column: 17,
                                       },
                                       end: Position {
                                        line: 866,
                                        column: 26,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   span: Span {
                                    start: Position {
                                     line: 866,
                                     column: 16,
                                    },
                                    end: Position {
                                     line: 866,
                                     column: 27,
                                    },
                                   },
                                  },
                                 ),
                                },
                               ),
                               KeyValue(
                                BindingKeyValue {
                                 from: [
                                  Raw(
                                   PartRaw {
                                    content: "description",
                                    span: Span {
                                     start: Position {
                                      line: 867,
                                      column: 9,
                                     },
                                     end: Position {
                                      line: 867,
                                      column: 20,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 to: String(
                                  String_ {
                                   parts: [
                                    Interpolation(
                                     PartInterpolation {
                                      expression: FunctionApplication(
                                       FunctionApplication {
                                        function: Identifier(
                                         Identifier {
                                          id: "optionDescriptionPhrase",
                                          span: Span {
                                           start: Position {
                                            line: 867,
                                            column: 26,
                                           },
                                           end: Position {
                                            line: 867,
                                            column: 49,
                                           },
                                          },
                                         },
                                        ),
                                        arguments: [
                                         Function(
                                          Function {
                                           head: Simple(
                                            FunctionHeadSimple {
                                             identifier: "class",
                                            },
                                           ),
                                           body: BinaryOperation(
                                            BinaryOperation {
                                             left: Identifier(
                                              Identifier {
                                               id: "class",
                                               span: Span {
                                                start: Position {
                                                 line: 867,
                                                 column: 58,
                                                },
                                                end: Position {
                                                 line: 867,
                                                 column: 63,
                                                },
                                               },
                                              },
                                             ),
                                             operator: EqualTo,
                                             right: String(
                                              String_ {
                                               parts: [
                                                Raw(
                                                 PartRaw {
                                                  content: "noun",
                                                  span: Span {
                                                   start: Position {
                                                    line: 867,
                                                    column: 68,
                                                   },
                                                   end: Position {
                                                    line: 867,
                                                    column: 72,
                                                   },
                                                  },
                                                 },
                                                ),
                                               ],
                                               span: Span {
                                                start: Position {
                                                 line: 867,
                                                 column: 67,
                                                },
                                                end: Position {
                                                 line: 867,
                                                 column: 73,
                                                },
                                               },
                                              },
                                             ),
                                            },
                                           ),
                                           span: Span {
                                            start: Position {
                                             line: 867,
                                             column: 51,
                                            },
                                            end: Position {
                                             line: 867,
                                             column: 73,
                                            },
                                           },
                                          },
                                         ),
                                         Identifier(
                                          Identifier {
                                           id: "finalType",
                                           span: Span {
                                            start: Position {
                                             line: 867,
                                             column: 75,
                                            },
                                            end: Position {
                                             line: 867,
                                             column: 84,
                                            },
                                           },
                                          },
                                         ),
                                        ],
                                       },
                                      ),
                                     },
                                    ),
                                    Raw(
                                     PartRaw {
                                      content: " or ",
                                      span: Span {
                                       start: Position {
                                        line: 867,
                                        column: 24,
                                       },
                                       end: Position {
                                        line: 867,
                                        column: 89,
                                       },
                                      },
                                     },
                                    ),
                                    Interpolation(
                                     PartInterpolation {
                                      expression: FunctionApplication(
                                       FunctionApplication {
                                        function: Identifier(
                                         Identifier {
                                          id: "optionDescriptionPhrase",
                                          span: Span {
                                           start: Position {
                                            line: 867,
                                            column: 91,
                                           },
                                           end: Position {
                                            line: 867,
                                            column: 114,
                                           },
                                          },
                                         },
                                        ),
                                        arguments: [
                                         Function(
                                          Function {
                                           head: Simple(
                                            FunctionHeadSimple {
                                             identifier: "class",
                                            },
                                           ),
                                           body: BinaryOperation(
                                            BinaryOperation {
                                             left: Identifier(
                                              Identifier {
                                               id: "class",
                                               span: Span {
                                                start: Position {
                                                 line: 867,
                                                 column: 123,
                                                },
                                                end: Position {
                                                 line: 867,
                                                 column: 128,
                                                },
                                               },
                                              },
                                             ),
                                             operator: EqualTo,
                                             right: String(
                                              String_ {
                                               parts: [
                                                Raw(
                                                 PartRaw {
                                                  content: "noun",
                                                  span: Span {
                                                   start: Position {
                                                    line: 867,
                                                    column: 133,
                                                   },
                                                   end: Position {
                                                    line: 867,
                                                    column: 137,
                                                   },
                                                  },
                                                 },
                                                ),
                                               ],
                                               span: Span {
                                                start: Position {
                                                 line: 867,
                                                 column: 132,
                                                },
                                                end: Position {
                                                 line: 867,
                                                 column: 138,
                                                },
                                               },
                                              },
                                             ),
                                            },
                                           ),
                                           span: Span {
                                            start: Position {
                                             line: 867,
                                             column: 116,
                                            },
                                            end: Position {
                                             line: 867,
                                             column: 138,
                                            },
                                           },
                                          },
                                         ),
                                         Identifier(
                                          Identifier {
                                           id: "coercedType",
                                           span: Span {
                                            start: Position {
                                             line: 867,
                                             column: 140,
                                            },
                                            end: Position {
                                             line: 867,
                                             column: 151,
                                            },
                                           },
                                          },
                                         ),
                                        ],
                                       },
                                      ),
                                     },
                                    ),
                                    Raw(
                                     PartRaw {
                                      content: " convertible to it",
                                      span: Span {
                                       start: Position {
                                        line: 867,
                                        column: 24,
                                       },
                                       end: Position {
                                        line: 867,
                                        column: 170,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   span: Span {
                                    start: Position {
                                     line: 867,
                                     column: 23,
                                    },
                                    end: Position {
                                     line: 867,
                                     column: 171,
                                    },
                                   },
                                  },
                                 ),
                                },
                               ),
                               KeyValue(
                                BindingKeyValue {
                                 from: [
                                  Raw(
                                   PartRaw {
                                    content: "check",
                                    span: Span {
                                     start: Position {
                                      line: 868,
                                      column: 9,
                                     },
                                     end: Position {
                                      line: 868,
                                      column: 14,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 to: Function(
                                  Function {
                                   head: Simple(
                                    FunctionHeadSimple {
                                     identifier: "x",
                                    },
                                   ),
                                   body: BinaryOperation(
                                    BinaryOperation {
                                     left: BinaryOperation(
                                      BinaryOperation {
                                       left: FunctionApplication(
                                        FunctionApplication {
                                         function: PropertyAccess(
                                          PropertyAccess {
                                           expression: Identifier(
                                            Identifier {
                                             id: "coercedType",
                                             span: Span {
                                              start: Position {
                                               line: 868,
                                               column: 21,
                                              },
                                              end: Position {
                                               line: 868,
                                               column: 32,
                                              },
                                             },
                                            },
                                           ),
                                           attribute_path: [
                                            Raw(
                                             PartRaw {
                                              content: "check",
                                              span: Span {
                                               start: Position {
                                                line: 868,
                                                column: 33,
                                               },
                                               end: Position {
                                                line: 868,
                                                column: 38,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                           default: None,
                                          },
                                         ),
                                         arguments: [
                                          Identifier(
                                           Identifier {
                                            id: "x",
                                            span: Span {
                                             start: Position {
                                              line: 868,
                                              column: 39,
                                             },
                                             end: Position {
                                              line: 868,
                                              column: 40,
                                             },
                                            },
                                           },
                                          ),
                                         ],
                                        },
                                       ),
                                       operator: LogicalAnd,
                                       right: FunctionApplication(
                                        FunctionApplication {
                                         function: PropertyAccess(
                                          PropertyAccess {
                                           expression: Identifier(
                                            Identifier {
                                             id: "finalType",
                                             span: Span {
                                              start: Position {
                                               line: 868,
                                               column: 44,
                                              },
                                              end: Position {
                                               line: 868,
                                               column: 53,
                                              },
                                             },
                                            },
                                           ),
                                           attribute_path: [
                                            Raw(
                                             PartRaw {
                                              content: "check",
                                              span: Span {
                                               start: Position {
                                                line: 868,
                                                column: 54,
                                               },
                                               end: Position {
                                                line: 868,
                                                column: 59,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                           default: None,
                                          },
                                         ),
                                         arguments: [
                                          FunctionApplication(
                                           FunctionApplication {
                                            function: Identifier(
                                             Identifier {
                                              id: "coerceFunc",
                                              span: Span {
                                               start: Position {
                                                line: 868,
                                                column: 61,
                                               },
                                               end: Position {
                                                line: 868,
                                                column: 71,
                                               },
                                              },
                                             },
                                            ),
                                            arguments: [
                                             Identifier(
                                              Identifier {
                                               id: "x",
                                               span: Span {
                                                start: Position {
                                                 line: 868,
                                                 column: 72,
                                                },
                                                end: Position {
                                                 line: 868,
                                                 column: 73,
                                                },
                                               },
                                              },
                                             ),
                                            ],
                                           },
                                          ),
                                         ],
                                        },
                                       ),
                                      },
                                     ),
                                     operator: LogicalOr,
                                     right: FunctionApplication(
                                      FunctionApplication {
                                       function: PropertyAccess(
                                        PropertyAccess {
                                         expression: Identifier(
                                          Identifier {
                                           id: "finalType",
                                           span: Span {
                                            start: Position {
                                             line: 868,
                                             column: 79,
                                            },
                                            end: Position {
                                             line: 868,
                                             column: 88,
                                            },
                                           },
                                          },
                                         ),
                                         attribute_path: [
                                          Raw(
                                           PartRaw {
                                            content: "check",
                                            span: Span {
                                             start: Position {
                                              line: 868,
                                              column: 89,
                                             },
                                             end: Position {
                                              line: 868,
                                              column: 94,
                                             },
                                            },
                                           },
                                          ),
                                         ],
                                         default: None,
                                        },
                                       ),
                                       arguments: [
                                        Identifier(
                                         Identifier {
                                          id: "x",
                                          span: Span {
                                           start: Position {
                                            line: 868,
                                            column: 95,
                                           },
                                           end: Position {
                                            line: 868,
                                            column: 96,
                                           },
                                          },
                                         },
                                        ),
                                       ],
                                      },
                                     ),
                                    },
                                   ),
                                   span: Span {
                                    start: Position {
                                     line: 868,
                                     column: 17,
                                    },
                                    end: Position {
                                     line: 868,
                                     column: 96,
                                    },
                                   },
                                  },
                                 ),
                                },
                               ),
                               KeyValue(
                                BindingKeyValue {
                                 from: [
                                  Raw(
                                   PartRaw {
                                    content: "merge",
                                    span: Span {
                                     start: Position {
                                      line: 869,
                                      column: 9,
                                     },
                                     end: Position {
                                      line: 869,
                                      column: 14,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 to: Function(
                                  Function {
                                   head: Simple(
                                    FunctionHeadSimple {
                                     identifier: "loc",
                                    },
                                   ),
                                   body: Function(
                                    Function {
                                     head: Simple(
                                      FunctionHeadSimple {
                                       identifier: "defs",
                                      },
                                     ),
                                     body: LetIn(
                                      LetIn {
                                       bindings: [
                                        KeyValue(
                                         BindingKeyValue {
                                          from: [
                                           Raw(
                                            PartRaw {
                                             content: "coerceVal",
                                             span: Span {
                                              start: Position {
                                               line: 871,
                                               column: 13,
                                              },
                                              end: Position {
                                               line: 871,
                                               column: 22,
                                              },
                                             },
                                            },
                                           ),
                                          ],
                                          to: Function(
                                           Function {
                                            head: Simple(
                                             FunctionHeadSimple {
                                              identifier: "val",
                                             },
                                            ),
                                            body: IfThenElse(
                                             IfThenElse {
                                              predicate: FunctionApplication(
                                               FunctionApplication {
                                                function: PropertyAccess(
                                                 PropertyAccess {
                                                  expression: Identifier(
                                                   Identifier {
                                                    id: "coercedType",
                                                    span: Span {
                                                     start: Position {
                                                      line: 872,
                                                      column: 18,
                                                     },
                                                     end: Position {
                                                      line: 872,
                                                      column: 29,
                                                     },
                                                    },
                                                   },
                                                  ),
                                                  attribute_path: [
                                                   Raw(
                                                    PartRaw {
                                                     content: "check",
                                                     span: Span {
                                                      start: Position {
                                                       line: 872,
                                                       column: 30,
                                                      },
                                                      end: Position {
                                                       line: 872,
                                                       column: 35,
                                                      },
                                                     },
                                                    },
                                                   ),
                                                  ],
                                                  default: None,
                                                 },
                                                ),
                                                arguments: [
                                                 Identifier(
                                                  Identifier {
                                                   id: "val",
                                                   span: Span {
                                                    start: Position {
                                                     line: 872,
                                                     column: 36,
                                                    },
                                                    end: Position {
                                                     line: 872,
                                                     column: 39,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                ],
                                               },
                                              ),
                                              then: FunctionApplication(
                                               FunctionApplication {
                                                function: Identifier(
                                                 Identifier {
                                                  id: "coerceFunc",
                                                  span: Span {
                                                   start: Position {
                                                    line: 872,
                                                    column: 45,
                                                   },
                                                   end: Position {
                                                    line: 872,
                                                    column: 55,
                                                   },
                                                  },
                                                 },
                                                ),
                                                arguments: [
                                                 Identifier(
                                                  Identifier {
                                                   id: "val",
                                                   span: Span {
                                                    start: Position {
                                                     line: 872,
                                                     column: 56,
                                                    },
                                                    end: Position {
                                                     line: 872,
                                                     column: 59,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                ],
                                               },
                                              ),
                                              else_: Identifier(
                                               Identifier {
                                                id: "val",
                                                span: Span {
                                                 start: Position {
                                                  line: 873,
                                                  column: 20,
                                                 },
                                                 end: Position {
                                                  line: 873,
                                                  column: 23,
                                                 },
                                                },
                                               },
                                              ),
                                              span: Span {
                                               start: Position {
                                                line: 872,
                                                column: 15,
                                               },
                                               end: Position {
                                                line: 873,
                                                column: 23,
                                               },
                                              },
                                             },
                                            ),
                                            span: Span {
                                             start: Position {
                                              line: 871,
                                              column: 25,
                                             },
                                             end: Position {
                                              line: 873,
                                              column: 23,
                                             },
                                            },
                                           },
                                          ),
                                         },
                                        ),
                                       ],
                                       target: FunctionApplication(
                                        FunctionApplication {
                                         function: PropertyAccess(
                                          PropertyAccess {
                                           expression: Identifier(
                                            Identifier {
                                             id: "finalType",
                                             span: Span {
                                              start: Position {
                                               line: 874,
                                               column: 14,
                                              },
                                              end: Position {
                                               line: 874,
                                               column: 23,
                                              },
                                             },
                                            },
                                           ),
                                           attribute_path: [
                                            Raw(
                                             PartRaw {
                                              content: "merge",
                                              span: Span {
                                               start: Position {
                                                line: 874,
                                                column: 24,
                                               },
                                               end: Position {
                                                line: 874,
                                                column: 29,
                                               },
                                              },
                                             },
                                            ),
                                           ],
                                           default: None,
                                          },
                                         ),
                                         arguments: [
                                          Identifier(
                                           Identifier {
                                            id: "loc",
                                            span: Span {
                                             start: Position {
                                              line: 874,
                                              column: 30,
                                             },
                                             end: Position {
                                              line: 874,
                                              column: 33,
                                             },
                                            },
                                           },
                                          ),
                                          FunctionApplication(
                                           FunctionApplication {
                                            function: Identifier(
                                             Identifier {
                                              id: "map",
                                              span: Span {
                                               start: Position {
                                                line: 874,
                                                column: 35,
                                               },
                                               end: Position {
                                                line: 874,
                                                column: 38,
                                               },
                                              },
                                             },
                                            ),
                                            arguments: [
                                             Function(
                                              Function {
                                               head: Simple(
                                                FunctionHeadSimple {
                                                 identifier: "def",
                                                },
                                               ),
                                               body: BinaryOperation(
                                                BinaryOperation {
                                                 left: Identifier(
                                                  Identifier {
                                                   id: "def",
                                                   span: Span {
                                                    start: Position {
                                                     line: 874,
                                                     column: 45,
                                                    },
                                                    end: Position {
                                                     line: 874,
                                                     column: 48,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                 operator: Update,
                                                 right: Map(
                                                  Map {
                                                   recursive: false,
                                                   bindings: [
                                                    KeyValue(
                                                     BindingKeyValue {
                                                      from: [
                                                       Raw(
                                                        PartRaw {
                                                         content: "value",
                                                         span: Span {
                                                          start: Position {
                                                           line: 874,
                                                           column: 54,
                                                          },
                                                          end: Position {
                                                           line: 874,
                                                           column: 59,
                                                          },
                                                         },
                                                        },
                                                       ),
                                                      ],
                                                      to: FunctionApplication(
                                                       FunctionApplication {
                                                        function: Identifier(
                                                         Identifier {
                                                          id: "coerceVal",
                                                          span: Span {
                                                           start: Position {
                                                            line: 874,
                                                            column: 62,
                                                           },
                                                           end: Position {
                                                            line: 874,
                                                            column: 71,
                                                           },
                                                          },
                                                         },
                                                        ),
                                                        arguments: [
                                                         PropertyAccess(
                                                          PropertyAccess {
                                                           expression: Identifier(
                                                            Identifier {
                                                             id: "def",
                                                             span: Span {
                                                              start: Position {
                                                               line: 874,
                                                               column: 72,
                                                              },
                                                              end: Position {
                                                               line: 874,
                                                               column: 75,
                                                              },
                                                             },
                                                            },
                                                           ),
                                                           attribute_path: [
                                                            Raw(
                                                             PartRaw {
                                                              content: "value",
                                                              span: Span {
                                                               start: Position {
                                                                line: 874,
                                                                column: 76,
                                                               },
                                                               end: Position {
                                                                line: 874,
                                                                column: 81,
                                                               },
                                                              },
                                                             },
                                                            ),
                                                           ],
                                                           default: None,
                                                          },
                                                         ),
                                                        ],
                                                       },
                                                      ),
                                                     },
                                                    ),
                                                   ],
                                                   span: Span {
                                                    start: Position {
                                                     line: 874,
                                                     column: 52,
                                                    },
                                                    end: Position {
                                                     line: 874,
                                                     column: 84,
                                                    },
                                                   },
                                                  },
                                                 ),
                                                },
                                               ),
                                               span: Span {
                                                start: Position {
                                                 line: 874,
                                                 column: 40,
                                                },
                                                end: Position {
                                                 line: 874,
                                                 column: 84,
                                                },
                                               },
                                              },
                                             ),
                                             Identifier(
                                              Identifier {
                                               id: "defs",
                                               span: Span {
                                                start: Position {
                                                 line: 874,
                                                 column: 86,
                                                },
                                                end: Position {
                                                 line: 874,
                                                 column: 90,
                                                },
                                               },
                                              },
                                             ),
                                            ],
                                           },
                                          ),
                                         ],
                                        },
                                       ),
                                       span: Span {
                                        start: Position {
                                         line: 870,
                                         column: 11,
                                        },
                                        end: Position {
                                         line: 874,
                                         column: 91,
                                        },
                                       },
                                      },
                                     ),
                                     span: Span {
                                      start: Position {
                                       line: 869,
                                       column: 22,
                                      },
                                      end: Position {
                                       line: 874,
                                       column: 91,
                                      },
                                     },
                                    },
                                   ),
                                   span: Span {
                                    start: Position {
                                     line: 869,
                                     column: 17,
                                    },
                                    end: Position {
                                     line: 874,
                                     column: 91,
                                    },
                                   },
                                  },
                                 ),
                                },
                               ),
                               KeyValue(
                                BindingKeyValue {
                                 from: [
                                  Raw(
                                   PartRaw {
                                    content: "emptyValue",
                                    span: Span {
                                     start: Position {
                                      line: 875,
                                      column: 9,
                                     },
                                     end: Position {
                                      line: 875,
                                      column: 19,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 to: PropertyAccess(
                                  PropertyAccess {
                                   expression: Identifier(
                                    Identifier {
                                     id: "finalType",
                                     span: Span {
                                      start: Position {
                                       line: 875,
                                       column: 22,
                                      },
                                      end: Position {
                                       line: 875,
                                       column: 31,
                                      },
                                     },
                                    },
                                   ),
                                   attribute_path: [
                                    Raw(
                                     PartRaw {
                                      content: "emptyValue",
                                      span: Span {
                                       start: Position {
                                        line: 875,
                                        column: 32,
                                       },
                                       end: Position {
                                        line: 875,
                                        column: 42,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   default: None,
                                  },
                                 ),
                                },
                               ),
                               KeyValue(
                                BindingKeyValue {
                                 from: [
                                  Raw(
                                   PartRaw {
                                    content: "getSubOptions",
                                    span: Span {
                                     start: Position {
                                      line: 876,
                                      column: 9,
                                     },
                                     end: Position {
                                      line: 876,
                                      column: 22,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 to: PropertyAccess(
                                  PropertyAccess {
                                   expression: Identifier(
                                    Identifier {
                                     id: "finalType",
                                     span: Span {
                                      start: Position {
                                       line: 876,
                                       column: 25,
                                      },
                                      end: Position {
                                       line: 876,
                                       column: 34,
                                      },
                                     },
                                    },
                                   ),
                                   attribute_path: [
                                    Raw(
                                     PartRaw {
                                      content: "getSubOptions",
                                      span: Span {
                                       start: Position {
                                        line: 876,
                                        column: 35,
                                       },
                                       end: Position {
                                        line: 876,
                                        column: 48,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   default: None,
                                  },
                                 ),
                                },
                               ),
                               KeyValue(
                                BindingKeyValue {
                                 from: [
                                  Raw(
                                   PartRaw {
                                    content: "getSubModules",
                                    span: Span {
                                     start: Position {
                                      line: 877,
                                      column: 9,
                                     },
                                     end: Position {
                                      line: 877,
                                      column: 22,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 to: PropertyAccess(
                                  PropertyAccess {
                                   expression: Identifier(
                                    Identifier {
                                     id: "finalType",
                                     span: Span {
                                      start: Position {
                                       line: 877,
                                       column: 25,
                                      },
                                      end: Position {
                                       line: 877,
                                       column: 34,
                                      },
                                     },
                                    },
                                   ),
                                   attribute_path: [
                                    Raw(
                                     PartRaw {
                                      content: "getSubModules",
                                      span: Span {
                                       start: Position {
                                        line: 877,
                                        column: 35,
                                       },
                                       end: Position {
                                        line: 877,
                                        column: 48,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   default: None,
                                  },
                                 ),
                                },
                               ),
                               KeyValue(
                                BindingKeyValue {
                                 from: [
                                  Raw(
                                   PartRaw {
                                    content: "substSubModules",
                                    span: Span {
                                     start: Position {
                                      line: 878,
                                      column: 9,
                                     },
                                     end: Position {
                                      line: 878,
                                      column: 24,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 to: Function(
                                  Function {
                                   head: Simple(
                                    FunctionHeadSimple {
                                     identifier: "m",
                                    },
                                   ),
                                   body: FunctionApplication(
                                    FunctionApplication {
                                     function: Identifier(
                                      Identifier {
                                       id: "coercedTo",
                                       span: Span {
                                        start: Position {
                                         line: 878,
                                         column: 30,
                                        },
                                        end: Position {
                                         line: 878,
                                         column: 39,
                                        },
                                       },
                                      },
                                     ),
                                     arguments: [
                                      Identifier(
                                       Identifier {
                                        id: "coercedType",
                                        span: Span {
                                         start: Position {
                                          line: 878,
                                          column: 40,
                                         },
                                         end: Position {
                                          line: 878,
                                          column: 51,
                                         },
                                        },
                                       },
                                      ),
                                      Identifier(
                                       Identifier {
                                        id: "coerceFunc",
                                        span: Span {
                                         start: Position {
                                          line: 878,
                                          column: 52,
                                         },
                                         end: Position {
                                          line: 878,
                                          column: 62,
                                         },
                                        },
                                       },
                                      ),
                                      FunctionApplication(
                                       FunctionApplication {
                                        function: PropertyAccess(
                                         PropertyAccess {
                                          expression: Identifier(
                                           Identifier {
                                            id: "finalType",
                                            span: Span {
                                             start: Position {
                                              line: 878,
                                              column: 64,
                                             },
                                             end: Position {
                                              line: 878,
                                              column: 73,
                                             },
                                            },
                                           },
                                          ),
                                          attribute_path: [
                                           Raw(
                                            PartRaw {
                                             content: "substSubModules",
                                             span: Span {
                                              start: Position {
                                               line: 878,
                                               column: 74,
                                              },
                                              end: Position {
                                               line: 878,
                                               column: 89,
                                              },
                                             },
                                            },
                                           ),
                                          ],
                                          default: None,
                                         },
                                        ),
                                        arguments: [
                                         Identifier(
                                          Identifier {
                                           id: "m",
                                           span: Span {
                                            start: Position {
                                             line: 878,
                                             column: 90,
                                            },
                                            end: Position {
                                             line: 878,
                                             column: 91,
                                            },
                                           },
                                          },
                                         ),
                                        ],
                                       },
                                      ),
                                     ],
                                    },
                                   ),
                                   span: Span {
                                    start: Position {
                                     line: 878,
                                     column: 27,
                                    },
                                    end: Position {
                                     line: 878,
                                     column: 92,
                                    },
                                   },
                                  },
                                 ),
                                },
                               ),
                               KeyValue(
                                BindingKeyValue {
                                 from: [
                                  Raw(
                                   PartRaw {
                                    content: "typeMerge",
                                    span: Span {
                                     start: Position {
                                      line: 879,
                                      column: 9,
                                     },
                                     end: Position {
                                      line: 879,
                                      column: 18,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 to: Function(
                                  Function {
                                   head: Simple(
                                    FunctionHeadSimple {
                                     identifier: "t1",
                                    },
                                   ),
                                   body: Function(
                                    Function {
                                     head: Simple(
                                      FunctionHeadSimple {
                                       identifier: "t2",
                                      },
                                     ),
                                     body: Identifier(
                                      Identifier {
                                       id: "null",
                                       span: Span {
                                        start: Position {
                                         line: 879,
                                         column: 29,
                                        },
                                        end: Position {
                                         line: 879,
                                         column: 33,
                                        },
                                       },
                                      },
                                     ),
                                     span: Span {
                                      start: Position {
                                       line: 879,
                                       column: 25,
                                      },
                                      end: Position {
                                       line: 879,
                                       column: 33,
                                      },
                                     },
                                    },
                                   ),
                                   span: Span {
                                    start: Position {
                                     line: 879,
                                     column: 21,
                                    },
                                    end: Position {
                                     line: 879,
                                     column: 33,
                                    },
                                   },
                                  },
                                 ),
                                },
                               ),
                               KeyValue(
                                BindingKeyValue {
                                 from: [
                                  Raw(
                                   PartRaw {
                                    content: "functor",
                                    span: Span {
                                     start: Position {
                                      line: 880,
                                      column: 9,
                                     },
                                     end: Position {
                                      line: 880,
                                      column: 16,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 to: BinaryOperation(
                                  BinaryOperation {
                                   left: FunctionApplication(
                                    FunctionApplication {
                                     function: Identifier(
                                      Identifier {
                                       id: "defaultFunctor",
                                       span: Span {
                                        start: Position {
                                         line: 880,
                                         column: 20,
                                        },
                                        end: Position {
                                         line: 880,
                                         column: 34,
                                        },
                                       },
                                      },
                                     ),
                                     arguments: [
                                      Identifier(
                                       Identifier {
                                        id: "name",
                                        span: Span {
                                         start: Position {
                                          line: 880,
                                          column: 35,
                                         },
                                         end: Position {
                                          line: 880,
                                          column: 39,
                                         },
                                        },
                                       },
                                      ),
                                     ],
                                    },
                                   ),
                                   operator: Update,
                                   right: Map(
                                    Map {
                                     recursive: false,
                                     bindings: [
                                      KeyValue(
                                       BindingKeyValue {
                                        from: [
                                         Raw(
                                          PartRaw {
                                           content: "wrapped",
                                           span: Span {
                                            start: Position {
                                             line: 880,
                                             column: 46,
                                            },
                                            end: Position {
                                             line: 880,
                                             column: 53,
                                            },
                                           },
                                          },
                                         ),
                                        ],
                                        to: Identifier(
                                         Identifier {
                                          id: "finalType",
                                          span: Span {
                                           start: Position {
                                            line: 880,
                                            column: 56,
                                           },
                                           end: Position {
                                            line: 880,
                                            column: 65,
                                           },
                                          },
                                         },
                                        ),
                                       },
                                      ),
                                     ],
                                     span: Span {
                                      start: Position {
                                       line: 880,
                                       column: 44,
                                      },
                                      end: Position {
                                       line: 880,
                                       column: 68,
                                      },
                                     },
                                    },
                                   ),
                                  },
                                 ),
                                },
                               ),
                               KeyValue(
                                BindingKeyValue {
                                 from: [
                                  Raw(
                                   PartRaw {
                                    content: "nestedTypes",
                                    span: Span {
                                     start: Position {
                                      line: 881,
                                      column: 9,
                                     },
                                     end: Position {
                                      line: 881,
                                      column: 20,
                                     },
                                    },
                                   },
                                  ),
                                  Raw(
                                   PartRaw {
                                    content: "coercedType",
                                    span: Span {
                                     start: Position {
                                      line: 881,
                                      column: 21,
                                     },
                                     end: Position {
                                      line: 881,
                                      column: 32,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 to: Identifier(
                                  Identifier {
                                   id: "coercedType",
                                   span: Span {
                                    start: Position {
                                     line: 881,
                                     column: 35,
                                    },
                                    end: Position {
                                     line: 881,
                                     column: 46,
                                    },
                                   },
                                  },
                                 ),
                                },
                               ),
                               KeyValue(
                                BindingKeyValue {
                                 from: [
                                  Raw(
                                   PartRaw {
                                    content: "nestedTypes",
                                    span: Span {
                                     start: Position {
                                      line: 882,
                                      column: 9,
                                     },
                                     end: Position {
                                      line: 882,
                                      column: 20,
                                     },
                                    },
                                   },
                                  ),
                                  Raw(
                                   PartRaw {
                                    content: "finalType",
                                    span: Span {
                                     start: Position {
                                      line: 882,
                                      column: 21,
                                     },
                                     end: Position {
                                      line: 882,
                                      column: 30,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 to: Identifier(
                                  Identifier {
                                   id: "finalType",
                                   span: Span {
                                    start: Position {
                                     line: 882,
                                     column: 33,
                                    },
                                    end: Position {
                                     line: 882,
                                     column: 42,
                                    },
                                   },
                                  },
                                 ),
                                },
                               ),
                              ],
                              span: Span {
                               start: Position {
                                line: 865,
                                column: 20,
                               },
                               end: Position {
                                line: 883,
                                column: 8,
                               },
                              },
                             },
                            ),
                           ],
                          },
                         ),
                         span: Span {
                          start: Position {
                           line: 862,
                           column: 7,
                          },
                          end: Position {
                           line: 883,
                           column: 8,
                          },
                         },
                        },
                       ),
                       span: Span {
                        start: Position {
                         line: 861,
                         column: 42,
                        },
                        end: Position {
                         line: 883,
                         column: 8,
                        },
                       },
                      },
                     ),
                     span: Span {
                      start: Position {
                       line: 861,
                       column: 30,
                      },
                      end: Position {
                       line: 883,
                       column: 8,
                      },
                     },
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 861,
                     column: 17,
                    },
                    end: Position {
                     line: 883,
                     column: 8,
                    },
                   },
                  },
                 ),
                },
               ),
               KeyValue(
                BindingKeyValue {
                 from: [
                  Raw(
                   PartRaw {
                    content: "addCheck",
                    span: Span {
                     start: Position {
                      line: 886,
                      column: 5,
                     },
                     end: Position {
                      line: 886,
                      column: 13,
                     },
                    },
                   },
                  ),
                 ],
                 to: Function(
                  Function {
                   head: Simple(
                    FunctionHeadSimple {
                     identifier: "elemType",
                    },
                   ),
                   body: Function(
                    Function {
                     head: Simple(
                      FunctionHeadSimple {
                       identifier: "check",
                      },
                     ),
                     body: BinaryOperation(
                      BinaryOperation {
                       left: Identifier(
                        Identifier {
                         id: "elemType",
                         span: Span {
                          start: Position {
                           line: 886,
                           column: 33,
                          },
                          end: Position {
                           line: 886,
                           column: 41,
                          },
                         },
                        },
                       ),
                       operator: Update,
                       right: Map(
                        Map {
                         recursive: false,
                         bindings: [
                          KeyValue(
                           BindingKeyValue {
                            from: [
                             Raw(
                              PartRaw {
                               content: "check",
                               span: Span {
                                start: Position {
                                 line: 886,
                                 column: 47,
                                },
                                end: Position {
                                 line: 886,
                                 column: 52,
                                },
                               },
                              },
                             ),
                            ],
                            to: Function(
                             Function {
                              head: Simple(
                               FunctionHeadSimple {
                                identifier: "x",
                               },
                              ),
                              body: BinaryOperation(
                               BinaryOperation {
                                left: FunctionApplication(
                                 FunctionApplication {
                                  function: PropertyAccess(
                                   PropertyAccess {
                                    expression: Identifier(
                                     Identifier {
                                      id: "elemType",
                                      span: Span {
                                       start: Position {
                                        line: 886,
                                        column: 58,
                                       },
                                       end: Position {
                                        line: 886,
                                        column: 66,
                                       },
                                      },
                                     },
                                    ),
                                    attribute_path: [
                                     Raw(
                                      PartRaw {
                                       content: "check",
                                       span: Span {
                                        start: Position {
                                         line: 886,
                                         column: 67,
                                        },
                                        end: Position {
                                         line: 886,
                                         column: 72,
                                        },
                                       },
                                      },
                                     ),
                                    ],
                                    default: None,
                                   },
                                  ),
                                  arguments: [
                                   Identifier(
                                    Identifier {
                                     id: "x",
                                     span: Span {
                                      start: Position {
                                       line: 886,
                                       column: 73,
                                      },
                                      end: Position {
                                       line: 886,
                                       column: 74,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                 },
                                ),
                                operator: LogicalAnd,
                                right: FunctionApplication(
                                 FunctionApplication {
                                  function: Identifier(
                                   Identifier {
                                    id: "check",
                                    span: Span {
                                     start: Position {
                                      line: 886,
                                      column: 78,
                                     },
                                     end: Position {
                                      line: 886,
                                      column: 83,
                                     },
                                    },
                                   },
                                  ),
                                  arguments: [
                                   Identifier(
                                    Identifier {
                                     id: "x",
                                     span: Span {
                                      start: Position {
                                       line: 886,
                                       column: 84,
                                      },
                                      end: Position {
                                       line: 886,
                                       column: 85,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                 },
                                ),
                               },
                              ),
                              span: Span {
                               start: Position {
                                line: 886,
                                column: 55,
                               },
                               end: Position {
                                line: 886,
                                column: 85,
                               },
                              },
                             },
                            ),
                           },
                          ),
                         ],
                         span: Span {
                          start: Position {
                           line: 886,
                           column: 45,
                          },
                          end: Position {
                           line: 886,
                           column: 88,
                          },
                         },
                        },
                       ),
                      },
                     ),
                     span: Span {
                      start: Position {
                       line: 886,
                       column: 26,
                      },
                      end: Position {
                       line: 886,
                       column: 88,
                      },
                     },
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 886,
                     column: 16,
                    },
                    end: Position {
                     line: 886,
                     column: 88,
                    },
                   },
                  },
                 ),
                },
               ),
              ],
              span: Span {
               start: Position {
                line: 212,
                column: 11,
               },
               end: Position {
                line: 888,
                column: 4,
               },
              },
             },
            ),
           },
          ),
         ],
         span: Span {
          start: Position {
           line: 69,
           column: 1,
          },
          end: Position {
           line: 889,
           column: 2,
          },
         },
        },
       ),
      },
     ),
    ],
    target: BinaryOperation(
     BinaryOperation {
      left: Identifier(
       Identifier {
        id: "outer_types",
        span: Span {
         start: Position {
          line: 891,
          column: 4,
         },
         end: Position {
          line: 891,
          column: 15,
         },
        },
       },
      ),
      operator: Update,
      right: PropertyAccess(
       PropertyAccess {
        expression: Identifier(
         Identifier {
          id: "outer_types",
          span: Span {
           start: Position {
            line: 891,
            column: 19,
           },
           end: Position {
            line: 891,
            column: 30,
           },
          },
         },
        ),
        attribute_path: [
         Raw(
          PartRaw {
           content: "types",
           span: Span {
            start: Position {
             line: 891,
             column: 31,
            },
            end: Position {
             line: 891,
             column: 36,
            },
           },
          },
         ),
        ],
        default: None,
       },
      ),
     },
    ),
    span: Span {
     start: Position {
      line: 5,
      column: 1,
     },
     end: Position {
      line: 891,
      column: 36,
     },
    },
   },
  ),
  span: Span {
   start: Position {
    line: 3,
    column: 1,
   },
   end: Position {
    line: 891,
    column: 36,
   },
  },
 },
)