---
Function {
 argument: Destructured {
  identifier: None,
  arguments: [
   DestructuredArgument {
    identifier: "lib",
    default: None,
   },
  ],
  ellipsis: false,
 },
 definition: Map {
  bindings: [
   Binding {
    from: AttributePath {
     parts: [
      Raw {
       content: "splitVersion",
       position: (12, 3),
      },
     ],
    },
    to: PropertyAccess {
     expression: Variable {
      identifier: "builtins",
      position: (12, 18),
     },
     attribute_path: AttributePath {
      parts: [
       Raw {
        content: "splitVersion",
        position: (12, 27),
       },
      ],
     },
     default: Some(
      Parentheses {
       expression: FunctionApplication {
        function: PropertyAccess {
         expression: Variable {
          identifier: "lib",
          position: (12, 44),
         },
         attribute_path: AttributePath {
          parts: [
           Raw {
            content: "splitString",
            position: (12, 48),
           },
          ],
         },
         default: None,
        },
        arguments: [
         String {
          parts: [
           Raw {
            content: ".",
            position: (12, 61),
           },
          ],
          position: (12, 60),
         },
        ],
       },
       position: (12, 43),
      },
     ),
    },
   },
   Binding {
    from: AttributePath {
     parts: [
      Raw {
       content: "major",
       position: (20, 3),
      },
     ],
    },
    to: Function {
     argument: Simple {
      identifier: "v",
     },
     definition: FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "builtins",
        position: (20, 14),
       },
       attribute_path: AttributePath {
        parts: [
         Raw {
          content: "elemAt",
          position: (20, 23),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Parentheses {
        expression: FunctionApplication {
         function: Variable {
          identifier: "splitVersion",
          position: (20, 31),
         },
         arguments: [
          Variable {
           identifier: "v",
           position: (20, 44),
          },
         ],
        },
        position: (20, 30),
       },
       Int {
        value: 0,
        position: (20, 47),
       },
      ],
     },
     position: (20, 11),
    },
   },
   Binding {
    from: AttributePath {
     parts: [
      Raw {
       content: "minor",
       position: (28, 3),
      },
     ],
    },
    to: Function {
     argument: Simple {
      identifier: "v",
     },
     definition: FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "builtins",
        position: (28, 14),
       },
       attribute_path: AttributePath {
        parts: [
         Raw {
          content: "elemAt",
          position: (28, 23),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Parentheses {
        expression: FunctionApplication {
         function: Variable {
          identifier: "splitVersion",
          position: (28, 31),
         },
         arguments: [
          Variable {
           identifier: "v",
           position: (28, 44),
          },
         ],
        },
        position: (28, 30),
       },
       Int {
        value: 1,
        position: (28, 47),
       },
      ],
     },
     position: (28, 11),
    },
   },
   Binding {
    from: AttributePath {
     parts: [
      Raw {
       content: "patch",
       position: (36, 3),
      },
     ],
    },
    to: Function {
     argument: Simple {
      identifier: "v",
     },
     definition: FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "builtins",
        position: (36, 14),
       },
       attribute_path: AttributePath {
        parts: [
         Raw {
          content: "elemAt",
          position: (36, 23),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Parentheses {
        expression: FunctionApplication {
         function: Variable {
          identifier: "splitVersion",
          position: (36, 31),
         },
         arguments: [
          Variable {
           identifier: "v",
           position: (36, 44),
          },
         ],
        },
        position: (36, 30),
       },
       Int {
        value: 2,
        position: (36, 47),
       },
      ],
     },
     position: (36, 11),
    },
   },
   Binding {
    from: AttributePath {
     parts: [
      Raw {
       content: "majorMinor",
       position: (45, 3),
      },
     ],
    },
    to: Function {
     argument: Simple {
      identifier: "v",
     },
     definition: FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "builtins",
        position: (46, 5),
       },
       attribute_path: AttributePath {
        parts: [
         Raw {
          content: "concatStringsSep",
          position: (46, 14),
         },
        ],
       },
       default: None,
      },
      arguments: [
       String {
        parts: [
         Raw {
          content: ".",
          position: (46, 32),
         },
        ],
        position: (46, 31),
       },
       Parentheses {
        expression: FunctionApplication {
         function: PropertyAccess {
          expression: Variable {
           identifier: "lib",
           position: (47, 6),
          },
          attribute_path: AttributePath {
           parts: [
            Raw {
             content: "take",
             position: (47, 10),
            },
           ],
          },
          default: None,
         },
         arguments: [
          Int {
           value: 2,
           position: (47, 15),
          },
          Parentheses {
           expression: FunctionApplication {
            function: Variable {
             identifier: "splitVersion",
             position: (47, 18),
            },
            arguments: [
             Variable {
              identifier: "v",
              position: (47, 31),
             },
            ],
           },
           position: (47, 17),
          },
         ],
        },
        position: (47, 5),
       },
      ],
     },
     position: (45, 16),
    },
   },
  ],
  recursive: true,
  position: (4, 1),
 },
 position: (2, 1),
}