---
Function {
 argument: Destructured {
  identifier: None,
  arguments: [
   DestructuredArgument {
    identifier: "lib",
    default: None,
   },
   DestructuredArgument {
    identifier: "systemdUtils",
    default: None,
   },
  ],
  ellipsis: false,
 },
 definition: With {
  expression: PropertyAccess {
   expression: Variable {
    identifier: "systemdUtils",
    position: (3, 6),
   },
   attribute_path: AttributePath {
    parts: [
     Raw {
      content: "lib",
      position: (3, 19),
     },
    ],
   },
   default: None,
  },
  target: With {
   expression: PropertyAccess {
    expression: Variable {
     identifier: "systemdUtils",
     position: (4, 6),
    },
    attribute_path: AttributePath {
     parts: [
      Raw {
       content: "unitOptions",
       position: (4, 19),
      },
     ],
    },
    default: None,
   },
   target: With {
    expression: Variable {
     identifier: "lib",
     position: (5, 6),
    },
    target: Map {
     bindings: [
      Binding {
       from: AttributePath {
        parts: [
         Raw {
          content: "units",
          position: (8, 3),
         },
        ],
       },
       to: With {
        expression: Variable {
         identifier: "types",
         position: (8, 16),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (9, 5),
         },
         arguments: [
          Parentheses {
           expression: FunctionApplication {
            function: Variable {
             identifier: "submodule",
             position: (9, 14),
            },
            arguments: [
             Parentheses {
              expression: Function {
               argument: Destructured {
                identifier: None,
                arguments: [
                 DestructuredArgument {
                  identifier: "name",
                  default: None,
                 },
                 DestructuredArgument {
                  identifier: "config",
                  default: None,
                 },
                ],
                ellipsis: true,
               },
               definition: Map {
                bindings: [
                 Binding {
                  from: AttributePath {
                   parts: [
                    Raw {
                     content: "options",
                     position: (10, 7),
                    },
                   ],
                  },
                  to: Variable {
                   identifier: "concreteUnitOptions",
                   position: (10, 17),
                  },
                 },
                 Binding {
                  from: AttributePath {
                   parts: [
                    Raw {
                     content: "config",
                     position: (11, 7),
                    },
                   ],
                  },
                  to: Map {
                   bindings: [
                    Binding {
                     from: AttributePath {
                      parts: [
                       Raw {
                        content: "unit",
                        position: (11, 18),
                       },
                      ],
                     },
                     to: FunctionApplication {
                      function: Variable {
                       identifier: "mkDefault",
                       position: (11, 25),
                      },
                      arguments: [
                       Parentheses {
                        expression: FunctionApplication {
                         function: PropertyAccess {
                          expression: Variable {
                           identifier: "systemdUtils",
                           position: (11, 36),
                          },
                          attribute_path: AttributePath {
                           parts: [
                            Raw {
                             content: "lib",
                             position: (11, 49),
                            },
                            Raw {
                             content: "makeUnit",
                             position: (11, 53),
                            },
                           ],
                          },
                          default: None,
                         },
                         arguments: [
                          Variable {
                           identifier: "name",
                           position: (11, 62),
                          },
                          Variable {
                           identifier: "config",
                           position: (11, 67),
                          },
                         ],
                        },
                        position: (11, 35),
                       },
                      ],
                     },
                    },
                   ],
                   recursive: false,
                   position: (11, 16),
                  },
                 },
                ],
                recursive: false,
                position: (9, 48),
               },
               position: (9, 25),
              },
              position: (9, 24),
             },
            ],
           },
           position: (9, 13),
          },
         ],
        },
        position: (8, 11),
       },
      },
      Binding {
       from: AttributePath {
        parts: [
         Raw {
          content: "services",
          position: (14, 3),
         },
        ],
       },
       to: With {
        expression: Variable {
         identifier: "types",
         position: (14, 19),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (14, 26),
         },
         arguments: [
          Parentheses {
           expression: FunctionApplication {
            function: Variable {
             identifier: "submodule",
             position: (14, 35),
            },
            arguments: [
             List {
              elements: [
               Variable {
                identifier: "stage2ServiceOptions",
                position: (14, 47),
               },
               Variable {
                identifier: "unitConfig",
                position: (14, 68),
               },
               Variable {
                identifier: "stage2ServiceConfig",
                position: (14, 79),
               },
              ],
              position: (14, 45),
             },
            ],
           },
           position: (14, 34),
          },
         ],
        },
        position: (14, 14),
       },
      },
      Binding {
       from: AttributePath {
        parts: [
         Raw {
          content: "initrdServices",
          position: (15, 3),
         },
        ],
       },
       to: With {
        expression: Variable {
         identifier: "types",
         position: (15, 25),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (15, 32),
         },
         arguments: [
          Parentheses {
           expression: FunctionApplication {
            function: Variable {
             identifier: "submodule",
             position: (15, 41),
            },
            arguments: [
             List {
              elements: [
               Variable {
                identifier: "stage1ServiceOptions",
                position: (15, 53),
               },
               Variable {
                identifier: "unitConfig",
                position: (15, 74),
               },
               Variable {
                identifier: "stage1ServiceConfig",
                position: (15, 85),
               },
              ],
              position: (15, 51),
             },
            ],
           },
           position: (15, 40),
          },
         ],
        },
        position: (15, 20),
       },
      },
      Binding {
       from: AttributePath {
        parts: [
         Raw {
          content: "targets",
          position: (17, 3),
         },
        ],
       },
       to: With {
        expression: Variable {
         identifier: "types",
         position: (17, 18),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (17, 25),
         },
         arguments: [
          Parentheses {
           expression: FunctionApplication {
            function: Variable {
             identifier: "submodule",
             position: (17, 34),
            },
            arguments: [
             List {
              elements: [
               Variable {
                identifier: "stage2CommonUnitOptions",
                position: (17, 46),
               },
               Variable {
                identifier: "unitConfig",
                position: (17, 70),
               },
              ],
              position: (17, 44),
             },
            ],
           },
           position: (17, 33),
          },
         ],
        },
        position: (17, 13),
       },
      },
      Binding {
       from: AttributePath {
        parts: [
         Raw {
          content: "initrdTargets",
          position: (18, 3),
         },
        ],
       },
       to: With {
        expression: Variable {
         identifier: "types",
         position: (18, 24),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (18, 31),
         },
         arguments: [
          Parentheses {
           expression: FunctionApplication {
            function: Variable {
             identifier: "submodule",
             position: (18, 40),
            },
            arguments: [
             List {
              elements: [
               Variable {
                identifier: "stage1CommonUnitOptions",
                position: (18, 52),
               },
               Variable {
                identifier: "unitConfig",
                position: (18, 76),
               },
              ],
              position: (18, 50),
             },
            ],
           },
           position: (18, 39),
          },
         ],
        },
        position: (18, 19),
       },
      },
      Binding {
       from: AttributePath {
        parts: [
         Raw {
          content: "sockets",
          position: (20, 3),
         },
        ],
       },
       to: With {
        expression: Variable {
         identifier: "types",
         position: (20, 18),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (20, 25),
         },
         arguments: [
          Parentheses {
           expression: FunctionApplication {
            function: Variable {
             identifier: "submodule",
             position: (20, 34),
            },
            arguments: [
             List {
              elements: [
               Variable {
                identifier: "stage2SocketOptions",
                position: (20, 46),
               },
               Variable {
                identifier: "unitConfig",
                position: (20, 66),
               },
              ],
              position: (20, 44),
             },
            ],
           },
           position: (20, 33),
          },
         ],
        },
        position: (20, 13),
       },
      },
      Binding {
       from: AttributePath {
        parts: [
         Raw {
          content: "initrdSockets",
          position: (21, 3),
         },
        ],
       },
       to: With {
        expression: Variable {
         identifier: "types",
         position: (21, 24),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (21, 31),
         },
         arguments: [
          Parentheses {
           expression: FunctionApplication {
            function: Variable {
             identifier: "submodule",
             position: (21, 40),
            },
            arguments: [
             List {
              elements: [
               Variable {
                identifier: "stage1SocketOptions",
                position: (21, 52),
               },
               Variable {
                identifier: "unitConfig",
                position: (21, 72),
               },
              ],
              position: (21, 50),
             },
            ],
           },
           position: (21, 39),
          },
         ],
        },
        position: (21, 19),
       },
      },
      Binding {
       from: AttributePath {
        parts: [
         Raw {
          content: "timers",
          position: (23, 3),
         },
        ],
       },
       to: With {
        expression: Variable {
         identifier: "types",
         position: (23, 17),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (23, 24),
         },
         arguments: [
          Parentheses {
           expression: FunctionApplication {
            function: Variable {
             identifier: "submodule",
             position: (23, 33),
            },
            arguments: [
             List {
              elements: [
               Variable {
                identifier: "stage2TimerOptions",
                position: (23, 45),
               },
               Variable {
                identifier: "unitConfig",
                position: (23, 64),
               },
              ],
              position: (23, 43),
             },
            ],
           },
           position: (23, 32),
          },
         ],
        },
        position: (23, 12),
       },
      },
      Binding {
       from: AttributePath {
        parts: [
         Raw {
          content: "initrdTimers",
          position: (24, 3),
         },
        ],
       },
       to: With {
        expression: Variable {
         identifier: "types",
         position: (24, 23),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (24, 30),
         },
         arguments: [
          Parentheses {
           expression: FunctionApplication {
            function: Variable {
             identifier: "submodule",
             position: (24, 39),
            },
            arguments: [
             List {
              elements: [
               Variable {
                identifier: "stage1TimerOptions",
                position: (24, 51),
               },
               Variable {
                identifier: "unitConfig",
                position: (24, 70),
               },
              ],
              position: (24, 49),
             },
            ],
           },
           position: (24, 38),
          },
         ],
        },
        position: (24, 18),
       },
      },
      Binding {
       from: AttributePath {
        parts: [
         Raw {
          content: "paths",
          position: (26, 3),
         },
        ],
       },
       to: With {
        expression: Variable {
         identifier: "types",
         position: (26, 16),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (26, 23),
         },
         arguments: [
          Parentheses {
           expression: FunctionApplication {
            function: Variable {
             identifier: "submodule",
             position: (26, 32),
            },
            arguments: [
             List {
              elements: [
               Variable {
                identifier: "stage2PathOptions",
                position: (26, 44),
               },
               Variable {
                identifier: "unitConfig",
                position: (26, 62),
               },
              ],
              position: (26, 42),
             },
            ],
           },
           position: (26, 31),
          },
         ],
        },
        position: (26, 11),
       },
      },
      Binding {
       from: AttributePath {
        parts: [
         Raw {
          content: "initrdPaths",
          position: (27, 3),
         },
        ],
       },
       to: With {
        expression: Variable {
         identifier: "types",
         position: (27, 22),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (27, 29),
         },
         arguments: [
          Parentheses {
           expression: FunctionApplication {
            function: Variable {
             identifier: "submodule",
             position: (27, 38),
            },
            arguments: [
             List {
              elements: [
               Variable {
                identifier: "stage1PathOptions",
                position: (27, 50),
               },
               Variable {
                identifier: "unitConfig",
                position: (27, 68),
               },
              ],
              position: (27, 48),
             },
            ],
           },
           position: (27, 37),
          },
         ],
        },
        position: (27, 17),
       },
      },
      Binding {
       from: AttributePath {
        parts: [
         Raw {
          content: "slices",
          position: (29, 3),
         },
        ],
       },
       to: With {
        expression: Variable {
         identifier: "types",
         position: (29, 17),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (29, 24),
         },
         arguments: [
          Parentheses {
           expression: FunctionApplication {
            function: Variable {
             identifier: "submodule",
             position: (29, 33),
            },
            arguments: [
             List {
              elements: [
               Variable {
                identifier: "stage2SliceOptions",
                position: (29, 45),
               },
               Variable {
                identifier: "unitConfig",
                position: (29, 64),
               },
              ],
              position: (29, 43),
             },
            ],
           },
           position: (29, 32),
          },
         ],
        },
        position: (29, 12),
       },
      },
      Binding {
       from: AttributePath {
        parts: [
         Raw {
          content: "initrdSlices",
          position: (30, 3),
         },
        ],
       },
       to: With {
        expression: Variable {
         identifier: "types",
         position: (30, 23),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (30, 30),
         },
         arguments: [
          Parentheses {
           expression: FunctionApplication {
            function: Variable {
             identifier: "submodule",
             position: (30, 39),
            },
            arguments: [
             List {
              elements: [
               Variable {
                identifier: "stage1SliceOptions",
                position: (30, 51),
               },
               Variable {
                identifier: "unitConfig",
                position: (30, 70),
               },
              ],
              position: (30, 49),
             },
            ],
           },
           position: (30, 38),
          },
         ],
        },
        position: (30, 18),
       },
      },
      Binding {
       from: AttributePath {
        parts: [
         Raw {
          content: "mounts",
          position: (32, 3),
         },
        ],
       },
       to: With {
        expression: Variable {
         identifier: "types",
         position: (32, 17),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "listOf",
          position: (32, 24),
         },
         arguments: [
          Parentheses {
           expression: FunctionApplication {
            function: Variable {
             identifier: "submodule",
             position: (32, 32),
            },
            arguments: [
             List {
              elements: [
               Variable {
                identifier: "stage2MountOptions",
                position: (32, 44),
               },
               Variable {
                identifier: "unitConfig",
                position: (32, 63),
               },
               Variable {
                identifier: "mountConfig",
                position: (32, 74),
               },
              ],
              position: (32, 42),
             },
            ],
           },
           position: (32, 31),
          },
         ],
        },
        position: (32, 12),
       },
      },
      Binding {
       from: AttributePath {
        parts: [
         Raw {
          content: "initrdMounts",
          position: (33, 3),
         },
        ],
       },
       to: With {
        expression: Variable {
         identifier: "types",
         position: (33, 23),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "listOf",
          position: (33, 30),
         },
         arguments: [
          Parentheses {
           expression: FunctionApplication {
            function: Variable {
             identifier: "submodule",
             position: (33, 38),
            },
            arguments: [
             List {
              elements: [
               Variable {
                identifier: "stage1MountOptions",
                position: (33, 50),
               },
               Variable {
                identifier: "unitConfig",
                position: (33, 69),
               },
               Variable {
                identifier: "mountConfig",
                position: (33, 80),
               },
              ],
              position: (33, 48),
             },
            ],
           },
           position: (33, 37),
          },
         ],
        },
        position: (33, 18),
       },
      },
      Binding {
       from: AttributePath {
        parts: [
         Raw {
          content: "automounts",
          position: (35, 3),
         },
        ],
       },
       to: With {
        expression: Variable {
         identifier: "types",
         position: (35, 21),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "listOf",
          position: (35, 28),
         },
         arguments: [
          Parentheses {
           expression: FunctionApplication {
            function: Variable {
             identifier: "submodule",
             position: (35, 36),
            },
            arguments: [
             List {
              elements: [
               Variable {
                identifier: "stage2AutomountOptions",
                position: (35, 48),
               },
               Variable {
                identifier: "unitConfig",
                position: (35, 71),
               },
               Variable {
                identifier: "automountConfig",
                position: (35, 82),
               },
              ],
              position: (35, 46),
             },
            ],
           },
           position: (35, 35),
          },
         ],
        },
        position: (35, 16),
       },
      },
      Binding {
       from: AttributePath {
        parts: [
         Raw {
          content: "initrdAutomounts",
          position: (36, 3),
         },
        ],
       },
       to: With {
        expression: Variable {
         identifier: "types",
         position: (36, 27),
        },
        target: FunctionApplication {
         function: Variable {
          identifier: "attrsOf",
          position: (36, 34),
         },
         arguments: [
          Parentheses {
           expression: FunctionApplication {
            function: Variable {
             identifier: "submodule",
             position: (36, 43),
            },
            arguments: [
             List {
              elements: [
               Variable {
                identifier: "stage1AutomountOptions",
                position: (36, 55),
               },
               Variable {
                identifier: "unitConfig",
                position: (36, 78),
               },
               Variable {
                identifier: "automountConfig",
                position: (36, 89),
               },
              ],
              position: (36, 53),
             },
            ],
           },
           position: (36, 42),
          },
         ],
        },
        position: (36, 22),
       },
      },
     ],
     recursive: true,
     position: (7, 1),
    },
    position: (5, 1),
   },
   position: (4, 1),
  },
  position: (3, 1),
 },
 position: (1, 1),
}