Function(
 Function {
  head: Destructured(
   FunctionHeadDestructured {
    ellipsis: false,
    identifier: None,
    arguments: [
     FunctionHeadDestructuredArgument {
      identifier: "nixosLib",
      default: None,
     },
     FunctionHeadDestructuredArgument {
      identifier: "pkgsModule",
      default: None,
     },
     FunctionHeadDestructuredArgument {
      identifier: "runCommand",
      default: None,
     },
    ],
   },
  ),
  body: LetIn(
   LetIn {
    bindings: [
     KeyValue(
      BindingKeyValue {
       from: [
        Raw(
         PartRaw {
          content: "sys",
          span: Span {
           start: Position {
            line: 4,
            column: 3,
           },
           end: Position {
            line: 4,
            column: 6,
           },
          },
         },
        ),
       ],
       to: FunctionApplication(
        FunctionApplication {
         function: PropertyAccess(
          PropertyAccess {
           expression: Identifier(
            Identifier {
             id: "nixosLib",
             span: Span {
              start: Position {
               line: 4,
               column: 9,
              },
              end: Position {
               line: 4,
               column: 17,
              },
             },
            },
           ),
           attribute_path: [
            Raw(
             PartRaw {
              content: "evalModules",
              span: Span {
               start: Position {
                line: 4,
                column: 18,
               },
               end: Position {
                line: 4,
                column: 29,
               },
              },
             },
            ),
           ],
           default: None,
          },
         ),
         arguments: [
          Map(
           Map {
            recursive: true,
            bindings: [
             KeyValue(
              BindingKeyValue {
               from: [
                Raw(
                 PartRaw {
                  content: "modules",
                  span: Span {
                   start: Position {
                    line: 5,
                    column: 5,
                   },
                   end: Position {
                    line: 5,
                    column: 12,
                   },
                  },
                 },
                ),
               ],
               to: List(
                List {
                 elements: [
                  Identifier(
                   Identifier {
                    id: "pkgsModule",
                    span: Span {
                     start: Position {
                      line: 6,
                      column: 7,
                     },
                     end: Position {
                      line: 6,
                      column: 17,
                     },
                    },
                   },
                  ),
                  Path(
                   Path {
                    parts: [
                     Raw(
                      PartRaw {
                       content: "../documentation.nix",
                       span: Span {
                        start: Position {
                         line: 7,
                         column: 7,
                        },
                        end: Position {
                         line: 7,
                         column: 27,
                        },
                       },
                      },
                     ),
                    ],
                    span: Span {
                     start: Position {
                      line: 7,
                      column: 7,
                     },
                     end: Position {
                      line: 7,
                      column: 27,
                     },
                    },
                   },
                  ),
                  Path(
                   Path {
                    parts: [
                     Raw(
                      PartRaw {
                       content: "../version.nix",
                       span: Span {
                        start: Position {
                         line: 8,
                         column: 7,
                        },
                        end: Position {
                         line: 8,
                         column: 21,
                        },
                       },
                      },
                     ),
                    ],
                    span: Span {
                     start: Position {
                      line: 8,
                      column: 7,
                     },
                     end: Position {
                      line: 8,
                      column: 21,
                     },
                    },
                   },
                  ),
                  Function(
                   Function {
                    head: Destructured(
                     FunctionHeadDestructured {
                      ellipsis: true,
                      identifier: None,
                      arguments: [
                       FunctionHeadDestructuredArgument {
                        identifier: "lib",
                        default: None,
                       },
                       FunctionHeadDestructuredArgument {
                        identifier: "someArg",
                        default: None,
                       },
                      ],
                     },
                    ),
                    body: Map(
                     Map {
                      recursive: false,
                      bindings: [
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "imports",
                            span: Span {
                             start: Position {
                              line: 12,
                              column: 9,
                             },
                             end: Position {
                              line: 12,
                              column: 16,
                             },
                            },
                           },
                          ),
                         ],
                         to: List(
                          List {
                           elements: [
                            PropertyAccess(
                             PropertyAccess {
                              expression: Identifier(
                               Identifier {
                                id: "someArg",
                                span: Span {
                                 start: Position {
                                  line: 12,
                                  column: 21,
                                 },
                                 end: Position {
                                  line: 12,
                                  column: 28,
                                 },
                                },
                               },
                              ),
                              attribute_path: [
                               Raw(
                                PartRaw {
                                 content: "myModule",
                                 span: Span {
                                  start: Position {
                                   line: 12,
                                   column: 29,
                                  },
                                  end: Position {
                                   line: 12,
                                   column: 37,
                                  },
                                 },
                                },
                               ),
                              ],
                              default: None,
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 12,
                             column: 19,
                            },
                            end: Position {
                             line: 12,
                             column: 39,
                            },
                           },
                          },
                         ),
                        },
                       ),
                       KeyValue(
                        BindingKeyValue {
                         from: [
                          Raw(
                           PartRaw {
                            content: "meta",
                            span: Span {
                             start: Position {
                              line: 15,
                              column: 9,
                             },
                             end: Position {
                              line: 15,
                              column: 13,
                             },
                            },
                           },
                          ),
                          Raw(
                           PartRaw {
                            content: "doc",
                            span: Span {
                             start: Position {
                              line: 15,
                              column: 14,
                             },
                             end: Position {
                              line: 15,
                              column: 17,
                             },
                            },
                           },
                          ),
                         ],
                         to: Path(
                          Path {
                           parts: [
                            Raw(
                             PartRaw {
                              content: "./test-dummy.chapter.xml",
                              span: Span {
                               start: Position {
                                line: 15,
                                column: 20,
                               },
                               end: Position {
                                line: 15,
                                column: 44,
                               },
                              },
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 15,
                             column: 20,
                            },
                            end: Position {
                             line: 15,
                             column: 44,
                            },
                           },
                          },
                         ),
                        },
                       ),
                      ],
                      span: Span {
                       start: Position {
                        line: 10,
                        column: 31,
                       },
                       end: Position {
                        line: 16,
                        column: 8,
                       },
                      },
                     },
                    ),
                    span: Span {
                     start: Position {
                      line: 10,
                      column: 8,
                     },
                     end: Position {
                      line: 16,
                      column: 8,
                     },
                    },
                   },
                  ),
                  Map(
                   Map {
                    recursive: false,
                    bindings: [
                     KeyValue(
                      BindingKeyValue {
                       from: [
                        Raw(
                         PartRaw {
                          content: "_module",
                          span: Span {
                           start: Position {
                            line: 19,
                            column: 9,
                           },
                           end: Position {
                            line: 19,
                            column: 16,
                           },
                          },
                         },
                        ),
                        Raw(
                         PartRaw {
                          content: "args",
                          span: Span {
                           start: Position {
                            line: 19,
                            column: 17,
                           },
                           end: Position {
                            line: 19,
                            column: 21,
                           },
                          },
                         },
                        ),
                       ],
                       to: Map(
                        Map {
                         recursive: false,
                         bindings: [
                          KeyValue(
                           BindingKeyValue {
                            from: [
                             Raw(
                              PartRaw {
                               content: "baseModules",
                               span: Span {
                                start: Position {
                                 line: 20,
                                 column: 11,
                                },
                                end: Position {
                                 line: 20,
                                 column: 22,
                                },
                               },
                              },
                             ),
                            ],
                            to: List(
                             List {
                              elements: [
                               Path(
                                Path {
                                 parts: [
                                  Raw(
                                   PartRaw {
                                    content: "../documentation.nix",
                                    span: Span {
                                     start: Position {
                                      line: 21,
                                      column: 13,
                                     },
                                     end: Position {
                                      line: 21,
                                      column: 33,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 span: Span {
                                  start: Position {
                                   line: 21,
                                   column: 13,
                                  },
                                  end: Position {
                                   line: 21,
                                   column: 33,
                                  },
                                 },
                                },
                               ),
                               Path(
                                Path {
                                 parts: [
                                  Raw(
                                   PartRaw {
                                    content: "../version.nix",
                                    span: Span {
                                     start: Position {
                                      line: 22,
                                      column: 13,
                                     },
                                     end: Position {
                                      line: 22,
                                      column: 27,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 span: Span {
                                  start: Position {
                                   line: 22,
                                   column: 13,
                                  },
                                  end: Position {
                                   line: 22,
                                   column: 27,
                                  },
                                 },
                                },
                               ),
                              ],
                              span: Span {
                               start: Position {
                                line: 20,
                                column: 25,
                               },
                               end: Position {
                                line: 23,
                                column: 12,
                               },
                              },
                             },
                            ),
                           },
                          ),
                          KeyValue(
                           BindingKeyValue {
                            from: [
                             Raw(
                              PartRaw {
                               content: "extraModules",
                               span: Span {
                                start: Position {
                                 line: 24,
                                 column: 11,
                                },
                                end: Position {
                                 line: 24,
                                 column: 23,
                                },
                               },
                              },
                             ),
                            ],
                            to: List(
                             List {
                              elements: [],
                              span: Span {
                               start: Position {
                                line: 24,
                                column: 26,
                               },
                               end: Position {
                                line: 24,
                                column: 29,
                               },
                              },
                             },
                            ),
                           },
                          ),
                          Inherit(
                           BindingInherit {
                            from: None,
                            attributes: [
                             Raw(
                              PartRaw {
                               content: "modules",
                               span: Span {
                                start: Position {
                                 line: 25,
                                 column: 19,
                                },
                                end: Position {
                                 line: 25,
                                 column: 26,
                                },
                               },
                              },
                             ),
                            ],
                            span: Span {
                             start: Position {
                              line: 19,
                              column: 25,
                             },
                             end: Position {
                              line: 25,
                              column: 27,
                             },
                            },
                           },
                          ),
                         ],
                         span: Span {
                          start: Position {
                           line: 19,
                           column: 24,
                          },
                          end: Position {
                           line: 26,
                           column: 10,
                          },
                         },
                        },
                       ),
                      },
                     ),
                     KeyValue(
                      BindingKeyValue {
                       from: [
                        Raw(
                         PartRaw {
                          content: "documentation",
                          span: Span {
                           start: Position {
                            line: 27,
                            column: 9,
                           },
                           end: Position {
                            line: 27,
                            column: 22,
                           },
                          },
                         },
                        ),
                        Raw(
                         PartRaw {
                          content: "nixos",
                          span: Span {
                           start: Position {
                            line: 27,
                            column: 23,
                           },
                           end: Position {
                            line: 27,
                            column: 28,
                           },
                          },
                         },
                        ),
                        Raw(
                         PartRaw {
                          content: "includeAllModules",
                          span: Span {
                           start: Position {
                            line: 27,
                            column: 29,
                           },
                           end: Position {
                            line: 27,
                            column: 46,
                           },
                          },
                         },
                        ),
                       ],
                       to: Identifier(
                        Identifier {
                         id: "true",
                         span: Span {
                          start: Position {
                           line: 27,
                           column: 49,
                          },
                          end: Position {
                           line: 27,
                           column: 53,
                          },
                         },
                        },
                       ),
                      },
                     ),
                    ],
                    span: Span {
                     start: Position {
                      line: 18,
                      column: 7,
                     },
                     end: Position {
                      line: 28,
                      column: 8,
                     },
                    },
                   },
                  ),
                 ],
                 span: Span {
                  start: Position {
                   line: 5,
                   column: 15,
                  },
                  end: Position {
                   line: 29,
                   column: 6,
                  },
                 },
                },
               ),
              },
             ),
             KeyValue(
              BindingKeyValue {
               from: [
                Raw(
                 PartRaw {
                  content: "specialArgs",
                  span: Span {
                   start: Position {
                    line: 30,
                    column: 5,
                   },
                   end: Position {
                    line: 30,
                    column: 16,
                   },
                  },
                 },
                ),
                Raw(
                 PartRaw {
                  content: "someArg",
                  span: Span {
                   start: Position {
                    line: 30,
                    column: 17,
                   },
                   end: Position {
                    line: 30,
                    column: 24,
                   },
                  },
                 },
                ),
                Raw(
                 PartRaw {
                  content: "myModule",
                  span: Span {
                   start: Position {
                    line: 30,
                    column: 25,
                   },
                   end: Position {
                    line: 30,
                    column: 33,
                   },
                  },
                 },
                ),
               ],
               to: Function(
                Function {
                 head: Destructured(
                  FunctionHeadDestructured {
                   ellipsis: true,
                   identifier: None,
                   arguments: [
                    FunctionHeadDestructuredArgument {
                     identifier: "lib",
                     default: None,
                    },
                   ],
                  },
                 ),
                 body: Map(
                  Map {
                   recursive: false,
                   bindings: [
                    KeyValue(
                     BindingKeyValue {
                      from: [
                       Raw(
                        PartRaw {
                         content: "options",
                         span: Span {
                          start: Position {
                           line: 31,
                           column: 7,
                          },
                          end: Position {
                           line: 31,
                           column: 14,
                          },
                         },
                        },
                       ),
                       Raw(
                        PartRaw {
                         content: "foobar",
                         span: Span {
                          start: Position {
                           line: 31,
                           column: 15,
                          },
                          end: Position {
                           line: 31,
                           column: 21,
                          },
                         },
                        },
                       ),
                      ],
                      to: FunctionApplication(
                       FunctionApplication {
                        function: PropertyAccess(
                         PropertyAccess {
                          expression: Identifier(
                           Identifier {
                            id: "lib",
                            span: Span {
                             start: Position {
                              line: 31,
                              column: 24,
                             },
                             end: Position {
                              line: 31,
                              column: 27,
                             },
                            },
                           },
                          ),
                          attribute_path: [
                           Raw(
                            PartRaw {
                             content: "mkOption",
                             span: Span {
                              start: Position {
                               line: 31,
                               column: 28,
                              },
                              end: Position {
                               line: 31,
                               column: 36,
                              },
                             },
                            },
                           ),
                          ],
                          default: None,
                         },
                        ),
                        arguments: [
                         Map(
                          Map {
                           recursive: false,
                           bindings: [
                            KeyValue(
                             BindingKeyValue {
                              from: [
                               Raw(
                                PartRaw {
                                 content: "type",
                                 span: Span {
                                  start: Position {
                                   line: 32,
                                   column: 9,
                                  },
                                  end: Position {
                                   line: 32,
                                   column: 13,
                                  },
                                 },
                                },
                               ),
                              ],
                              to: PropertyAccess(
                               PropertyAccess {
                                expression: Identifier(
                                 Identifier {
                                  id: "lib",
                                  span: Span {
                                   start: Position {
                                    line: 32,
                                    column: 16,
                                   },
                                   end: Position {
                                    line: 32,
                                    column: 19,
                                   },
                                  },
                                 },
                                ),
                                attribute_path: [
                                 Raw(
                                  PartRaw {
                                   content: "types",
                                   span: Span {
                                    start: Position {
                                     line: 32,
                                     column: 20,
                                    },
                                    end: Position {
                                     line: 32,
                                     column: 25,
                                    },
                                   },
                                  },
                                 ),
                                 Raw(
                                  PartRaw {
                                   content: "str",
                                   span: Span {
                                    start: Position {
                                     line: 32,
                                     column: 26,
                                    },
                                    end: Position {
                                     line: 32,
                                     column: 29,
                                    },
                                   },
                                  },
                                 ),
                                ],
                                default: None,
                               },
                              ),
                             },
                            ),
                            KeyValue(
                             BindingKeyValue {
                              from: [
                               Raw(
                                PartRaw {
                                 content: "description",
                                 span: Span {
                                  start: Position {
                                   line: 33,
                                   column: 9,
                                  },
                                  end: Position {
                                   line: 33,
                                   column: 20,
                                  },
                                 },
                                },
                               ),
                              ],
                              to: FunctionApplication(
                               FunctionApplication {
                                function: PropertyAccess(
                                 PropertyAccess {
                                  expression: Identifier(
                                   Identifier {
                                    id: "lib",
                                    span: Span {
                                     start: Position {
                                      line: 33,
                                      column: 23,
                                     },
                                     end: Position {
                                      line: 33,
                                      column: 26,
                                     },
                                    },
                                   },
                                  ),
                                  attribute_path: [
                                   Raw(
                                    PartRaw {
                                     content: "mdDoc",
                                     span: Span {
                                      start: Position {
                                       line: 33,
                                       column: 27,
                                      },
                                      end: Position {
                                       line: 33,
                                       column: 32,
                                      },
                                     },
                                    },
                                   ),
                                  ],
                                  default: None,
                                 },
                                ),
                                arguments: [
                                 String(
                                  String_ {
                                   parts: [
                                    Raw(
                                     PartRaw {
                                      content: "The foobar option was added via specialArgs",
                                      span: Span {
                                       start: Position {
                                        line: 33,
                                        column: 34,
                                       },
                                       end: Position {
                                        line: 33,
                                        column: 77,
                                       },
                                      },
                                     },
                                    ),
                                   ],
                                   span: Span {
                                    start: Position {
                                     line: 33,
                                     column: 33,
                                    },
                                    end: Position {
                                     line: 33,
                                     column: 78,
                                    },
                                   },
                                  },
                                 ),
                                ],
                               },
                              ),
                             },
                            ),
                            KeyValue(
                             BindingKeyValue {
                              from: [
                               Raw(
                                PartRaw {
                                 content: "default",
                                 span: Span {
                                  start: Position {
                                   line: 34,
                                   column: 9,
                                  },
                                  end: Position {
                                   line: 34,
                                   column: 16,
                                  },
                                 },
                                },
                               ),
                              ],
                              to: String(
                               String_ {
                                parts: [
                                 Raw(
                                  PartRaw {
                                   content: "qux",
                                   span: Span {
                                    start: Position {
                                     line: 34,
                                     column: 20,
                                    },
                                    end: Position {
                                     line: 34,
                                     column: 23,
                                    },
                                   },
                                  },
                                 ),
                                ],
                                span: Span {
                                 start: Position {
                                  line: 34,
                                  column: 19,
                                 },
                                 end: Position {
                                  line: 34,
                                  column: 24,
                                 },
                                },
                               },
                              ),
                             },
                            ),
                           ],
                           span: Span {
                            start: Position {
                             line: 31,
                             column: 37,
                            },
                            end: Position {
                             line: 35,
                             column: 8,
                            },
                           },
                          },
                         ),
                        ],
                       },
                      ),
                     },
                    ),
                   ],
                   span: Span {
                    start: Position {
                     line: 30,
                     column: 50,
                    },
                    end: Position {
                     line: 36,
                     column: 6,
                    },
                   },
                  },
                 ),
                 span: Span {
                  start: Position {
                   line: 30,
                   column: 36,
                  },
                  end: Position {
                   line: 36,
                   column: 6,
                  },
                 },
                },
               ),
              },
             ),
            ],
            span: Span {
             start: Position {
              line: 4,
              column: 30,
             },
             end: Position {
              line: 37,
              column: 4,
             },
            },
           },
          ),
         ],
        },
       ),
      },
     ),
    ],
    target: FunctionApplication(
     FunctionApplication {
      function: Identifier(
       Identifier {
        id: "runCommand",
        span: Span {
         start: Position {
          line: 40,
          column: 1,
         },
         end: Position {
          line: 40,
          column: 11,
         },
        },
       },
      ),
      arguments: [
       String(
        String_ {
         parts: [
          Raw(
           PartRaw {
            content: "documentation-check",
            span: Span {
             start: Position {
              line: 40,
              column: 13,
             },
             end: Position {
              line: 40,
              column: 32,
             },
            },
           },
          ),
         ],
         span: Span {
          start: Position {
           line: 40,
           column: 12,
          },
          end: Position {
           line: 40,
           column: 33,
          },
         },
        },
       ),
       Map(
        Map {
         recursive: false,
         bindings: [
          Inherit(
           BindingInherit {
            from: Some(
             PropertyAccess(
              PropertyAccess {
               expression: Identifier(
                Identifier {
                 id: "sys",
                 span: Span {
                  start: Position {
                   line: 42,
                   column: 12,
                  },
                  end: Position {
                   line: 42,
                   column: 15,
                  },
                 },
                },
               ),
               attribute_path: [
                Raw(
                 PartRaw {
                  content: "config",
                  span: Span {
                   start: Position {
                    line: 42,
                    column: 16,
                   },
                   end: Position {
                    line: 42,
                    column: 22,
                   },
                  },
                 },
                ),
                Raw(
                 PartRaw {
                  content: "system",
                  span: Span {
                   start: Position {
                    line: 42,
                    column: 23,
                   },
                   end: Position {
                    line: 42,
                    column: 29,
                   },
                  },
                 },
                ),
                Raw(
                 PartRaw {
                  content: "build",
                  span: Span {
                   start: Position {
                    line: 42,
                    column: 30,
                   },
                   end: Position {
                    line: 42,
                    column: 35,
                   },
                  },
                 },
                ),
                Raw(
                 PartRaw {
                  content: "manual",
                  span: Span {
                   start: Position {
                    line: 42,
                    column: 36,
                   },
                   end: Position {
                    line: 42,
                    column: 42,
                   },
                  },
                 },
                ),
               ],
               default: None,
              },
             ),
            ),
            attributes: [
             Raw(
              PartRaw {
               content: "optionsJSON",
               span: Span {
                start: Position {
                 line: 42,
                 column: 44,
                },
                end: Position {
                 line: 42,
                 column: 55,
                },
               },
              },
             ),
            ],
            span: Span {
             start: Position {
              line: 41,
              column: 2,
             },
             end: Position {
              line: 42,
              column: 56,
             },
            },
           },
          ),
         ],
         span: Span {
          start: Position {
           line: 41,
           column: 1,
          },
          end: Position {
           line: 43,
           column: 2,
          },
         },
        },
       ),
       IndentedString(
        IndentedString {
         parts: [
          Raw(
           PartRaw {
            content: "json=\"$optionsJSON/share/doc/nixos/options.json\"\necho checking $json\n\ngrep 'The foobar option was added via specialArgs' <\"$json\" >/dev/null\ntouch $out\n",
            span: Span {
             start: Position {
              line: 44,
              column: 1,
             },
             end: Position {
              line: 49,
              column: 1,
             },
            },
           },
          ),
         ],
         span: Span {
          start: Position {
           line: 43,
           column: 3,
          },
          end: Position {
           line: 49,
           column: 3,
          },
         },
        },
       ),
      ],
     },
    ),
    span: Span {
     start: Position {
      line: 3,
      column: 1,
     },
     end: Position {
      line: 49,
      column: 3,
     },
    },
   },
  ),
  span: Span {
   start: Position {
    line: 1,
    column: 1,
   },
   end: Position {
    line: 49,
    column: 3,
   },
  },
 },
)