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: "builtins", span: Span { start: Position { line: 5, column: 10, }, end: Position { line: 5, column: 18, }, }, }, ), ), attributes: [ Raw( PartRaw { content: "length", span: Span { start: Position { line: 5, column: 20, }, end: Position { line: 5, column: 26, }, }, }, ), ], span: Span { start: Position { line: 3, column: 4, }, end: Position { line: 5, column: 27, }, }, }, ), ], target: Map( Map { recursive: true, bindings: [ Inherit( BindingInherit { from: Some( Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 11, column: 12, }, end: Position { line: 11, column: 20, }, }, }, ), ), attributes: [ Raw( PartRaw { content: "compareVersions", span: Span { start: Position { line: 12, column: 5, }, end: Position { line: 12, column: 20, }, }, }, ), Raw( PartRaw { content: "elem", span: Span { start: Position { line: 13, column: 5, }, end: Position { line: 13, column: 9, }, }, }, ), Raw( PartRaw { content: "elemAt", span: Span { start: Position { line: 14, column: 5, }, end: Position { line: 14, column: 11, }, }, }, ), Raw( PartRaw { content: "filter", span: Span { start: Position { line: 15, column: 5, }, end: Position { line: 15, column: 11, }, }, }, ), Raw( PartRaw { content: "fromJSON", span: Span { start: Position { line: 16, column: 5, }, end: Position { line: 16, column: 13, }, }, }, ), Raw( PartRaw { content: "head", span: Span { start: Position { line: 17, column: 5, }, end: Position { line: 17, column: 9, }, }, }, ), Raw( PartRaw { content: "isInt", span: Span { start: Position { line: 18, column: 5, }, end: Position { line: 18, column: 10, }, }, }, ), Raw( PartRaw { content: "isList", span: Span { start: Position { line: 19, column: 5, }, end: Position { line: 19, column: 11, }, }, }, ), Raw( PartRaw { content: "isAttrs", span: Span { start: Position { line: 20, column: 5, }, end: Position { line: 20, column: 12, }, }, }, ), Raw( PartRaw { content: "isString", span: Span { start: Position { line: 21, column: 5, }, end: Position { line: 21, column: 13, }, }, }, ), Raw( PartRaw { content: "match", span: Span { start: Position { line: 22, column: 5, }, end: Position { line: 22, column: 10, }, }, }, ), Raw( PartRaw { content: "parseDrvName", span: Span { start: Position { line: 23, column: 5, }, end: Position { line: 23, column: 17, }, }, }, ), Raw( PartRaw { content: "readFile", span: Span { start: Position { line: 24, column: 5, }, end: Position { line: 24, column: 13, }, }, }, ), Raw( PartRaw { content: "replaceStrings", span: Span { start: Position { line: 25, column: 5, }, end: Position { line: 25, column: 19, }, }, }, ), Raw( PartRaw { content: "split", span: Span { start: Position { line: 26, column: 5, }, end: Position { line: 26, column: 10, }, }, }, ), Raw( PartRaw { content: "storeDir", span: Span { start: Position { line: 27, column: 5, }, end: Position { line: 27, column: 13, }, }, }, ), Raw( PartRaw { content: "stringLength", span: Span { start: Position { line: 28, column: 5, }, end: Position { line: 28, column: 17, }, }, }, ), Raw( PartRaw { content: "substring", span: Span { start: Position { line: 29, column: 5, }, end: Position { line: 29, column: 14, }, }, }, ), Raw( PartRaw { content: "tail", span: Span { start: Position { line: 30, column: 5, }, end: Position { line: 30, column: 9, }, }, }, ), Raw( PartRaw { content: "toJSON", span: Span { start: Position { line: 31, column: 5, }, end: Position { line: 31, column: 11, }, }, }, ), Raw( PartRaw { content: "typeOf", span: Span { start: Position { line: 32, column: 5, }, end: Position { line: 32, column: 11, }, }, }, ), Raw( PartRaw { content: "unsafeDiscardStringContext", span: Span { start: Position { line: 33, column: 5, }, end: Position { line: 33, column: 31, }, }, }, ), ], span: Span { start: Position { line: 9, column: 6, }, end: Position { line: 34, column: 6, }, }, }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "concatStrings", span: Span { start: Position { line: 44, column: 3, }, end: Position { line: 44, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 44, column: 19, }, end: Position { line: 44, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "concatStringsSep", span: Span { start: Position { line: 44, column: 28, }, end: Position { line: 44, column: 44, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [], span: Span { start: Position { line: 44, column: 45, }, end: Position { line: 44, column: 47, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "concatMapStrings", span: Span { start: Position { line: 54, column: 3, }, end: Position { line: 54, column: 19, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "f", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "list", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStrings", span: Span { start: Position { line: 54, column: 31, }, end: Position { line: 54, column: 44, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "map", span: Span { start: Position { line: 54, column: 46, }, end: Position { line: 54, column: 49, }, }, }, ), arguments: [ Identifier( Identifier { id: "f", span: Span { start: Position { line: 54, column: 50, }, end: Position { line: 54, column: 51, }, }, }, ), Identifier( Identifier { id: "list", span: Span { start: Position { line: 54, column: 52, }, end: Position { line: 54, column: 56, }, }, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 54, column: 25, }, end: Position { line: 54, column: 57, }, }, }, ), span: Span { start: Position { line: 54, column: 22, }, end: Position { line: 54, column: 57, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "concatImapStrings", span: Span { start: Position { line: 65, column: 3, }, end: Position { line: 65, column: 20, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "f", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "list", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStrings", span: Span { start: Position { line: 65, column: 32, }, end: Position { line: 65, column: 45, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 65, column: 47, }, end: Position { line: 65, column: 50, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "imap1", span: Span { start: Position { line: 65, column: 51, }, end: Position { line: 65, column: 56, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "f", span: Span { start: Position { line: 65, column: 57, }, end: Position { line: 65, column: 58, }, }, }, ), Identifier( Identifier { id: "list", span: Span { start: Position { line: 65, column: 59, }, end: Position { line: 65, column: 63, }, }, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 65, column: 26, }, end: Position { line: 65, column: 64, }, }, }, ), span: Span { start: Position { line: 65, column: 23, }, end: Position { line: 65, column: 64, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "intersperse", span: Span { start: Position { line: 75, column: 3, }, end: Position { line: 75, column: 14, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "separator", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "list", }, ), body: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "list", span: Span { start: Position { line: 80, column: 8, }, end: Position { line: 80, column: 12, }, }, }, ), operator: EqualTo, right: List( List { elements: [], span: Span { start: Position { line: 80, column: 16, }, end: Position { line: 80, column: 18, }, }, }, ), }, ), operator: LogicalOr, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "length", span: Span { start: Position { line: 80, column: 22, }, end: Position { line: 80, column: 28, }, }, }, ), arguments: [ Identifier( Identifier { id: "list", span: Span { start: Position { line: 80, column: 29, }, end: Position { line: 80, column: 33, }, }, }, ), ], }, ), operator: EqualTo, right: Integer( Integer { value: "1", span: Span { start: Position { line: 80, column: 37, }, end: Position { line: 80, column: 38, }, }, }, ), }, ), }, ), then: Identifier( Identifier { id: "list", span: Span { start: Position { line: 81, column: 10, }, end: Position { line: 81, column: 14, }, }, }, ), else_: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "tail", span: Span { start: Position { line: 82, column: 10, }, end: Position { line: 82, column: 14, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 82, column: 16, }, end: Position { line: 82, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "concatMap", span: Span { start: Position { line: 82, column: 20, }, end: Position { line: 82, column: 29, }, }, }, ), ], default: None, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: List( List { elements: [ Identifier( Identifier { id: "separator", span: Span { start: Position { line: 82, column: 35, }, end: Position { line: 82, column: 44, }, }, }, ), Identifier( Identifier { id: "x", span: Span { start: Position { line: 82, column: 45, }, end: Position { line: 82, column: 46, }, }, }, ), ], span: Span { start: Position { line: 82, column: 34, }, end: Position { line: 82, column: 47, }, }, }, ), span: Span { start: Position { line: 82, column: 31, }, end: Position { line: 82, column: 47, }, }, }, ), Identifier( Identifier { id: "list", span: Span { start: Position { line: 82, column: 49, }, end: Position { line: 82, column: 53, }, }, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 80, column: 5, }, end: Position { line: 82, column: 54, }, }, }, ), span: Span { start: Position { line: 79, column: 5, }, end: Position { line: 82, column: 54, }, }, }, ), span: Span { start: Position { line: 77, column: 5, }, end: Position { line: 82, column: 54, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "concatStringsSep", span: Span { start: Position { line: 92, column: 3, }, end: Position { line: 92, column: 19, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 92, column: 22, }, end: Position { line: 92, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "concatStringsSep", span: Span { start: Position { line: 92, column: 31, }, end: Position { line: 92, column: 47, }, }, }, ), ], default: Some( Function( Function { head: Simple( FunctionHeadSimple { identifier: "separator", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "list", }, ), body: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 93, column: 5, }, end: Position { line: 93, column: 8, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "foldl'", span: Span { start: Position { line: 93, column: 9, }, end: Position { line: 93, column: 15, }, }, }, ), ], default: None, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "y", }, ), body: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "x", span: Span { start: Position { line: 93, column: 23, }, end: Position { line: 93, column: 24, }, }, }, ), operator: Addition, right: Identifier( Identifier { id: "y", span: Span { start: Position { line: 93, column: 27, }, end: Position { line: 93, column: 28, }, }, }, ), }, ), span: Span { start: Position { line: 93, column: 20, }, end: Position { line: 93, column: 28, }, }, }, ), span: Span { start: Position { line: 93, column: 17, }, end: Position { line: 93, column: 28, }, }, }, ), String( String_ { parts: [], span: Span { start: Position { line: 93, column: 30, }, end: Position { line: 93, column: 32, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "intersperse", span: Span { start: Position { line: 93, column: 34, }, end: Position { line: 93, column: 45, }, }, }, ), arguments: [ Identifier( Identifier { id: "separator", span: Span { start: Position { line: 93, column: 46, }, end: Position { line: 93, column: 55, }, }, }, ), Identifier( Identifier { id: "list", span: Span { start: Position { line: 93, column: 56, }, end: Position { line: 93, column: 60, }, }, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 92, column: 63, }, end: Position { line: 93, column: 61, }, }, }, ), span: Span { start: Position { line: 92, column: 52, }, end: Position { line: 93, column: 61, }, }, }, ), ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "concatMapStringsSep", span: Span { start: Position { line: 105, column: 3, }, end: Position { line: 105, column: 22, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "sep", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "f", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "list", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 111, column: 11, }, end: Position { line: 111, column: 27, }, }, }, ), arguments: [ Identifier( Identifier { id: "sep", span: Span { start: Position { line: 111, column: 28, }, end: Position { line: 111, column: 31, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "map", span: Span { start: Position { line: 111, column: 33, }, end: Position { line: 111, column: 36, }, }, }, ), arguments: [ Identifier( Identifier { id: "f", span: Span { start: Position { line: 111, column: 37, }, end: Position { line: 111, column: 38, }, }, }, ), Identifier( Identifier { id: "list", span: Span { start: Position { line: 111, column: 39, }, end: Position { line: 111, column: 43, }, }, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 111, column: 5, }, end: Position { line: 111, column: 44, }, }, }, ), span: Span { start: Position { line: 109, column: 5, }, end: Position { line: 111, column: 44, }, }, }, ), span: Span { start: Position { line: 107, column: 5, }, end: Position { line: 111, column: 44, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "concatImapStringsSep", span: Span { start: Position { line: 122, column: 3, }, end: Position { line: 122, column: 23, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "sep", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "f", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "list", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 128, column: 11, }, end: Position { line: 128, column: 27, }, }, }, ), arguments: [ Identifier( Identifier { id: "sep", span: Span { start: Position { line: 128, column: 28, }, end: Position { line: 128, column: 31, }, }, }, ), FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 128, column: 33, }, end: Position { line: 128, column: 36, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "imap1", span: Span { start: Position { line: 128, column: 37, }, end: Position { line: 128, column: 42, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "f", span: Span { start: Position { line: 128, column: 43, }, end: Position { line: 128, column: 44, }, }, }, ), Identifier( Identifier { id: "list", span: Span { start: Position { line: 128, column: 45, }, end: Position { line: 128, column: 49, }, }, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 128, column: 5, }, end: Position { line: 128, column: 50, }, }, }, ), span: Span { start: Position { line: 126, column: 5, }, end: Position { line: 128, column: 50, }, }, }, ), span: Span { start: Position { line: 124, column: 5, }, end: Position { line: 128, column: 50, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "makeSearchPath", span: Span { start: Position { line: 141, column: 3, }, end: Position { line: 141, column: 17, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "subDir", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "paths", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 146, column: 5, }, end: Position { line: 146, column: 21, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: ":", span: Span { start: Position { line: 146, column: 23, }, end: Position { line: 146, column: 24, }, }, }, ), ], span: Span { start: Position { line: 146, column: 22, }, end: Position { line: 146, column: 25, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "map", span: Span { start: Position { line: 146, column: 27, }, end: Position { line: 146, column: 30, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "path", }, ), body: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "path", span: Span { start: Position { line: 146, column: 38, }, end: Position { line: 146, column: 42, }, }, }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "/", span: Span { start: Position { line: 146, column: 46, }, end: Position { line: 146, column: 47, }, }, }, ), ], span: Span { start: Position { line: 146, column: 45, }, end: Position { line: 146, column: 48, }, }, }, ), }, ), operator: Addition, right: Identifier( Identifier { id: "subDir", span: Span { start: Position { line: 146, column: 51, }, end: Position { line: 146, column: 57, }, }, }, ), }, ), span: Span { start: Position { line: 146, column: 32, }, end: Position { line: 146, column: 57, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "filter", span: Span { start: Position { line: 146, column: 60, }, end: Position { line: 146, column: 66, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "x", span: Span { start: Position { line: 146, column: 71, }, end: Position { line: 146, column: 72, }, }, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 146, column: 76, }, end: Position { line: 146, column: 80, }, }, }, ), }, ), span: Span { start: Position { line: 146, column: 68, }, end: Position { line: 146, column: 80, }, }, }, ), Identifier( Identifier { id: "paths", span: Span { start: Position { line: 146, column: 82, }, end: Position { line: 146, column: 87, }, }, }, ), ], }, ), ], }, ), ], }, ), span: Span { start: Position { line: 145, column: 5, }, end: Position { line: 146, column: 89, }, }, }, ), span: Span { start: Position { line: 143, column: 5, }, end: Position { line: 146, column: 89, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "makeSearchPathOutput", span: Span { start: Position { line: 159, column: 3, }, end: Position { line: 159, column: 23, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "output", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "subDir", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "pkgs", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "makeSearchPath", span: Span { start: Position { line: 165, column: 11, }, end: Position { line: 165, column: 25, }, }, }, ), arguments: [ Identifier( Identifier { id: "subDir", span: Span { start: Position { line: 165, column: 26, }, end: Position { line: 165, column: 32, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "map", span: Span { start: Position { line: 165, column: 34, }, end: Position { line: 165, column: 37, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 165, column: 39, }, end: Position { line: 165, column: 42, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "getOutput", span: Span { start: Position { line: 165, column: 43, }, end: Position { line: 165, column: 52, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "output", span: Span { start: Position { line: 165, column: 53, }, end: Position { line: 165, column: 59, }, }, }, ), ], }, ), Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 165, column: 61, }, end: Position { line: 165, column: 65, }, }, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 165, column: 5, }, end: Position { line: 165, column: 66, }, }, }, ), span: Span { start: Position { line: 163, column: 5, }, end: Position { line: 165, column: 66, }, }, }, ), span: Span { start: Position { line: 161, column: 5, }, end: Position { line: 165, column: 66, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "makeLibraryPath", span: Span { start: Position { line: 177, column: 3, }, end: Position { line: 177, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "makeSearchPathOutput", span: Span { start: Position { line: 177, column: 21, }, end: Position { line: 177, column: 41, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "lib", span: Span { start: Position { line: 177, column: 43, }, end: Position { line: 177, column: 46, }, }, }, ), ], span: Span { start: Position { line: 177, column: 42, }, end: Position { line: 177, column: 47, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "lib", span: Span { start: Position { line: 177, column: 49, }, end: Position { line: 177, column: 52, }, }, }, ), ], span: Span { start: Position { line: 177, column: 48, }, end: Position { line: 177, column: 53, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "makeBinPath", span: Span { start: Position { line: 186, column: 3, }, end: Position { line: 186, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "makeSearchPathOutput", span: Span { start: Position { line: 186, column: 17, }, end: Position { line: 186, column: 37, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "bin", span: Span { start: Position { line: 186, column: 39, }, end: Position { line: 186, column: 42, }, }, }, ), ], span: Span { start: Position { line: 186, column: 38, }, end: Position { line: 186, column: 43, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "bin", span: Span { start: Position { line: 186, column: 45, }, end: Position { line: 186, column: 48, }, }, }, ), ], span: Span { start: Position { line: 186, column: 44, }, end: Position { line: 186, column: 49, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "normalizePath", span: Span { start: Position { line: 196, column: 3, }, end: Position { line: 196, column: 16, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "s", }, ), body: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 196, column: 23, }, end: Position { line: 196, column: 31, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "foldl'", span: Span { start: Position { line: 196, column: 32, }, end: Position { line: 196, column: 38, }, }, }, ), ], default: None, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "y", }, ), body: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "y", span: Span { start: Position { line: 196, column: 49, }, end: Position { line: 196, column: 50, }, }, }, ), operator: EqualTo, right: String( String_ { parts: [ Raw( PartRaw { content: "/", span: Span { start: Position { line: 196, column: 55, }, end: Position { line: 196, column: 56, }, }, }, ), ], span: Span { start: Position { line: 196, column: 54, }, end: Position { line: 196, column: 57, }, }, }, ), }, ), operator: LogicalAnd, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "hasSuffix", span: Span { start: Position { line: 196, column: 61, }, end: Position { line: 196, column: 70, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "/", span: Span { start: Position { line: 196, column: 72, }, end: Position { line: 196, column: 73, }, }, }, ), ], span: Span { start: Position { line: 196, column: 71, }, end: Position { line: 196, column: 74, }, }, }, ), Identifier( Identifier { id: "x", span: Span { start: Position { line: 196, column: 75, }, end: Position { line: 196, column: 76, }, }, }, ), ], }, ), }, ), then: Identifier( Identifier { id: "x", span: Span { start: Position { line: 196, column: 82, }, end: Position { line: 196, column: 83, }, }, }, ), else_: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "x", span: Span { start: Position { line: 196, column: 89, }, end: Position { line: 196, column: 90, }, }, }, ), operator: Addition, right: Identifier( Identifier { id: "y", span: Span { start: Position { line: 196, column: 91, }, end: Position { line: 196, column: 92, }, }, }, ), }, ), span: Span { start: Position { line: 196, column: 46, }, end: Position { line: 196, column: 92, }, }, }, ), span: Span { start: Position { line: 196, column: 43, }, end: Position { line: 196, column: 92, }, }, }, ), span: Span { start: Position { line: 196, column: 40, }, end: Position { line: 196, column: 92, }, }, }, ), String( String_ { parts: [], span: Span { start: Position { line: 196, column: 94, }, end: Position { line: 196, column: 96, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringToCharacters", span: Span { start: Position { line: 196, column: 98, }, end: Position { line: 196, column: 116, }, }, }, ), arguments: [ Identifier( Identifier { id: "s", span: Span { start: Position { line: 196, column: 117, }, end: Position { line: 196, column: 118, }, }, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 196, column: 19, }, end: Position { line: 196, column: 120, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "optionalString", span: Span { start: Position { line: 209, column: 3, }, end: Position { line: 209, column: 17, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "cond", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "string", }, ), body: IfThenElse( IfThenElse { predicate: Identifier( Identifier { id: "cond", span: Span { start: Position { line: 213, column: 16, }, end: Position { line: 213, column: 20, }, }, }, ), then: Identifier( Identifier { id: "string", span: Span { start: Position { line: 213, column: 26, }, end: Position { line: 213, column: 32, }, }, }, ), else_: String( String_ { parts: [], span: Span { start: Position { line: 213, column: 38, }, end: Position { line: 213, column: 40, }, }, }, ), span: Span { start: Position { line: 213, column: 13, }, end: Position { line: 213, column: 40, }, }, }, ), span: Span { start: Position { line: 213, column: 5, }, end: Position { line: 213, column: 40, }, }, }, ), span: Span { start: Position { line: 211, column: 5, }, end: Position { line: 213, column: 40, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "hasPrefix", span: Span { start: Position { line: 225, column: 3, }, end: Position { line: 225, column: 12, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "pref", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "str", }, ), body: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 229, column: 10, }, end: Position { line: 229, column: 19, }, }, }, ), arguments: [ Integer( Integer { value: "0", span: Span { start: Position { line: 229, column: 20, }, end: Position { line: 229, column: 21, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 229, column: 23, }, end: Position { line: 229, column: 35, }, }, }, ), arguments: [ Identifier( Identifier { id: "pref", span: Span { start: Position { line: 229, column: 36, }, end: Position { line: 229, column: 40, }, }, }, ), ], }, ), Identifier( Identifier { id: "str", span: Span { start: Position { line: 229, column: 42, }, end: Position { line: 229, column: 45, }, }, }, ), ], }, ), operator: EqualTo, right: Identifier( Identifier { id: "pref", span: Span { start: Position { line: 229, column: 49, }, end: Position { line: 229, column: 53, }, }, }, ), }, ), span: Span { start: Position { line: 229, column: 5, }, end: Position { line: 229, column: 53, }, }, }, ), span: Span { start: Position { line: 227, column: 5, }, end: Position { line: 229, column: 53, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "hasSuffix", span: Span { start: Position { line: 241, column: 3, }, end: Position { line: 241, column: 12, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "suffix", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "content", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "lenContent", span: Span { start: Position { line: 247, column: 7, }, end: Position { line: 247, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 247, column: 20, }, end: Position { line: 247, column: 32, }, }, }, ), arguments: [ Identifier( Identifier { id: "content", span: Span { start: Position { line: 247, column: 33, }, end: Position { line: 247, column: 40, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "lenSuffix", span: Span { start: Position { line: 248, column: 7, }, end: Position { line: 248, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 248, column: 19, }, end: Position { line: 248, column: 31, }, }, }, ), arguments: [ Identifier( Identifier { id: "suffix", span: Span { start: Position { line: 248, column: 32, }, end: Position { line: 248, column: 38, }, }, }, ), ], }, ), }, ), ], target: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "lenContent", span: Span { start: Position { line: 249, column: 8, }, end: Position { line: 249, column: 18, }, }, }, ), operator: GreaterThanOrEqualTo, right: Identifier( Identifier { id: "lenSuffix", span: Span { start: Position { line: 249, column: 22, }, end: Position { line: 249, column: 31, }, }, }, ), }, ), operator: LogicalAnd, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 250, column: 8, }, end: Position { line: 250, column: 17, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "lenContent", span: Span { start: Position { line: 250, column: 19, }, end: Position { line: 250, column: 29, }, }, }, ), operator: Subtraction, right: Identifier( Identifier { id: "lenSuffix", span: Span { start: Position { line: 250, column: 32, }, end: Position { line: 250, column: 41, }, }, }, ), }, ), Identifier( Identifier { id: "lenContent", span: Span { start: Position { line: 250, column: 43, }, end: Position { line: 250, column: 53, }, }, }, ), Identifier( Identifier { id: "content", span: Span { start: Position { line: 250, column: 54, }, end: Position { line: 250, column: 61, }, }, }, ), ], }, ), operator: EqualTo, right: Identifier( Identifier { id: "suffix", span: Span { start: Position { line: 250, column: 65, }, end: Position { line: 250, column: 71, }, }, }, ), }, ), }, ), span: Span { start: Position { line: 246, column: 5, }, end: Position { line: 250, column: 71, }, }, }, ), span: Span { start: Position { line: 245, column: 5, }, end: Position { line: 250, column: 71, }, }, }, ), span: Span { start: Position { line: 243, column: 5, }, end: Position { line: 250, column: 71, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "hasInfix", span: Span { start: Position { line: 266, column: 3, }, end: Position { line: 266, column: 11, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "infix", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "content", }, ), body: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 267, column: 5, }, end: Position { line: 267, column: 13, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "match", span: Span { start: Position { line: 267, column: 14, }, end: Position { line: 267, column: 19, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: ".*", span: Span { start: Position { line: 267, column: 21, }, end: Position { line: 267, column: 43, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeRegex", span: Span { start: Position { line: 267, column: 25, }, end: Position { line: 267, column: 36, }, }, }, ), arguments: [ Identifier( Identifier { id: "infix", span: Span { start: Position { line: 267, column: 37, }, end: Position { line: 267, column: 42, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: ".*", span: Span { start: Position { line: 267, column: 21, }, end: Position { line: 267, column: 45, }, }, }, ), ], span: Span { start: Position { line: 267, column: 20, }, end: Position { line: 267, column: 46, }, }, }, ), String( String_ { parts: [ Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "content", span: Span { start: Position { line: 267, column: 50, }, end: Position { line: 267, column: 57, }, }, }, ), }, ), ], span: Span { start: Position { line: 267, column: 47, }, end: Position { line: 267, column: 59, }, }, }, ), ], }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 267, column: 63, }, end: Position { line: 267, column: 67, }, }, }, ), }, ), span: Span { start: Position { line: 266, column: 21, }, end: Position { line: 267, column: 67, }, }, }, ), span: Span { start: Position { line: 266, column: 14, }, end: Position { line: 267, column: 67, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "stringToCharacters", span: Span { start: Position { line: 287, column: 3, }, end: Position { line: 287, column: 21, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "s", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "map", span: Span { start: Position { line: 288, column: 5, }, end: Position { line: 288, column: 8, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "p", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 288, column: 13, }, end: Position { line: 288, column: 22, }, }, }, ), arguments: [ Identifier( Identifier { id: "p", span: Span { start: Position { line: 288, column: 23, }, end: Position { line: 288, column: 24, }, }, }, ), Integer( Integer { value: "1", span: Span { start: Position { line: 288, column: 25, }, end: Position { line: 288, column: 26, }, }, }, ), Identifier( Identifier { id: "s", span: Span { start: Position { line: 288, column: 27, }, end: Position { line: 288, column: 28, }, }, }, ), ], }, ), span: Span { start: Position { line: 288, column: 10, }, end: Position { line: 288, column: 28, }, }, }, ), FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 288, column: 31, }, end: Position { line: 288, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "range", span: Span { start: Position { line: 288, column: 35, }, end: Position { line: 288, column: 40, }, }, }, ), ], default: None, }, ), arguments: [ Integer( Integer { value: "0", span: Span { start: Position { line: 288, column: 41, }, end: Position { line: 288, column: 42, }, }, }, ), BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 288, column: 44, }, end: Position { line: 288, column: 56, }, }, }, ), arguments: [ Identifier( Identifier { id: "s", span: Span { start: Position { line: 288, column: 57, }, end: Position { line: 288, column: 58, }, }, }, ), ], }, ), operator: Subtraction, right: Integer( Integer { value: "1", span: Span { start: Position { line: 288, column: 61, }, end: Position { line: 288, column: 62, }, }, }, ), }, ), ], }, ), ], }, ), span: Span { start: Position { line: 287, column: 24, }, end: Position { line: 288, column: 64, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "stringAsChars", span: Span { start: Position { line: 299, column: 3, }, end: Position { line: 299, column: 16, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "f", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "s", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStrings", span: Span { start: Position { line: 303, column: 8, }, end: Position { line: 303, column: 21, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "map", span: Span { start: Position { line: 304, column: 7, }, end: Position { line: 304, column: 10, }, }, }, ), arguments: [ Identifier( Identifier { id: "f", span: Span { start: Position { line: 304, column: 11, }, end: Position { line: 304, column: 12, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringToCharacters", span: Span { start: Position { line: 304, column: 14, }, end: Position { line: 304, column: 32, }, }, }, ), arguments: [ Identifier( Identifier { id: "s", span: Span { start: Position { line: 304, column: 33, }, end: Position { line: 304, column: 34, }, }, }, ), ], }, ), ], }, ), ], }, ), span: Span { start: Position { line: 303, column: 5, }, end: Position { line: 305, column: 6, }, }, }, ), span: Span { start: Position { line: 301, column: 5, }, end: Position { line: 305, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "charToInt", span: Span { start: Position { line: 318, column: 3, }, end: Position { line: 318, column: 12, }, }, }, ), ], to: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "table", span: Span { start: Position { line: 319, column: 5, }, end: Position { line: 319, column: 10, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "import", span: Span { start: Position { line: 319, column: 13, }, end: Position { line: 319, column: 19, }, }, }, ), arguments: [ Path( Path { parts: [ Raw( PartRaw { content: "./ascii-table.nix", span: Span { start: Position { line: 319, column: 20, }, end: Position { line: 319, column: 37, }, }, }, ), ], span: Span { start: Position { line: 319, column: 20, }, end: Position { line: 319, column: 37, }, }, }, ), ], }, ), }, ), ], target: Function( Function { head: Simple( FunctionHeadSimple { identifier: "c", }, ), body: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 320, column: 9, }, end: Position { line: 320, column: 17, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "getAttr", span: Span { start: Position { line: 320, column: 18, }, end: Position { line: 320, column: 25, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "c", span: Span { start: Position { line: 320, column: 26, }, end: Position { line: 320, column: 27, }, }, }, ), Identifier( Identifier { id: "table", span: Span { start: Position { line: 320, column: 28, }, end: Position { line: 320, column: 33, }, }, }, ), ], }, ), span: Span { start: Position { line: 320, column: 6, }, end: Position { line: 320, column: 33, }, }, }, ), span: Span { start: Position { line: 318, column: 15, }, end: Position { line: 320, column: 33, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "escape", span: Span { start: Position { line: 331, column: 3, }, end: Position { line: 331, column: 9, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "list", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "replaceChars", span: Span { start: Position { line: 331, column: 18, }, end: Position { line: 331, column: 30, }, }, }, ), arguments: [ Identifier( Identifier { id: "list", span: Span { start: Position { line: 331, column: 31, }, end: Position { line: 331, column: 35, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "map", span: Span { start: Position { line: 331, column: 37, }, end: Position { line: 331, column: 40, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "c", }, ), body: String( String_ { parts: [ Raw( PartRaw { content: "\\", span: Span { start: Position { line: 331, column: 46, }, end: Position { line: 331, column: 52, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "c", span: Span { start: Position { line: 331, column: 50, }, end: Position { line: 331, column: 51, }, }, }, ), }, ), ], span: Span { start: Position { line: 331, column: 45, }, end: Position { line: 331, column: 53, }, }, }, ), span: Span { start: Position { line: 331, column: 42, }, end: Position { line: 331, column: 53, }, }, }, ), Identifier( Identifier { id: "list", span: Span { start: Position { line: 331, column: 55, }, end: Position { line: 331, column: 59, }, }, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 331, column: 12, }, end: Position { line: 331, column: 60, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "escapeC", span: Span { start: Position { line: 344, column: 3, }, end: Position { line: 344, column: 10, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "list", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "replaceChars", span: Span { start: Position { line: 344, column: 19, }, end: Position { line: 344, column: 31, }, }, }, ), arguments: [ Identifier( Identifier { id: "list", span: Span { start: Position { line: 344, column: 32, }, end: Position { line: 344, column: 36, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "map", span: Span { start: Position { line: 344, column: 38, }, end: Position { line: 344, column: 41, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "c", }, ), body: String( String_ { parts: [ Raw( PartRaw { content: "\\x", span: Span { start: Position { line: 344, column: 47, }, end: Position { line: 344, column: 93, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toLower", span: Span { start: Position { line: 344, column: 53, }, end: Position { line: 344, column: 60, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 344, column: 62, }, end: Position { line: 344, column: 65, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "toHexString", span: Span { start: Position { line: 344, column: 66, }, end: Position { line: 344, column: 77, }, }, }, ), ], default: None, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "charToInt", span: Span { start: Position { line: 344, column: 79, }, end: Position { line: 344, column: 88, }, }, }, ), arguments: [ Identifier( Identifier { id: "c", span: Span { start: Position { line: 344, column: 89, }, end: Position { line: 344, column: 90, }, }, }, ), ], }, ), ], }, ), ], }, ), }, ), ], span: Span { start: Position { line: 344, column: 46, }, end: Position { line: 344, column: 94, }, }, }, ), span: Span { start: Position { line: 344, column: 43, }, end: Position { line: 344, column: 94, }, }, }, ), Identifier( Identifier { id: "list", span: Span { start: Position { line: 344, column: 96, }, end: Position { line: 344, column: 100, }, }, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 344, column: 13, }, end: Position { line: 344, column: 101, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "escapeShellArg", span: Span { start: Position { line: 354, column: 3, }, end: Position { line: 354, column: 17, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "arg", }, ), body: String( String_ { parts: [ Raw( PartRaw { content: "'", span: Span { start: Position { line: 354, column: 26, }, end: Position { line: 354, column: 75, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "replaceStrings", span: Span { start: Position { line: 354, column: 29, }, end: Position { line: 354, column: 43, }, }, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "'", span: Span { start: Position { line: 354, column: 46, }, end: Position { line: 354, column: 47, }, }, }, ), ], span: Span { start: Position { line: 354, column: 45, }, end: Position { line: 354, column: 48, }, }, }, ), ], span: Span { start: Position { line: 354, column: 44, }, end: Position { line: 354, column: 49, }, }, }, ), List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "'\\''", span: Span { start: Position { line: 354, column: 52, }, end: Position { line: 354, column: 57, }, }, }, ), ], span: Span { start: Position { line: 354, column: 51, }, end: Position { line: 354, column: 58, }, }, }, ), ], span: Span { start: Position { line: 354, column: 50, }, end: Position { line: 354, column: 59, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 354, column: 61, }, end: Position { line: 354, column: 69, }, }, }, ), arguments: [ Identifier( Identifier { id: "arg", span: Span { start: Position { line: 354, column: 70, }, end: Position { line: 354, column: 73, }, }, }, ), ], }, ), ], }, ), }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 354, column: 26, }, end: Position { line: 354, column: 76, }, }, }, ), ], span: Span { start: Position { line: 354, column: 25, }, end: Position { line: 354, column: 77, }, }, }, ), span: Span { start: Position { line: 354, column: 20, }, end: Position { line: 354, column: 77, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "escapeShellArgs", span: Span { start: Position { line: 364, column: 3, }, end: Position { line: 364, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatMapStringsSep", span: Span { start: Position { line: 364, column: 21, }, end: Position { line: 364, column: 40, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: " ", span: Span { start: Position { line: 364, column: 42, }, end: Position { line: 364, column: 43, }, }, }, ), ], span: Span { start: Position { line: 364, column: 41, }, end: Position { line: 364, column: 44, }, }, }, ), Identifier( Identifier { id: "escapeShellArg", span: Span { start: Position { line: 364, column: 45, }, end: Position { line: 364, column: 59, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isValidPosixName", span: Span { start: Position { line: 376, column: 3, }, end: Position { line: 376, column: 19, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "name", }, ), body: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "match", span: Span { start: Position { line: 376, column: 28, }, end: Position { line: 376, column: 33, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "[a-zA-Z_][a-zA-Z0-9_]*", span: Span { start: Position { line: 376, column: 35, }, end: Position { line: 376, column: 57, }, }, }, ), ], span: Span { start: Position { line: 376, column: 34, }, end: Position { line: 376, column: 58, }, }, }, ), Identifier( Identifier { id: "name", span: Span { start: Position { line: 376, column: 59, }, end: Position { line: 376, column: 63, }, }, }, ), ], }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 376, column: 67, }, end: Position { line: 376, column: 71, }, }, }, ), }, ), span: Span { start: Position { line: 376, column: 22, }, end: Position { line: 376, column: 71, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "toShellVar", span: Span { start: Position { line: 396, column: 3, }, end: Position { line: 396, column: 13, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "name", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "value", }, ), body: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 397, column: 5, }, end: Position { line: 397, column: 8, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "throwIfNot", span: Span { start: Position { line: 397, column: 9, }, end: Position { line: 397, column: 19, }, }, }, ), ], default: None, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "isValidPosixName", span: Span { start: Position { line: 397, column: 21, }, end: Position { line: 397, column: 37, }, }, }, ), arguments: [ Identifier( Identifier { id: "name", span: Span { start: Position { line: 397, column: 38, }, end: Position { line: 397, column: 42, }, }, }, ), ], }, ), String( String_ { parts: [ Raw( PartRaw { content: "toShellVar: ", span: Span { start: Position { line: 397, column: 45, }, end: Position { line: 397, column: 64, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 397, column: 59, }, end: Position { line: 397, column: 63, }, }, }, ), }, ), Raw( PartRaw { content: " is not a valid shell variable name", span: Span { start: Position { line: 397, column: 45, }, end: Position { line: 397, column: 99, }, }, }, ), ], span: Span { start: Position { line: 397, column: 44, }, end: Position { line: 397, column: 100, }, }, }, ), IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "isAttrs", span: Span { start: Position { line: 398, column: 8, }, end: Position { line: 398, column: 15, }, }, }, ), arguments: [ Identifier( Identifier { id: "value", span: Span { start: Position { line: 398, column: 16, }, end: Position { line: 398, column: 21, }, }, }, ), ], }, ), operator: LogicalAnd, right: UnaryOperation( UnaryOperation { operator: Not, operand: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "isCoercibleToString", span: Span { start: Position { line: 398, column: 27, }, end: Position { line: 398, column: 46, }, }, }, ), arguments: [ Identifier( Identifier { id: "value", span: Span { start: Position { line: 398, column: 47, }, end: Position { line: 398, column: 52, }, }, }, ), ], }, ), span: Span { start: Position { line: 398, column: 25, }, end: Position { line: 398, column: 52, }, }, }, ), }, ), then: String( String_ { parts: [ Raw( PartRaw { content: "declare -A ", span: Span { start: Position { line: 399, column: 8, }, end: Position { line: 399, column: 26, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 399, column: 21, }, end: Position { line: 399, column: 25, }, }, }, ), }, ), Raw( PartRaw { content: "=(", span: Span { start: Position { line: 399, column: 8, }, end: Position { line: 399, column: 28, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 400, column: 9, }, end: Position { line: 400, column: 25, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: " ", span: Span { start: Position { line: 400, column: 27, }, end: Position { line: 400, column: 28, }, }, }, ), ], span: Span { start: Position { line: 400, column: 26, }, end: Position { line: 400, column: 29, }, }, }, ), FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 400, column: 31, }, end: Position { line: 400, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mapAttrsToList", span: Span { start: Position { line: 400, column: 35, }, end: Position { line: 400, column: 49, }, }, }, ), ], default: None, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "n", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "v", }, ), body: String( String_ { parts: [ Raw( PartRaw { content: "[", span: Span { start: Position { line: 401, column: 12, }, end: Position { line: 401, column: 32, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeShellArg", span: Span { start: Position { line: 401, column: 15, }, end: Position { line: 401, column: 29, }, }, }, ), arguments: [ Identifier( Identifier { id: "n", span: Span { start: Position { line: 401, column: 30, }, end: Position { line: 401, column: 31, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "]=", span: Span { start: Position { line: 401, column: 12, }, end: Position { line: 401, column: 34, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeShellArg", span: Span { start: Position { line: 401, column: 36, }, end: Position { line: 401, column: 50, }, }, }, ), arguments: [ Identifier( Identifier { id: "v", span: Span { start: Position { line: 401, column: 51, }, end: Position { line: 401, column: 52, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 401, column: 11, }, end: Position { line: 401, column: 54, }, }, }, ), span: Span { start: Position { line: 400, column: 54, }, end: Position { line: 401, column: 54, }, }, }, ), span: Span { start: Position { line: 400, column: 51, }, end: Position { line: 401, column: 54, }, }, }, ), Identifier( Identifier { id: "value", span: Span { start: Position { line: 402, column: 11, }, end: Position { line: 402, column: 16, }, }, }, ), ], }, ), ], }, ), }, ), Raw( PartRaw { content: ")", span: Span { start: Position { line: 399, column: 8, }, end: Position { line: 403, column: 9, }, }, }, ), ], span: Span { start: Position { line: 399, column: 7, }, end: Position { line: 403, column: 10, }, }, }, ), else_: IfThenElse( IfThenElse { predicate: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "isList", span: Span { start: Position { line: 404, column: 13, }, end: Position { line: 404, column: 19, }, }, }, ), arguments: [ Identifier( Identifier { id: "value", span: Span { start: Position { line: 404, column: 20, }, end: Position { line: 404, column: 25, }, }, }, ), ], }, ), then: String( String_ { parts: [ Raw( PartRaw { content: "declare -a ", span: Span { start: Position { line: 405, column: 8, }, end: Position { line: 405, column: 26, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 405, column: 21, }, end: Position { line: 405, column: 25, }, }, }, ), }, ), Raw( PartRaw { content: "=(", span: Span { start: Position { line: 405, column: 8, }, end: Position { line: 405, column: 28, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeShellArgs", span: Span { start: Position { line: 405, column: 30, }, end: Position { line: 405, column: 45, }, }, }, ), arguments: [ Identifier( Identifier { id: "value", span: Span { start: Position { line: 405, column: 46, }, end: Position { line: 405, column: 51, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: ")", span: Span { start: Position { line: 405, column: 8, }, end: Position { line: 405, column: 53, }, }, }, ), ], span: Span { start: Position { line: 405, column: 7, }, end: Position { line: 405, column: 54, }, }, }, ), else_: String( String_ { parts: [ Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 407, column: 10, }, end: Position { line: 407, column: 14, }, }, }, ), }, ), Raw( PartRaw { content: "=", span: Span { start: Position { line: 407, column: 8, }, end: Position { line: 407, column: 16, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeShellArg", span: Span { start: Position { line: 407, column: 18, }, end: Position { line: 407, column: 32, }, }, }, ), arguments: [ Identifier( Identifier { id: "value", span: Span { start: Position { line: 407, column: 33, }, end: Position { line: 407, column: 38, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 407, column: 7, }, end: Position { line: 407, column: 40, }, }, }, ), span: Span { start: Position { line: 404, column: 10, }, end: Position { line: 407, column: 40, }, }, }, ), span: Span { start: Position { line: 398, column: 5, }, end: Position { line: 407, column: 40, }, }, }, ), ], }, ), span: Span { start: Position { line: 396, column: 22, }, end: Position { line: 408, column: 6, }, }, }, ), span: Span { start: Position { line: 396, column: 16, }, end: Position { line: 408, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "toShellVars", span: Span { start: Position { line: 424, column: 3, }, end: Position { line: 424, column: 14, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "vars", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 424, column: 23, }, end: Position { line: 424, column: 39, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "\n", span: Span { start: Position { line: 424, column: 41, }, end: Position { line: 424, column: 43, }, }, }, ), ], span: Span { start: Position { line: 424, column: 40, }, end: Position { line: 424, column: 44, }, }, }, ), FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 424, column: 46, }, end: Position { line: 424, column: 49, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mapAttrsToList", span: Span { start: Position { line: 424, column: 50, }, end: Position { line: 424, column: 64, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "toShellVar", span: Span { start: Position { line: 424, column: 65, }, end: Position { line: 424, column: 75, }, }, }, ), Identifier( Identifier { id: "vars", span: Span { start: Position { line: 424, column: 76, }, end: Position { line: 424, column: 80, }, }, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 424, column: 17, }, end: Position { line: 424, column: 81, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "escapeNixString", span: Span { start: Position { line: 434, column: 3, }, end: Position { line: 434, column: 18, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "s", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escape", span: Span { start: Position { line: 434, column: 24, }, end: Position { line: 434, column: 30, }, }, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "$", span: Span { start: Position { line: 434, column: 33, }, end: Position { line: 434, column: 34, }, }, }, ), ], span: Span { start: Position { line: 434, column: 32, }, end: Position { line: 434, column: 35, }, }, }, ), ], span: Span { start: Position { line: 434, column: 31, }, end: Position { line: 434, column: 36, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toJSON", span: Span { start: Position { line: 434, column: 38, }, end: Position { line: 434, column: 44, }, }, }, ), arguments: [ Identifier( Identifier { id: "s", span: Span { start: Position { line: 434, column: 45, }, end: Position { line: 434, column: 46, }, }, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 434, column: 21, }, end: Position { line: 434, column: 47, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "escapeRegex", span: Span { start: Position { line: 444, column: 3, }, end: Position { line: 444, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escape", span: Span { start: Position { line: 444, column: 17, }, end: Position { line: 444, column: 23, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringToCharacters", span: Span { start: Position { line: 444, column: 25, }, end: Position { line: 444, column: 43, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "\\[{()^$?*+|.", span: Span { start: Position { line: 444, column: 45, }, end: Position { line: 444, column: 58, }, }, }, ), ], span: Span { start: Position { line: 444, column: 44, }, end: Position { line: 444, column: 59, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "escapeNixIdentifier", span: Span { start: Position { line: 456, column: 3, }, end: Position { line: 456, column: 22, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "s", }, ), body: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "match", span: Span { start: Position { line: 458, column: 8, }, end: Position { line: 458, column: 13, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "[a-zA-Z_][a-zA-Z0-9_'-]*", span: Span { start: Position { line: 458, column: 15, }, end: Position { line: 458, column: 39, }, }, }, ), ], span: Span { start: Position { line: 458, column: 14, }, end: Position { line: 458, column: 40, }, }, }, ), Identifier( Identifier { id: "s", span: Span { start: Position { line: 458, column: 41, }, end: Position { line: 458, column: 42, }, }, }, ), ], }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 458, column: 46, }, end: Position { line: 458, column: 50, }, }, }, ), }, ), then: Identifier( Identifier { id: "s", span: Span { start: Position { line: 459, column: 10, }, end: Position { line: 459, column: 11, }, }, }, ), else_: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeNixString", span: Span { start: Position { line: 459, column: 17, }, end: Position { line: 459, column: 32, }, }, }, ), arguments: [ Identifier( Identifier { id: "s", span: Span { start: Position { line: 459, column: 33, }, end: Position { line: 459, column: 34, }, }, }, ), ], }, ), span: Span { start: Position { line: 458, column: 5, }, end: Position { line: 459, column: 34, }, }, }, ), span: Span { start: Position { line: 456, column: 25, }, end: Position { line: 459, column: 34, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "escapeXML", span: Span { start: Position { line: 470, column: 3, }, end: Position { line: 470, column: 12, }, }, }, ), ], to: 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: "replaceStrings", span: Span { start: Position { line: 470, column: 24, }, end: Position { line: 470, column: 38, }, }, }, ), ], default: None, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "\"", span: Span { start: Position { line: 471, column: 7, }, end: Position { line: 471, column: 9, }, }, }, ), ], span: Span { start: Position { line: 471, column: 6, }, end: Position { line: 471, column: 10, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "'", span: Span { start: Position { line: 471, column: 12, }, end: Position { line: 471, column: 13, }, }, }, ), ], span: Span { start: Position { line: 471, column: 11, }, end: Position { line: 471, column: 14, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "<", span: Span { start: Position { line: 471, column: 16, }, end: Position { line: 471, column: 17, }, }, }, ), ], span: Span { start: Position { line: 471, column: 15, }, end: Position { line: 471, column: 18, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: ">", span: Span { start: Position { line: 471, column: 20, }, end: Position { line: 471, column: 21, }, }, }, ), ], span: Span { start: Position { line: 471, column: 19, }, end: Position { line: 471, column: 22, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "&", span: Span { start: Position { line: 471, column: 24, }, end: Position { line: 471, column: 25, }, }, }, ), ], span: Span { start: Position { line: 471, column: 23, }, end: Position { line: 471, column: 26, }, }, }, ), ], span: Span { start: Position { line: 471, column: 5, }, end: Position { line: 471, column: 27, }, }, }, ), List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: """, span: Span { start: Position { line: 472, column: 7, }, end: Position { line: 472, column: 13, }, }, }, ), ], span: Span { start: Position { line: 472, column: 6, }, end: Position { line: 472, column: 14, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "'", span: Span { start: Position { line: 472, column: 16, }, end: Position { line: 472, column: 22, }, }, }, ), ], span: Span { start: Position { line: 472, column: 15, }, end: Position { line: 472, column: 23, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "<", span: Span { start: Position { line: 472, column: 25, }, end: Position { line: 472, column: 29, }, }, }, ), ], span: Span { start: Position { line: 472, column: 24, }, end: Position { line: 472, column: 30, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: ">", span: Span { start: Position { line: 472, column: 32, }, end: Position { line: 472, column: 36, }, }, }, ), ], span: Span { start: Position { line: 472, column: 31, }, end: Position { line: 472, column: 37, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "&", span: Span { start: Position { line: 472, column: 39, }, end: Position { line: 472, column: 44, }, }, }, ), ], span: Span { start: Position { line: 472, column: 38, }, end: Position { line: 472, column: 45, }, }, }, ), ], span: Span { start: Position { line: 472, column: 5, }, end: Position { line: 472, column: 46, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "replaceChars", span: Span { start: Position { line: 475, column: 3, }, end: Position { line: 475, column: 15, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 475, column: 18, }, end: Position { line: 475, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "replaceStrings", span: Span { start: Position { line: 475, column: 27, }, end: Position { line: 475, column: 41, }, }, }, ), ], default: Some( Function( Function { head: Simple( FunctionHeadSimple { identifier: "del", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "new", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "s", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "substList", span: Span { start: Position { line: 478, column: 7, }, end: Position { line: 478, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 478, column: 19, }, end: Position { line: 478, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "zipLists", span: Span { start: Position { line: 478, column: 23, }, end: Position { line: 478, column: 31, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "del", span: Span { start: Position { line: 478, column: 32, }, end: Position { line: 478, column: 35, }, }, }, ), Identifier( Identifier { id: "new", span: Span { start: Position { line: 478, column: 36, }, end: Position { line: 478, column: 39, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "subst", span: Span { start: Position { line: 479, column: 7, }, end: Position { line: 479, column: 12, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "c", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "found", span: Span { start: Position { line: 480, column: 13, }, end: Position { line: 480, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 480, column: 21, }, end: Position { line: 480, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "findFirst", span: Span { start: Position { line: 480, column: 25, }, end: Position { line: 480, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "sub", }, ), body: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "sub", span: Span { start: Position { line: 480, column: 41, }, end: Position { line: 480, column: 44, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "fst", span: Span { start: Position { line: 480, column: 45, }, end: Position { line: 480, column: 48, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: Identifier( Identifier { id: "c", span: Span { start: Position { line: 480, column: 52, }, end: Position { line: 480, column: 53, }, }, }, ), }, ), span: Span { start: Position { line: 480, column: 36, }, end: Position { line: 480, column: 53, }, }, }, ), Identifier( Identifier { id: "null", span: Span { start: Position { line: 480, column: 55, }, end: Position { line: 480, column: 59, }, }, }, ), Identifier( Identifier { id: "substList", span: Span { start: Position { line: 480, column: 60, }, end: Position { line: 480, column: 69, }, }, }, ), ], }, ), }, ), ], target: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "found", span: Span { start: Position { line: 481, column: 12, }, end: Position { line: 481, column: 17, }, }, }, ), operator: EqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 481, column: 21, }, end: Position { line: 481, column: 25, }, }, }, ), }, ), then: Identifier( Identifier { id: "c", span: Span { start: Position { line: 482, column: 11, }, end: Position { line: 482, column: 12, }, }, }, ), else_: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "found", span: Span { start: Position { line: 484, column: 11, }, end: Position { line: 484, column: 16, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "snd", span: Span { start: Position { line: 484, column: 17, }, end: Position { line: 484, column: 20, }, }, }, ), ], default: None, }, ), span: Span { start: Position { line: 481, column: 9, }, end: Position { line: 484, column: 20, }, }, }, ), span: Span { start: Position { line: 480, column: 9, }, end: Position { line: 484, column: 20, }, }, }, ), span: Span { start: Position { line: 479, column: 15, }, end: Position { line: 484, column: 20, }, }, }, ), }, ), ], target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringAsChars", span: Span { start: Position { line: 486, column: 7, }, end: Position { line: 486, column: 20, }, }, }, ), arguments: [ Identifier( Identifier { id: "subst", span: Span { start: Position { line: 486, column: 21, }, end: Position { line: 486, column: 26, }, }, }, ), Identifier( Identifier { id: "s", span: Span { start: Position { line: 486, column: 27, }, end: Position { line: 486, column: 28, }, }, }, ), ], }, ), span: Span { start: Position { line: 477, column: 5, }, end: Position { line: 486, column: 28, }, }, }, ), span: Span { start: Position { line: 476, column: 15, }, end: Position { line: 486, column: 28, }, }, }, ), span: Span { start: Position { line: 476, column: 10, }, end: Position { line: 486, column: 28, }, }, }, ), span: Span { start: Position { line: 476, column: 5, }, end: Position { line: 486, column: 28, }, }, }, ), ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "lowerChars", span: Span { start: Position { line: 489, column: 3, }, end: Position { line: 489, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringToCharacters", span: Span { start: Position { line: 489, column: 16, }, end: Position { line: 489, column: 34, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "abcdefghijklmnopqrstuvwxyz", span: Span { start: Position { line: 489, column: 36, }, end: Position { line: 489, column: 62, }, }, }, ), ], span: Span { start: Position { line: 489, column: 35, }, end: Position { line: 489, column: 63, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "upperChars", span: Span { start: Position { line: 490, column: 3, }, end: Position { line: 490, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringToCharacters", span: Span { start: Position { line: 490, column: 16, }, end: Position { line: 490, column: 34, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "ABCDEFGHIJKLMNOPQRSTUVWXYZ", span: Span { start: Position { line: 490, column: 36, }, end: Position { line: 490, column: 62, }, }, }, ), ], span: Span { start: Position { line: 490, column: 35, }, end: Position { line: 490, column: 63, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "toLower", span: Span { start: Position { line: 500, column: 3, }, end: Position { line: 500, column: 10, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "replaceChars", span: Span { start: Position { line: 500, column: 13, }, end: Position { line: 500, column: 25, }, }, }, ), arguments: [ Identifier( Identifier { id: "upperChars", span: Span { start: Position { line: 500, column: 26, }, end: Position { line: 500, column: 36, }, }, }, ), Identifier( Identifier { id: "lowerChars", span: Span { start: Position { line: 500, column: 37, }, end: Position { line: 500, column: 47, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "toUpper", span: Span { start: Position { line: 510, column: 3, }, end: Position { line: 510, column: 10, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "replaceChars", span: Span { start: Position { line: 510, column: 13, }, end: Position { line: 510, column: 25, }, }, }, ), arguments: [ Identifier( Identifier { id: "lowerChars", span: Span { start: Position { line: 510, column: 26, }, end: Position { line: 510, column: 36, }, }, }, ), Identifier( Identifier { id: "upperChars", span: Span { start: Position { line: 510, column: 37, }, end: Position { line: 510, column: 47, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "addContextFrom", span: Span { start: Position { line: 525, column: 3, }, end: Position { line: 525, column: 17, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "a", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "b", }, ), body: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 525, column: 26, }, end: Position { line: 525, column: 35, }, }, }, ), arguments: [ Integer( Integer { value: "0", span: Span { start: Position { line: 525, column: 36, }, end: Position { line: 525, column: 37, }, }, }, ), Integer( Integer { value: "0", span: Span { start: Position { line: 525, column: 38, }, end: Position { line: 525, column: 39, }, }, }, ), Identifier( Identifier { id: "a", span: Span { start: Position { line: 525, column: 40, }, end: Position { line: 525, column: 41, }, }, }, ), ], }, ), operator: Addition, right: Identifier( Identifier { id: "b", span: Span { start: Position { line: 525, column: 44, }, end: Position { line: 525, column: 45, }, }, }, ), }, ), span: Span { start: Position { line: 525, column: 23, }, end: Position { line: 525, column: 45, }, }, }, ), span: Span { start: Position { line: 525, column: 20, }, end: Position { line: 525, column: 45, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "splitString", span: Span { start: Position { line: 536, column: 3, }, end: Position { line: 536, column: 14, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "_sep", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "_s", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "sep", span: Span { start: Position { line: 538, column: 7, }, end: Position { line: 538, column: 10, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 538, column: 13, }, end: Position { line: 538, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "unsafeDiscardStringContext", span: Span { start: Position { line: 538, column: 22, }, end: Position { line: 538, column: 48, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "_sep", span: Span { start: Position { line: 538, column: 49, }, end: Position { line: 538, column: 53, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "s", span: Span { start: Position { line: 539, column: 7, }, end: Position { line: 539, column: 8, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 539, column: 11, }, end: Position { line: 539, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "unsafeDiscardStringContext", span: Span { start: Position { line: 539, column: 20, }, end: Position { line: 539, column: 46, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "_s", span: Span { start: Position { line: 539, column: 47, }, end: Position { line: 539, column: 49, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "splits", span: Span { start: Position { line: 540, column: 7, }, end: Position { line: 540, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 540, column: 16, }, end: Position { line: 540, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "filter", span: Span { start: Position { line: 540, column: 25, }, end: Position { line: 540, column: 31, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 540, column: 32, }, end: Position { line: 540, column: 40, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isString", span: Span { start: Position { line: 540, column: 41, }, end: Position { line: 540, column: 49, }, }, }, ), ], default: None, }, ), FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 540, column: 51, }, end: Position { line: 540, column: 59, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "split", span: Span { start: Position { line: 540, column: 60, }, end: Position { line: 540, column: 65, }, }, }, ), ], default: None, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeRegex", span: Span { start: Position { line: 540, column: 67, }, end: Position { line: 540, column: 78, }, }, }, ), arguments: [ Identifier( Identifier { id: "sep", span: Span { start: Position { line: 540, column: 79, }, end: Position { line: 540, column: 82, }, }, }, ), ], }, ), Identifier( Identifier { id: "s", span: Span { start: Position { line: 540, column: 84, }, end: Position { line: 540, column: 85, }, }, }, ), ], }, ), ], }, ), }, ), ], target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "map", span: Span { start: Position { line: 542, column: 7, }, end: Position { line: 542, column: 10, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "v", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "addContextFrom", span: Span { start: Position { line: 542, column: 15, }, end: Position { line: 542, column: 29, }, }, }, ), arguments: [ Identifier( Identifier { id: "_sep", span: Span { start: Position { line: 542, column: 30, }, end: Position { line: 542, column: 34, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "addContextFrom", span: Span { start: Position { line: 542, column: 36, }, end: Position { line: 542, column: 50, }, }, }, ), arguments: [ Identifier( Identifier { id: "_s", span: Span { start: Position { line: 542, column: 51, }, end: Position { line: 542, column: 53, }, }, }, ), Identifier( Identifier { id: "v", span: Span { start: Position { line: 542, column: 54, }, end: Position { line: 542, column: 55, }, }, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 542, column: 12, }, end: Position { line: 542, column: 56, }, }, }, ), Identifier( Identifier { id: "splits", span: Span { start: Position { line: 542, column: 58, }, end: Position { line: 542, column: 64, }, }, }, ), ], }, ), span: Span { start: Position { line: 537, column: 5, }, end: Position { line: 542, column: 64, }, }, }, ), span: Span { start: Position { line: 536, column: 23, }, end: Position { line: 542, column: 64, }, }, }, ), span: Span { start: Position { line: 536, column: 17, }, end: Position { line: 542, column: 64, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "removePrefix", span: Span { start: Position { line: 554, column: 3, }, end: Position { line: 554, column: 15, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "prefix", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "str", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "preLen", span: Span { start: Position { line: 560, column: 7, }, end: Position { line: 560, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 560, column: 16, }, end: Position { line: 560, column: 28, }, }, }, ), arguments: [ Identifier( Identifier { id: "prefix", span: Span { start: Position { line: 560, column: 29, }, end: Position { line: 560, column: 35, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "sLen", span: Span { start: Position { line: 561, column: 7, }, end: Position { line: 561, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 561, column: 14, }, end: Position { line: 561, column: 26, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 561, column: 27, }, end: Position { line: 561, column: 30, }, }, }, ), ], }, ), }, ), ], target: IfThenElse( IfThenElse { predicate: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "hasPrefix", span: Span { start: Position { line: 563, column: 10, }, end: Position { line: 563, column: 19, }, }, }, ), arguments: [ Identifier( Identifier { id: "prefix", span: Span { start: Position { line: 563, column: 20, }, end: Position { line: 563, column: 26, }, }, }, ), Identifier( Identifier { id: "str", span: Span { start: Position { line: 563, column: 27, }, end: Position { line: 563, column: 30, }, }, }, ), ], }, ), then: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 564, column: 9, }, end: Position { line: 564, column: 18, }, }, }, ), arguments: [ Identifier( Identifier { id: "preLen", span: Span { start: Position { line: 564, column: 19, }, end: Position { line: 564, column: 25, }, }, }, ), BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "sLen", span: Span { start: Position { line: 564, column: 27, }, end: Position { line: 564, column: 31, }, }, }, ), operator: Subtraction, right: Identifier( Identifier { id: "preLen", span: Span { start: Position { line: 564, column: 34, }, end: Position { line: 564, column: 40, }, }, }, ), }, ), Identifier( Identifier { id: "str", span: Span { start: Position { line: 564, column: 42, }, end: Position { line: 564, column: 45, }, }, }, ), ], }, ), else_: Identifier( Identifier { id: "str", span: Span { start: Position { line: 566, column: 9, }, end: Position { line: 566, column: 12, }, }, }, ), span: Span { start: Position { line: 563, column: 7, }, end: Position { line: 566, column: 12, }, }, }, ), span: Span { start: Position { line: 559, column: 5, }, end: Position { line: 566, column: 12, }, }, }, ), span: Span { start: Position { line: 558, column: 5, }, end: Position { line: 566, column: 12, }, }, }, ), span: Span { start: Position { line: 556, column: 5, }, end: Position { line: 566, column: 12, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "removeSuffix", span: Span { start: Position { line: 578, column: 3, }, end: Position { line: 578, column: 15, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "suffix", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "str", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "sufLen", span: Span { start: Position { line: 584, column: 7, }, end: Position { line: 584, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 584, column: 16, }, end: Position { line: 584, column: 28, }, }, }, ), arguments: [ Identifier( Identifier { id: "suffix", span: Span { start: Position { line: 584, column: 29, }, end: Position { line: 584, column: 35, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "sLen", span: Span { start: Position { line: 585, column: 7, }, end: Position { line: 585, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 585, column: 14, }, end: Position { line: 585, column: 26, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 585, column: 27, }, end: Position { line: 585, column: 30, }, }, }, ), ], }, ), }, ), ], target: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "sufLen", span: Span { start: Position { line: 587, column: 10, }, end: Position { line: 587, column: 16, }, }, }, ), operator: LessThanOrEqualTo, right: Identifier( Identifier { id: "sLen", span: Span { start: Position { line: 587, column: 20, }, end: Position { line: 587, column: 24, }, }, }, ), }, ), operator: LogicalAnd, right: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "suffix", span: Span { start: Position { line: 587, column: 28, }, end: Position { line: 587, column: 34, }, }, }, ), operator: EqualTo, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 587, column: 38, }, end: Position { line: 587, column: 47, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "sLen", span: Span { start: Position { line: 587, column: 49, }, end: Position { line: 587, column: 53, }, }, }, ), operator: Subtraction, right: Identifier( Identifier { id: "sufLen", span: Span { start: Position { line: 587, column: 56, }, end: Position { line: 587, column: 62, }, }, }, ), }, ), Identifier( Identifier { id: "sufLen", span: Span { start: Position { line: 587, column: 64, }, end: Position { line: 587, column: 70, }, }, }, ), Identifier( Identifier { id: "str", span: Span { start: Position { line: 587, column: 71, }, end: Position { line: 587, column: 74, }, }, }, ), ], }, ), }, ), }, ), then: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 588, column: 9, }, end: Position { line: 588, column: 18, }, }, }, ), arguments: [ Integer( Integer { value: "0", span: Span { start: Position { line: 588, column: 19, }, end: Position { line: 588, column: 20, }, }, }, ), BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "sLen", span: Span { start: Position { line: 588, column: 22, }, end: Position { line: 588, column: 26, }, }, }, ), operator: Subtraction, right: Identifier( Identifier { id: "sufLen", span: Span { start: Position { line: 588, column: 29, }, end: Position { line: 588, column: 35, }, }, }, ), }, ), Identifier( Identifier { id: "str", span: Span { start: Position { line: 588, column: 37, }, end: Position { line: 588, column: 40, }, }, }, ), ], }, ), else_: Identifier( Identifier { id: "str", span: Span { start: Position { line: 590, column: 9, }, end: Position { line: 590, column: 12, }, }, }, ), span: Span { start: Position { line: 587, column: 7, }, end: Position { line: 590, column: 12, }, }, }, ), span: Span { start: Position { line: 583, column: 5, }, end: Position { line: 590, column: 12, }, }, }, ), span: Span { start: Position { line: 582, column: 5, }, end: Position { line: 590, column: 12, }, }, }, ), span: Span { start: Position { line: 580, column: 5, }, end: Position { line: 590, column: 12, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "versionOlder", span: Span { start: Position { line: 600, column: 3, }, end: Position { line: 600, column: 15, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "v1", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "v2", }, ), body: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "compareVersions", span: Span { start: Position { line: 600, column: 26, }, end: Position { line: 600, column: 41, }, }, }, ), arguments: [ Identifier( Identifier { id: "v2", span: Span { start: Position { line: 600, column: 42, }, end: Position { line: 600, column: 44, }, }, }, ), Identifier( Identifier { id: "v1", span: Span { start: Position { line: 600, column: 45, }, end: Position { line: 600, column: 47, }, }, }, ), ], }, ), operator: EqualTo, right: Integer( Integer { value: "1", span: Span { start: Position { line: 600, column: 51, }, end: Position { line: 600, column: 52, }, }, }, ), }, ), span: Span { start: Position { line: 600, column: 22, }, end: Position { line: 600, column: 52, }, }, }, ), span: Span { start: Position { line: 600, column: 18, }, end: Position { line: 600, column: 52, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "versionAtLeast", span: Span { start: Position { line: 612, column: 3, }, end: Position { line: 612, column: 17, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "v1", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "v2", }, ), body: UnaryOperation( UnaryOperation { operator: Not, operand: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "versionOlder", span: Span { start: Position { line: 612, column: 29, }, end: Position { line: 612, column: 41, }, }, }, ), arguments: [ Identifier( Identifier { id: "v1", span: Span { start: Position { line: 612, column: 42, }, end: Position { line: 612, column: 44, }, }, }, ), Identifier( Identifier { id: "v2", span: Span { start: Position { line: 612, column: 45, }, end: Position { line: 612, column: 47, }, }, }, ), ], }, ), span: Span { start: Position { line: 612, column: 28, }, end: Position { line: 612, column: 47, }, }, }, ), span: Span { start: Position { line: 612, column: 24, }, end: Position { line: 612, column: 47, }, }, }, ), span: Span { start: Position { line: 612, column: 20, }, end: Position { line: 612, column: 47, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "getName", span: Span { start: Position { line: 624, column: 3, }, end: Position { line: 624, column: 10, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "parse", span: Span { start: Position { line: 626, column: 6, }, end: Position { line: 626, column: 11, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "drv", }, ), body: PropertyAccess( PropertyAccess { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "parseDrvName", span: Span { start: Position { line: 626, column: 20, }, end: Position { line: 626, column: 32, }, }, }, ), arguments: [ Identifier( Identifier { id: "drv", span: Span { start: Position { line: 626, column: 33, }, end: Position { line: 626, column: 36, }, }, }, ), ], }, ), attribute_path: [ Raw( PartRaw { content: "name", span: Span { start: Position { line: 626, column: 38, }, end: Position { line: 626, column: 42, }, }, }, ), ], default: None, }, ), span: Span { start: Position { line: 626, column: 14, }, end: Position { line: 626, column: 42, }, }, }, ), }, ), ], target: IfThenElse( IfThenElse { predicate: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "isString", span: Span { start: Position { line: 627, column: 10, }, end: Position { line: 627, column: 18, }, }, }, ), arguments: [ Identifier( Identifier { id: "x", span: Span { start: Position { line: 627, column: 19, }, end: Position { line: 627, column: 20, }, }, }, ), ], }, ), then: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "parse", span: Span { start: Position { line: 628, column: 12, }, end: Position { line: 628, column: 17, }, }, }, ), arguments: [ Identifier( Identifier { id: "x", span: Span { start: Position { line: 628, column: 18, }, end: Position { line: 628, column: 19, }, }, }, ), ], }, ), else_: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "x", span: Span { start: Position { line: 629, column: 12, }, end: Position { line: 629, column: 13, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "pname", span: Span { start: Position { line: 629, column: 14, }, end: Position { line: 629, column: 19, }, }, }, ), ], default: Some( FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "parse", span: Span { start: Position { line: 629, column: 24, }, end: Position { line: 629, column: 29, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "x", span: Span { start: Position { line: 629, column: 30, }, end: Position { line: 629, column: 31, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "name", span: Span { start: Position { line: 629, column: 32, }, end: Position { line: 629, column: 36, }, }, }, ), ], default: None, }, ), ], }, ), ), }, ), span: Span { start: Position { line: 627, column: 7, }, end: Position { line: 629, column: 37, }, }, }, ), span: Span { start: Position { line: 625, column: 4, }, end: Position { line: 629, column: 37, }, }, }, ), span: Span { start: Position { line: 624, column: 13, }, end: Position { line: 629, column: 37, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "getVersion", span: Span { start: Position { line: 641, column: 3, }, end: Position { line: 641, column: 13, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "parse", span: Span { start: Position { line: 643, column: 6, }, end: Position { line: 643, column: 11, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "drv", }, ), body: PropertyAccess( PropertyAccess { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "parseDrvName", span: Span { start: Position { line: 643, column: 20, }, end: Position { line: 643, column: 32, }, }, }, ), arguments: [ Identifier( Identifier { id: "drv", span: Span { start: Position { line: 643, column: 33, }, end: Position { line: 643, column: 36, }, }, }, ), ], }, ), attribute_path: [ Raw( PartRaw { content: "version", span: Span { start: Position { line: 643, column: 38, }, end: Position { line: 643, column: 45, }, }, }, ), ], default: None, }, ), span: Span { start: Position { line: 643, column: 14, }, end: Position { line: 643, column: 45, }, }, }, ), }, ), ], target: IfThenElse( IfThenElse { predicate: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "isString", span: Span { start: Position { line: 644, column: 10, }, end: Position { line: 644, column: 18, }, }, }, ), arguments: [ Identifier( Identifier { id: "x", span: Span { start: Position { line: 644, column: 19, }, end: Position { line: 644, column: 20, }, }, }, ), ], }, ), then: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "parse", span: Span { start: Position { line: 645, column: 12, }, end: Position { line: 645, column: 17, }, }, }, ), arguments: [ Identifier( Identifier { id: "x", span: Span { start: Position { line: 645, column: 18, }, end: Position { line: 645, column: 19, }, }, }, ), ], }, ), else_: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "x", span: Span { start: Position { line: 646, column: 12, }, end: Position { line: 646, column: 13, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "version", span: Span { start: Position { line: 646, column: 14, }, end: Position { line: 646, column: 21, }, }, }, ), ], default: Some( FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "parse", span: Span { start: Position { line: 646, column: 26, }, end: Position { line: 646, column: 31, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "x", span: Span { start: Position { line: 646, column: 32, }, end: Position { line: 646, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "name", span: Span { start: Position { line: 646, column: 34, }, end: Position { line: 646, column: 38, }, }, }, ), ], default: None, }, ), ], }, ), ), }, ), span: Span { start: Position { line: 644, column: 7, }, end: Position { line: 646, column: 39, }, }, }, ), span: Span { start: Position { line: 642, column: 4, }, end: Position { line: 646, column: 39, }, }, }, ), span: Span { start: Position { line: 641, column: 16, }, end: Position { line: 646, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "nameFromURL", span: Span { start: Position { line: 657, column: 3, }, end: Position { line: 657, column: 14, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "url", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "sep", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "components", span: Span { start: Position { line: 659, column: 7, }, end: Position { line: 659, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "splitString", span: Span { start: Position { line: 659, column: 20, }, end: Position { line: 659, column: 31, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "/", span: Span { start: Position { line: 659, column: 33, }, end: Position { line: 659, column: 34, }, }, }, ), ], span: Span { start: Position { line: 659, column: 32, }, end: Position { line: 659, column: 35, }, }, }, ), Identifier( Identifier { id: "url", span: Span { start: Position { line: 659, column: 36, }, end: Position { line: 659, column: 39, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "filename", span: Span { start: Position { line: 660, column: 7, }, end: Position { line: 660, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 660, column: 18, }, end: Position { line: 660, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "last", span: Span { start: Position { line: 660, column: 22, }, end: Position { line: 660, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "components", span: Span { start: Position { line: 660, column: 27, }, end: Position { line: 660, column: 37, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "name", span: Span { start: Position { line: 661, column: 7, }, end: Position { line: 661, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "head", span: Span { start: Position { line: 661, column: 14, }, end: Position { line: 661, column: 18, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "splitString", span: Span { start: Position { line: 661, column: 20, }, end: Position { line: 661, column: 31, }, }, }, ), arguments: [ Identifier( Identifier { id: "sep", span: Span { start: Position { line: 661, column: 32, }, end: Position { line: 661, column: 35, }, }, }, ), Identifier( Identifier { id: "filename", span: Span { start: Position { line: 661, column: 36, }, end: Position { line: 661, column: 44, }, }, }, ), ], }, ), ], }, ), }, ), ], target: Assert( Assert { expression: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "name", span: Span { start: Position { line: 662, column: 15, }, end: Position { line: 662, column: 19, }, }, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "filename", span: Span { start: Position { line: 662, column: 23, }, end: Position { line: 662, column: 31, }, }, }, ), }, ), target: Identifier( Identifier { id: "name", span: Span { start: Position { line: 662, column: 33, }, end: Position { line: 662, column: 37, }, }, }, ), span: Span { start: Position { line: 662, column: 8, }, end: Position { line: 662, column: 37, }, }, }, ), span: Span { start: Position { line: 658, column: 5, }, end: Position { line: 662, column: 37, }, }, }, ), span: Span { start: Position { line: 657, column: 22, }, end: Position { line: 662, column: 37, }, }, }, ), span: Span { start: Position { line: 657, column: 17, }, end: Position { line: 662, column: 37, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enableFeature", span: Span { start: Position { line: 673, column: 3, }, end: Position { line: 673, column: 16, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "enable", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "feat", }, ), body: Assert( Assert { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "isString", span: Span { start: Position { line: 674, column: 12, }, end: Position { line: 674, column: 20, }, }, }, ), arguments: [ Identifier( Identifier { id: "feat", span: Span { start: Position { line: 674, column: 21, }, end: Position { line: 674, column: 25, }, }, }, ), ], }, ), target: String( String_ { parts: [ Raw( PartRaw { content: "--", span: Span { start: Position { line: 675, column: 6, }, end: Position { line: 675, column: 49, }, }, }, ), Interpolation( PartInterpolation { expression: IfThenElse( IfThenElse { predicate: Identifier( Identifier { id: "enable", span: Span { start: Position { line: 675, column: 13, }, end: Position { line: 675, column: 19, }, }, }, ), then: String( String_ { parts: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 675, column: 26, }, end: Position { line: 675, column: 32, }, }, }, ), ], span: Span { start: Position { line: 675, column: 25, }, end: Position { line: 675, column: 33, }, }, }, ), else_: String( String_ { parts: [ Raw( PartRaw { content: "disable", span: Span { start: Position { line: 675, column: 40, }, end: Position { line: 675, column: 47, }, }, }, ), ], span: Span { start: Position { line: 675, column: 39, }, end: Position { line: 675, column: 48, }, }, }, ), span: Span { start: Position { line: 675, column: 10, }, end: Position { line: 675, column: 48, }, }, }, ), }, ), Raw( PartRaw { content: "-", span: Span { start: Position { line: 675, column: 6, }, end: Position { line: 675, column: 50, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "feat", span: Span { start: Position { line: 675, column: 52, }, end: Position { line: 675, column: 56, }, }, }, ), }, ), ], span: Span { start: Position { line: 675, column: 5, }, end: Position { line: 675, column: 58, }, }, }, ), span: Span { start: Position { line: 674, column: 5, }, end: Position { line: 675, column: 58, }, }, }, ), span: Span { start: Position { line: 673, column: 27, }, end: Position { line: 675, column: 58, }, }, }, ), span: Span { start: Position { line: 673, column: 19, }, end: Position { line: 675, column: 58, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enableFeatureAs", span: Span { start: Position { line: 686, column: 3, }, end: Position { line: 686, column: 18, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "enable", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "feat", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "value", }, ), body: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "enableFeature", span: Span { start: Position { line: 686, column: 42, }, end: Position { line: 686, column: 55, }, }, }, ), arguments: [ Identifier( Identifier { id: "enable", span: Span { start: Position { line: 686, column: 56, }, end: Position { line: 686, column: 62, }, }, }, ), Identifier( Identifier { id: "feat", span: Span { start: Position { line: 686, column: 63, }, end: Position { line: 686, column: 67, }, }, }, ), ], }, ), operator: Addition, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 686, column: 70, }, end: Position { line: 686, column: 84, }, }, }, ), arguments: [ Identifier( Identifier { id: "enable", span: Span { start: Position { line: 686, column: 85, }, end: Position { line: 686, column: 91, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "=", span: Span { start: Position { line: 686, column: 93, }, end: Position { line: 686, column: 102, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "value", span: Span { start: Position { line: 686, column: 96, }, end: Position { line: 686, column: 101, }, }, }, ), }, ), ], span: Span { start: Position { line: 686, column: 92, }, end: Position { line: 686, column: 103, }, }, }, ), ], }, ), }, ), span: Span { start: Position { line: 686, column: 35, }, end: Position { line: 686, column: 103, }, }, }, ), span: Span { start: Position { line: 686, column: 29, }, end: Position { line: 686, column: 103, }, }, }, ), span: Span { start: Position { line: 686, column: 21, }, end: Position { line: 686, column: 103, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "withFeature", span: Span { start: Position { line: 697, column: 3, }, end: Position { line: 697, column: 14, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "with_", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "feat", }, ), body: Assert( Assert { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "isString", span: Span { start: Position { line: 698, column: 12, }, end: Position { line: 698, column: 20, }, }, }, ), arguments: [ Identifier( Identifier { id: "feat", span: Span { start: Position { line: 698, column: 21, }, end: Position { line: 698, column: 25, }, }, }, ), ], }, ), target: String( String_ { parts: [ Raw( PartRaw { content: "--", span: Span { start: Position { line: 699, column: 6, }, end: Position { line: 699, column: 46, }, }, }, ), Interpolation( PartInterpolation { expression: IfThenElse( IfThenElse { predicate: Identifier( Identifier { id: "with_", span: Span { start: Position { line: 699, column: 13, }, end: Position { line: 699, column: 18, }, }, }, ), then: String( String_ { parts: [ Raw( PartRaw { content: "with", span: Span { start: Position { line: 699, column: 25, }, end: Position { line: 699, column: 29, }, }, }, ), ], span: Span { start: Position { line: 699, column: 24, }, end: Position { line: 699, column: 30, }, }, }, ), else_: String( String_ { parts: [ Raw( PartRaw { content: "without", span: Span { start: Position { line: 699, column: 37, }, end: Position { line: 699, column: 44, }, }, }, ), ], span: Span { start: Position { line: 699, column: 36, }, end: Position { line: 699, column: 45, }, }, }, ), span: Span { start: Position { line: 699, column: 10, }, end: Position { line: 699, column: 45, }, }, }, ), }, ), Raw( PartRaw { content: "-", span: Span { start: Position { line: 699, column: 6, }, end: Position { line: 699, column: 47, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "feat", span: Span { start: Position { line: 699, column: 49, }, end: Position { line: 699, column: 53, }, }, }, ), }, ), ], span: Span { start: Position { line: 699, column: 5, }, end: Position { line: 699, column: 55, }, }, }, ), span: Span { start: Position { line: 698, column: 5, }, end: Position { line: 699, column: 55, }, }, }, ), span: Span { start: Position { line: 697, column: 24, }, end: Position { line: 699, column: 55, }, }, }, ), span: Span { start: Position { line: 697, column: 17, }, end: Position { line: 699, column: 55, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "withFeatureAs", span: Span { start: Position { line: 710, column: 3, }, end: Position { line: 710, column: 16, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "with_", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "feat", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "value", }, ), body: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "withFeature", span: Span { start: Position { line: 710, column: 39, }, end: Position { line: 710, column: 50, }, }, }, ), arguments: [ Identifier( Identifier { id: "with_", span: Span { start: Position { line: 710, column: 51, }, end: Position { line: 710, column: 56, }, }, }, ), Identifier( Identifier { id: "feat", span: Span { start: Position { line: 710, column: 57, }, end: Position { line: 710, column: 61, }, }, }, ), ], }, ), operator: Addition, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 710, column: 64, }, end: Position { line: 710, column: 78, }, }, }, ), arguments: [ Identifier( Identifier { id: "with_", span: Span { start: Position { line: 710, column: 79, }, end: Position { line: 710, column: 84, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "=", span: Span { start: Position { line: 710, column: 86, }, end: Position { line: 710, column: 95, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "value", span: Span { start: Position { line: 710, column: 89, }, end: Position { line: 710, column: 94, }, }, }, ), }, ), ], span: Span { start: Position { line: 710, column: 85, }, end: Position { line: 710, column: 96, }, }, }, ), ], }, ), }, ), span: Span { start: Position { line: 710, column: 32, }, end: Position { line: 710, column: 96, }, }, }, ), span: Span { start: Position { line: 710, column: 26, }, end: Position { line: 710, column: 96, }, }, }, ), span: Span { start: Position { line: 710, column: 19, }, end: Position { line: 710, column: 96, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "fixedWidthString", span: Span { start: Position { line: 724, column: 3, }, end: Position { line: 724, column: 19, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "width", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "filler", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "str", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "strw", span: Span { start: Position { line: 726, column: 7, }, end: Position { line: 726, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 726, column: 14, }, end: Position { line: 726, column: 17, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "stringLength", span: Span { start: Position { line: 726, column: 18, }, end: Position { line: 726, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 726, column: 31, }, end: Position { line: 726, column: 34, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "reqWidth", span: Span { start: Position { line: 727, column: 7, }, end: Position { line: 727, column: 15, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "width", span: Span { start: Position { line: 727, column: 18, }, end: Position { line: 727, column: 23, }, }, }, ), operator: Subtraction, right: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 727, column: 27, }, end: Position { line: 727, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "stringLength", span: Span { start: Position { line: 727, column: 31, }, end: Position { line: 727, column: 43, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "filler", span: Span { start: Position { line: 727, column: 44, }, end: Position { line: 727, column: 50, }, }, }, ), ], }, ), }, ), }, ), ], target: Assert( Assert { expression: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 729, column: 14, }, end: Position { line: 729, column: 17, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "assertMsg", span: Span { start: Position { line: 729, column: 18, }, end: Position { line: 729, column: 27, }, }, }, ), ], default: None, }, ), arguments: [ BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "strw", span: Span { start: Position { line: 729, column: 29, }, end: Position { line: 729, column: 33, }, }, }, ), operator: LessThanOrEqualTo, right: Identifier( Identifier { id: "width", span: Span { start: Position { line: 729, column: 37, }, end: Position { line: 729, column: 42, }, }, }, ), }, ), String( String_ { parts: [ Raw( PartRaw { content: "fixedWidthString: requested string length (", span: Span { start: Position { line: 730, column: 10, }, end: Position { line: 731, column: 26, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 731, column: 11, }, end: Position { line: 731, column: 19, }, }, }, ), arguments: [ Identifier( Identifier { id: "width", span: Span { start: Position { line: 731, column: 20, }, end: Position { line: 731, column: 25, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: ") must not be shorter than actual length (", span: Span { start: Position { line: 730, column: 10, }, end: Position { line: 731, column: 68, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 732, column: 13, }, end: Position { line: 732, column: 21, }, }, }, ), arguments: [ Identifier( Identifier { id: "strw", span: Span { start: Position { line: 732, column: 22, }, end: Position { line: 732, column: 26, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: ")", span: Span { start: Position { line: 730, column: 10, }, end: Position { line: 732, column: 28, }, }, }, ), ], span: Span { start: Position { line: 730, column: 9, }, end: Position { line: 732, column: 29, }, }, }, ), ], }, ), target: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "strw", span: Span { start: Position { line: 733, column: 10, }, end: Position { line: 733, column: 14, }, }, }, ), operator: EqualTo, right: Identifier( Identifier { id: "width", span: Span { start: Position { line: 733, column: 18, }, end: Position { line: 733, column: 23, }, }, }, ), }, ), then: Identifier( Identifier { id: "str", span: Span { start: Position { line: 733, column: 29, }, end: Position { line: 733, column: 32, }, }, }, ), else_: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "filler", span: Span { start: Position { line: 733, column: 38, }, end: Position { line: 733, column: 44, }, }, }, ), operator: Addition, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "fixedWidthString", span: Span { start: Position { line: 733, column: 47, }, end: Position { line: 733, column: 63, }, }, }, ), arguments: [ Identifier( Identifier { id: "reqWidth", span: Span { start: Position { line: 733, column: 64, }, end: Position { line: 733, column: 72, }, }, }, ), Identifier( Identifier { id: "filler", span: Span { start: Position { line: 733, column: 73, }, end: Position { line: 733, column: 79, }, }, }, ), Identifier( Identifier { id: "str", span: Span { start: Position { line: 733, column: 80, }, end: Position { line: 733, column: 83, }, }, }, ), ], }, ), }, ), span: Span { start: Position { line: 733, column: 7, }, end: Position { line: 733, column: 83, }, }, }, ), span: Span { start: Position { line: 729, column: 7, }, end: Position { line: 733, column: 83, }, }, }, ), span: Span { start: Position { line: 725, column: 5, }, end: Position { line: 733, column: 83, }, }, }, ), span: Span { start: Position { line: 724, column: 37, }, end: Position { line: 733, column: 83, }, }, }, ), span: Span { start: Position { line: 724, column: 29, }, end: Position { line: 733, column: 83, }, }, }, ), span: Span { start: Position { line: 724, column: 22, }, end: Position { line: 733, column: 83, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "fixedWidthNumber", span: Span { start: Position { line: 741, column: 3, }, end: Position { line: 741, column: 19, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "width", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "n", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "fixedWidthString", span: Span { start: Position { line: 741, column: 32, }, end: Position { line: 741, column: 48, }, }, }, ), arguments: [ Identifier( Identifier { id: "width", span: Span { start: Position { line: 741, column: 49, }, end: Position { line: 741, column: 54, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "0", span: Span { start: Position { line: 741, column: 56, }, end: Position { line: 741, column: 57, }, }, }, ), ], span: Span { start: Position { line: 741, column: 55, }, end: Position { line: 741, column: 58, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 741, column: 60, }, end: Position { line: 741, column: 68, }, }, }, ), arguments: [ Identifier( Identifier { id: "n", span: Span { start: Position { line: 741, column: 69, }, end: Position { line: 741, column: 70, }, }, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 741, column: 29, }, end: Position { line: 741, column: 71, }, }, }, ), span: Span { start: Position { line: 741, column: 22, }, end: Position { line: 741, column: 71, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "floatToString", span: Span { start: Position { line: 753, column: 3, }, end: Position { line: 753, column: 16, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "float", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "result", span: Span { start: Position { line: 754, column: 5, }, end: Position { line: 754, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 754, column: 14, }, end: Position { line: 754, column: 22, }, }, }, ), arguments: [ Identifier( Identifier { id: "float", span: Span { start: Position { line: 754, column: 23, }, end: Position { line: 754, column: 28, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "precise", span: Span { start: Position { line: 755, column: 5, }, end: Position { line: 755, column: 12, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "float", span: Span { start: Position { line: 755, column: 15, }, end: Position { line: 755, column: 20, }, }, }, ), operator: EqualTo, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "fromJSON", span: Span { start: Position { line: 755, column: 24, }, end: Position { line: 755, column: 32, }, }, }, ), arguments: [ Identifier( Identifier { id: "result", span: Span { start: Position { line: 755, column: 33, }, end: Position { line: 755, column: 39, }, }, }, ), ], }, ), }, ), }, ), ], target: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 756, column: 6, }, end: Position { line: 756, column: 9, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "warnIf", span: Span { start: Position { line: 756, column: 10, }, end: Position { line: 756, column: 16, }, }, }, ), ], default: None, }, ), arguments: [ UnaryOperation( UnaryOperation { operator: Not, operand: Identifier( Identifier { id: "precise", span: Span { start: Position { line: 756, column: 19, }, end: Position { line: 756, column: 26, }, }, }, ), span: Span { start: Position { line: 756, column: 18, }, end: Position { line: 756, column: 26, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "Imprecise conversion from float to string ", span: Span { start: Position { line: 756, column: 29, }, end: Position { line: 756, column: 80, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "result", span: Span { start: Position { line: 756, column: 73, }, end: Position { line: 756, column: 79, }, }, }, ), }, ), ], span: Span { start: Position { line: 756, column: 28, }, end: Position { line: 756, column: 81, }, }, }, ), Identifier( Identifier { id: "result", span: Span { start: Position { line: 757, column: 5, }, end: Position { line: 757, column: 11, }, }, }, ), ], }, ), span: Span { start: Position { line: 753, column: 26, }, end: Position { line: 757, column: 11, }, }, }, ), span: Span { start: Position { line: 753, column: 19, }, end: Position { line: 757, column: 11, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isCoercibleToString", span: Span { start: Position { line: 760, column: 3, }, end: Position { line: 760, column: 22, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "elem", span: Span { start: Position { line: 761, column: 5, }, end: Position { line: 761, column: 9, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "typeOf", span: Span { start: Position { line: 761, column: 11, }, end: Position { line: 761, column: 17, }, }, }, ), arguments: [ Identifier( Identifier { id: "x", span: Span { start: Position { line: 761, column: 18, }, end: Position { line: 761, column: 19, }, }, }, ), ], }, ), List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 761, column: 24, }, end: Position { line: 761, column: 28, }, }, }, ), ], span: Span { start: Position { line: 761, column: 23, }, end: Position { line: 761, column: 29, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "string", span: Span { start: Position { line: 761, column: 31, }, end: Position { line: 761, column: 37, }, }, }, ), ], span: Span { start: Position { line: 761, column: 30, }, end: Position { line: 761, column: 38, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "null", span: Span { start: Position { line: 761, column: 40, }, end: Position { line: 761, column: 44, }, }, }, ), ], span: Span { start: Position { line: 761, column: 39, }, end: Position { line: 761, column: 45, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "int", span: Span { start: Position { line: 761, column: 47, }, end: Position { line: 761, column: 50, }, }, }, ), ], span: Span { start: Position { line: 761, column: 46, }, end: Position { line: 761, column: 51, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "float", span: Span { start: Position { line: 761, column: 53, }, end: Position { line: 761, column: 58, }, }, }, ), ], span: Span { start: Position { line: 761, column: 52, }, end: Position { line: 761, column: 59, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 761, column: 61, }, end: Position { line: 761, column: 65, }, }, }, ), ], span: Span { start: Position { line: 761, column: 60, }, end: Position { line: 761, column: 66, }, }, }, ), ], span: Span { start: Position { line: 761, column: 21, }, end: Position { line: 761, column: 68, }, }, }, ), ], }, ), operator: LogicalOr, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "isList", span: Span { start: Position { line: 762, column: 6, }, end: Position { line: 762, column: 12, }, }, }, ), arguments: [ Identifier( Identifier { id: "x", span: Span { start: Position { line: 762, column: 13, }, end: Position { line: 762, column: 14, }, }, }, ), ], }, ), operator: LogicalAnd, right: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 762, column: 18, }, end: Position { line: 762, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "all", span: Span { start: Position { line: 762, column: 22, }, end: Position { line: 762, column: 25, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "isCoercibleToString", span: Span { start: Position { line: 762, column: 26, }, end: Position { line: 762, column: 45, }, }, }, ), Identifier( Identifier { id: "x", span: Span { start: Position { line: 762, column: 46, }, end: Position { line: 762, column: 47, }, }, }, ), ], }, ), }, ), }, ), operator: LogicalOr, right: HasAttribute( HasAttribute { expression: Identifier( Identifier { id: "x", span: Span { start: Position { line: 763, column: 5, }, end: Position { line: 763, column: 6, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "outPath", span: Span { start: Position { line: 763, column: 9, }, end: Position { line: 763, column: 16, }, }, }, ), ], }, ), }, ), operator: LogicalOr, right: HasAttribute( HasAttribute { expression: Identifier( Identifier { id: "x", span: Span { start: Position { line: 764, column: 5, }, end: Position { line: 764, column: 6, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "__toString", span: Span { start: Position { line: 764, column: 9, }, end: Position { line: 764, column: 19, }, }, }, ), ], }, ), }, ), span: Span { start: Position { line: 760, column: 25, }, end: Position { line: 764, column: 19, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isStorePath", span: Span { start: Position { line: 778, column: 3, }, end: Position { line: 778, column: 14, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: UnaryOperation( UnaryOperation { operator: Not, operand: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "isList", span: Span { start: Position { line: 779, column: 10, }, end: Position { line: 779, column: 16, }, }, }, ), arguments: [ Identifier( Identifier { id: "x", span: Span { start: Position { line: 779, column: 17, }, end: Position { line: 779, column: 18, }, }, }, ), ], }, ), span: Span { start: Position { line: 779, column: 8, }, end: Position { line: 779, column: 19, }, }, }, ), operator: LogicalAnd, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "isCoercibleToString", span: Span { start: Position { line: 779, column: 23, }, end: Position { line: 779, column: 42, }, }, }, ), arguments: [ Identifier( Identifier { id: "x", span: Span { start: Position { line: 779, column: 43, }, end: Position { line: 779, column: 44, }, }, }, ), ], }, ), }, ), then: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 780, column: 11, }, end: Position { line: 780, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 780, column: 17, }, end: Position { line: 780, column: 25, }, }, }, ), arguments: [ Identifier( Identifier { id: "x", span: Span { start: Position { line: 780, column: 26, }, end: Position { line: 780, column: 27, }, }, }, ), ], }, ), }, ), ], target: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 781, column: 7, }, end: Position { line: 781, column: 16, }, }, }, ), arguments: [ Integer( Integer { value: "0", span: Span { start: Position { line: 781, column: 17, }, end: Position { line: 781, column: 18, }, }, }, ), Integer( Integer { value: "1", span: Span { start: Position { line: 781, column: 19, }, end: Position { line: 781, column: 20, }, }, }, ), Identifier( Identifier { id: "str", span: Span { start: Position { line: 781, column: 21, }, end: Position { line: 781, column: 24, }, }, }, ), ], }, ), operator: EqualTo, right: String( String_ { parts: [ Raw( PartRaw { content: "/", span: Span { start: Position { line: 781, column: 29, }, end: Position { line: 781, column: 30, }, }, }, ), ], span: Span { start: Position { line: 781, column: 28, }, end: Position { line: 781, column: 31, }, }, }, ), }, ), operator: LogicalAnd, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "dirOf", span: Span { start: Position { line: 782, column: 10, }, end: Position { line: 782, column: 15, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 782, column: 16, }, end: Position { line: 782, column: 19, }, }, }, ), ], }, ), operator: EqualTo, right: Identifier( Identifier { id: "storeDir", span: Span { start: Position { line: 782, column: 23, }, end: Position { line: 782, column: 31, }, }, }, ), }, ), }, ), span: Span { start: Position { line: 780, column: 7, }, end: Position { line: 782, column: 31, }, }, }, ), else_: Identifier( Identifier { id: "false", span: Span { start: Position { line: 784, column: 7, }, end: Position { line: 784, column: 12, }, }, }, ), span: Span { start: Position { line: 779, column: 5, }, end: Position { line: 784, column: 12, }, }, }, ), span: Span { start: Position { line: 778, column: 17, }, end: Position { line: 784, column: 12, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "toInt", span: Span { start: Position { line: 808, column: 3, }, end: Position { line: 808, column: 8, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "str", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "strippedInput", span: Span { start: Position { line: 812, column: 7, }, end: Position { line: 812, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "match", span: Span { start: Position { line: 812, column: 23, }, end: Position { line: 812, column: 28, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "[[:space:]]*([[:digit:]]+)[[:space:]]*", span: Span { start: Position { line: 812, column: 30, }, end: Position { line: 812, column: 68, }, }, }, ), ], span: Span { start: Position { line: 812, column: 29, }, end: Position { line: 812, column: 69, }, }, }, ), Identifier( Identifier { id: "str", span: Span { start: Position { line: 812, column: 70, }, end: Position { line: 812, column: 73, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isLeadingZero", span: Span { start: Position { line: 815, column: 7, }, end: Position { line: 815, column: 20, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "match", span: Span { start: Position { line: 815, column: 23, }, end: Position { line: 815, column: 28, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "0[[:digit:]]+", span: Span { start: Position { line: 815, column: 30, }, end: Position { line: 815, column: 43, }, }, }, ), ], span: Span { start: Position { line: 815, column: 29, }, end: Position { line: 815, column: 44, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "head", span: Span { start: Position { line: 815, column: 46, }, end: Position { line: 815, column: 50, }, }, }, ), arguments: [ Identifier( Identifier { id: "strippedInput", span: Span { start: Position { line: 815, column: 51, }, end: Position { line: 815, column: 64, }, }, }, ), ], }, ), ], }, ), operator: EqualTo, right: List( List { elements: [], span: Span { start: Position { line: 815, column: 69, }, end: Position { line: 815, column: 71, }, }, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "parsedInput", span: Span { start: Position { line: 818, column: 7, }, end: Position { line: 818, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "fromJSON", span: Span { start: Position { line: 818, column: 21, }, end: Position { line: 818, column: 29, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "head", span: Span { start: Position { line: 818, column: 31, }, end: Position { line: 818, column: 35, }, }, }, ), arguments: [ Identifier( Identifier { id: "strippedInput", span: Span { start: Position { line: 818, column: 36, }, end: Position { line: 818, column: 49, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "generalError", span: Span { start: Position { line: 820, column: 7, }, end: Position { line: 820, column: 19, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "toInt: Could not convert ", span: Span { start: Position { line: 820, column: 23, }, end: Position { line: 820, column: 70, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeNixString", span: Span { start: Position { line: 820, column: 50, }, end: Position { line: 820, column: 65, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 820, column: 66, }, end: Position { line: 820, column: 69, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: " to int.", span: Span { start: Position { line: 820, column: 23, }, end: Position { line: 820, column: 78, }, }, }, ), ], span: Span { start: Position { line: 820, column: 22, }, end: Position { line: 820, column: 79, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "octalAmbigError", span: Span { start: Position { line: 822, column: 7, }, end: Position { line: 822, column: 22, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: String( String_ { parts: [ Raw( PartRaw { content: "toInt: Ambiguity in interpretation of ", span: Span { start: Position { line: 822, column: 26, }, end: Position { line: 822, column: 86, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeNixString", span: Span { start: Position { line: 822, column: 66, }, end: Position { line: 822, column: 81, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 822, column: 82, }, end: Position { line: 822, column: 85, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 822, column: 25, }, end: Position { line: 822, column: 87, }, }, }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: " between octal and zero padded integer.", span: Span { start: Position { line: 823, column: 10, }, end: Position { line: 823, column: 49, }, }, }, ), ], span: Span { start: Position { line: 823, column: 9, }, end: Position { line: 823, column: 50, }, }, }, ), }, ), }, ), ], target: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "strippedInput", span: Span { start: Position { line: 827, column: 10, }, end: Position { line: 827, column: 23, }, }, }, ), operator: EqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 827, column: 27, }, end: Position { line: 827, column: 31, }, }, }, ), }, ), then: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "throw", span: Span { start: Position { line: 828, column: 12, }, end: Position { line: 828, column: 17, }, }, }, ), arguments: [ Identifier( Identifier { id: "generalError", span: Span { start: Position { line: 828, column: 18, }, end: Position { line: 828, column: 30, }, }, }, ), ], }, ), else_: IfThenElse( IfThenElse { predicate: Identifier( Identifier { id: "isLeadingZero", span: Span { start: Position { line: 830, column: 15, }, end: Position { line: 830, column: 28, }, }, }, ), then: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "throw", span: Span { start: Position { line: 831, column: 12, }, end: Position { line: 831, column: 17, }, }, }, ), arguments: [ Identifier( Identifier { id: "octalAmbigError", span: Span { start: Position { line: 831, column: 18, }, end: Position { line: 831, column: 33, }, }, }, ), ], }, ), else_: IfThenElse( IfThenElse { predicate: UnaryOperation( UnaryOperation { operator: Not, operand: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "isInt", span: Span { start: Position { line: 833, column: 16, }, end: Position { line: 833, column: 21, }, }, }, ), arguments: [ Identifier( Identifier { id: "parsedInput", span: Span { start: Position { line: 833, column: 22, }, end: Position { line: 833, column: 33, }, }, }, ), ], }, ), span: Span { start: Position { line: 833, column: 15, }, end: Position { line: 833, column: 33, }, }, }, ), then: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "throw", span: Span { start: Position { line: 834, column: 12, }, end: Position { line: 834, column: 17, }, }, }, ), arguments: [ Identifier( Identifier { id: "generalError", span: Span { start: Position { line: 834, column: 18, }, end: Position { line: 834, column: 30, }, }, }, ), ], }, ), else_: Identifier( Identifier { id: "parsedInput", span: Span { start: Position { line: 836, column: 12, }, end: Position { line: 836, column: 23, }, }, }, ), span: Span { start: Position { line: 833, column: 12, }, end: Position { line: 836, column: 23, }, }, }, ), span: Span { start: Position { line: 830, column: 12, }, end: Position { line: 836, column: 23, }, }, }, ), span: Span { start: Position { line: 827, column: 7, }, end: Position { line: 836, column: 23, }, }, }, ), span: Span { start: Position { line: 809, column: 5, }, end: Position { line: 836, column: 23, }, }, }, ), span: Span { start: Position { line: 808, column: 11, }, end: Position { line: 836, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "toIntBase10", span: Span { start: Position { line: 859, column: 3, }, end: Position { line: 859, column: 14, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "str", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "strippedInput", span: Span { start: Position { line: 863, column: 7, }, end: Position { line: 863, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "match", span: Span { start: Position { line: 863, column: 23, }, end: Position { line: 863, column: 28, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "[[:space:]]*0*([[:digit:]]+)[[:space:]]*", span: Span { start: Position { line: 863, column: 30, }, end: Position { line: 863, column: 70, }, }, }, ), ], span: Span { start: Position { line: 863, column: 29, }, end: Position { line: 863, column: 71, }, }, }, ), Identifier( Identifier { id: "str", span: Span { start: Position { line: 863, column: 72, }, end: Position { line: 863, column: 75, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isZero", span: Span { start: Position { line: 866, column: 7, }, end: Position { line: 866, column: 13, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "match", span: Span { start: Position { line: 866, column: 16, }, end: Position { line: 866, column: 21, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "0+", span: Span { start: Position { line: 866, column: 23, }, end: Position { line: 866, column: 25, }, }, }, ), ], span: Span { start: Position { line: 866, column: 22, }, end: Position { line: 866, column: 26, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "head", span: Span { start: Position { line: 866, column: 28, }, end: Position { line: 866, column: 32, }, }, }, ), arguments: [ Identifier( Identifier { id: "strippedInput", span: Span { start: Position { line: 866, column: 33, }, end: Position { line: 866, column: 46, }, }, }, ), ], }, ), ], }, ), operator: EqualTo, right: List( List { elements: [], span: Span { start: Position { line: 866, column: 51, }, end: Position { line: 866, column: 53, }, }, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "parsedInput", span: Span { start: Position { line: 869, column: 7, }, end: Position { line: 869, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "fromJSON", span: Span { start: Position { line: 869, column: 21, }, end: Position { line: 869, column: 29, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "head", span: Span { start: Position { line: 869, column: 31, }, end: Position { line: 869, column: 35, }, }, }, ), arguments: [ Identifier( Identifier { id: "strippedInput", span: Span { start: Position { line: 869, column: 36, }, end: Position { line: 869, column: 49, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "generalError", span: Span { start: Position { line: 871, column: 7, }, end: Position { line: 871, column: 19, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "toIntBase10: Could not convert ", span: Span { start: Position { line: 871, column: 23, }, end: Position { line: 871, column: 76, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeNixString", span: Span { start: Position { line: 871, column: 56, }, end: Position { line: 871, column: 71, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 871, column: 72, }, end: Position { line: 871, column: 75, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: " to int.", span: Span { start: Position { line: 871, column: 23, }, end: Position { line: 871, column: 84, }, }, }, ), ], span: Span { start: Position { line: 871, column: 22, }, end: Position { line: 871, column: 85, }, }, }, ), }, ), ], target: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "strippedInput", span: Span { start: Position { line: 875, column: 10, }, end: Position { line: 875, column: 23, }, }, }, ), operator: EqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 875, column: 27, }, end: Position { line: 875, column: 31, }, }, }, ), }, ), then: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "throw", span: Span { start: Position { line: 876, column: 12, }, end: Position { line: 876, column: 17, }, }, }, ), arguments: [ Identifier( Identifier { id: "generalError", span: Span { start: Position { line: 876, column: 18, }, end: Position { line: 876, column: 30, }, }, }, ), ], }, ), else_: IfThenElse( IfThenElse { predicate: Identifier( Identifier { id: "isZero", span: Span { start: Position { line: 878, column: 15, }, end: Position { line: 878, column: 21, }, }, }, ), then: Integer( Integer { value: "0", span: Span { start: Position { line: 879, column: 12, }, end: Position { line: 879, column: 13, }, }, }, ), else_: IfThenElse( IfThenElse { predicate: UnaryOperation( UnaryOperation { operator: Not, operand: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "isInt", span: Span { start: Position { line: 881, column: 16, }, end: Position { line: 881, column: 21, }, }, }, ), arguments: [ Identifier( Identifier { id: "parsedInput", span: Span { start: Position { line: 881, column: 22, }, end: Position { line: 881, column: 33, }, }, }, ), ], }, ), span: Span { start: Position { line: 881, column: 15, }, end: Position { line: 881, column: 33, }, }, }, ), then: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "throw", span: Span { start: Position { line: 882, column: 12, }, end: Position { line: 882, column: 17, }, }, }, ), arguments: [ Identifier( Identifier { id: "generalError", span: Span { start: Position { line: 882, column: 18, }, end: Position { line: 882, column: 30, }, }, }, ), ], }, ), else_: Identifier( Identifier { id: "parsedInput", span: Span { start: Position { line: 884, column: 12, }, end: Position { line: 884, column: 23, }, }, }, ), span: Span { start: Position { line: 881, column: 12, }, end: Position { line: 884, column: 23, }, }, }, ), span: Span { start: Position { line: 878, column: 12, }, end: Position { line: 884, column: 23, }, }, }, ), span: Span { start: Position { line: 875, column: 7, }, end: Position { line: 884, column: 23, }, }, }, ), span: Span { start: Position { line: 860, column: 5, }, end: Position { line: 884, column: 23, }, }, }, ), span: Span { start: Position { line: 859, column: 17, }, end: Position { line: 884, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "readPathsFromFile", span: Span { start: Position { line: 901, column: 3, }, end: Position { line: 901, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 901, column: 23, }, end: Position { line: 901, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "warn", span: Span { start: Position { line: 901, column: 27, }, end: Position { line: 901, column: 31, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "lib.readPathsFromFile is deprecated, use a list instead", span: Span { start: Position { line: 901, column: 33, }, end: Position { line: 901, column: 88, }, }, }, ), ], span: Span { start: Position { line: 901, column: 32, }, end: Position { line: 901, column: 89, }, }, }, ), Function( Function { head: Simple( FunctionHeadSimple { identifier: "rootPath", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "file", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "lines", span: Span { start: Position { line: 904, column: 9, }, end: Position { line: 904, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 904, column: 17, }, end: Position { line: 904, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "splitString", span: Span { start: Position { line: 904, column: 21, }, end: Position { line: 904, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "\n", span: Span { start: Position { line: 904, column: 34, }, end: Position { line: 904, column: 36, }, }, }, ), ], span: Span { start: Position { line: 904, column: 33, }, end: Position { line: 904, column: 37, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "readFile", span: Span { start: Position { line: 904, column: 39, }, end: Position { line: 904, column: 47, }, }, }, ), arguments: [ Identifier( Identifier { id: "file", span: Span { start: Position { line: 904, column: 48, }, end: Position { line: 904, column: 52, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "removeComments", span: Span { start: Position { line: 905, column: 9, }, end: Position { line: 905, column: 23, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 905, column: 26, }, end: Position { line: 905, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "filter", span: Span { start: Position { line: 905, column: 30, }, end: Position { line: 905, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "line", }, ), body: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "line", span: Span { start: Position { line: 905, column: 44, }, end: Position { line: 905, column: 48, }, }, }, ), operator: NotEqualTo, right: String( String_ { parts: [], span: Span { start: Position { line: 905, column: 52, }, end: Position { line: 905, column: 54, }, }, }, ), }, ), operator: LogicalAnd, right: UnaryOperation( UnaryOperation { operator: Not, operand: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 905, column: 60, }, end: Position { line: 905, column: 63, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "hasPrefix", span: Span { start: Position { line: 905, column: 64, }, end: Position { line: 905, column: 73, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "#", span: Span { start: Position { line: 905, column: 75, }, end: Position { line: 905, column: 76, }, }, }, ), ], span: Span { start: Position { line: 905, column: 74, }, end: Position { line: 905, column: 77, }, }, }, ), Identifier( Identifier { id: "line", span: Span { start: Position { line: 905, column: 78, }, end: Position { line: 905, column: 82, }, }, }, ), ], }, ), span: Span { start: Position { line: 905, column: 58, }, end: Position { line: 905, column: 83, }, }, }, ), }, ), span: Span { start: Position { line: 905, column: 38, }, end: Position { line: 905, column: 83, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "relativePaths", span: Span { start: Position { line: 906, column: 9, }, end: Position { line: 906, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "removeComments", span: Span { start: Position { line: 906, column: 25, }, end: Position { line: 906, column: 39, }, }, }, ), arguments: [ Identifier( Identifier { id: "lines", span: Span { start: Position { line: 906, column: 40, }, end: Position { line: 906, column: 45, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "absolutePaths", span: Span { start: Position { line: 907, column: 9, }, end: Position { line: 907, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "map", span: Span { start: Position { line: 907, column: 25, }, end: Position { line: 907, column: 28, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "path", }, ), body: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "rootPath", span: Span { start: Position { line: 907, column: 36, }, end: Position { line: 907, column: 44, }, }, }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "/", span: Span { start: Position { line: 907, column: 48, }, end: Position { line: 907, column: 56, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "path", span: Span { start: Position { line: 907, column: 51, }, end: Position { line: 907, column: 55, }, }, }, ), }, ), ], span: Span { start: Position { line: 907, column: 47, }, end: Position { line: 907, column: 57, }, }, }, ), }, ), span: Span { start: Position { line: 907, column: 30, }, end: Position { line: 907, column: 57, }, }, }, ), Identifier( Identifier { id: "relativePaths", span: Span { start: Position { line: 907, column: 59, }, end: Position { line: 907, column: 72, }, }, }, ), ], }, ), }, ), ], target: Identifier( Identifier { id: "absolutePaths", span: Span { start: Position { line: 909, column: 9, }, end: Position { line: 909, column: 22, }, }, }, ), span: Span { start: Position { line: 903, column: 7, }, end: Position { line: 909, column: 22, }, }, }, ), span: Span { start: Position { line: 902, column: 16, }, end: Position { line: 909, column: 22, }, }, }, ), span: Span { start: Position { line: 902, column: 6, }, end: Position { line: 909, column: 22, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "fileContents", span: Span { start: Position { line: 921, column: 3, }, end: Position { line: 921, column: 15, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "file", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "removeSuffix", span: Span { start: Position { line: 921, column: 24, }, end: Position { line: 921, column: 36, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "\n", span: Span { start: Position { line: 921, column: 38, }, end: Position { line: 921, column: 40, }, }, }, ), ], span: Span { start: Position { line: 921, column: 37, }, end: Position { line: 921, column: 41, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "readFile", span: Span { start: Position { line: 921, column: 43, }, end: Position { line: 921, column: 51, }, }, }, ), arguments: [ Identifier( Identifier { id: "file", span: Span { start: Position { line: 921, column: 52, }, end: Position { line: 921, column: 56, }, }, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 921, column: 18, }, end: Position { line: 921, column: 57, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "sanitizeDerivationName", span: Span { start: Position { line: 936, column: 3, }, end: Position { line: 936, column: 25, }, }, }, ), ], to: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "okRegex", span: Span { start: Position { line: 937, column: 7, }, end: Position { line: 937, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "match", span: Span { start: Position { line: 937, column: 17, }, end: Position { line: 937, column: 22, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "[[:alnum:]+_?=-][[:alnum:]+._?=-]*", span: Span { start: Position { line: 937, column: 24, }, end: Position { line: 937, column: 58, }, }, }, ), ], span: Span { start: Position { line: 937, column: 23, }, end: Position { line: 937, column: 59, }, }, }, ), ], }, ), }, ), ], target: Function( Function { head: Simple( FunctionHeadSimple { identifier: "string", }, ), body: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 941, column: 6, }, end: Position { line: 941, column: 18, }, }, }, ), arguments: [ Identifier( Identifier { id: "string", span: Span { start: Position { line: 941, column: 19, }, end: Position { line: 941, column: 25, }, }, }, ), ], }, ), operator: LessThanOrEqualTo, right: Integer( Integer { value: "207", span: Span { start: Position { line: 941, column: 29, }, end: Position { line: 941, column: 32, }, }, }, ), }, ), operator: LogicalAnd, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "okRegex", span: Span { start: Position { line: 941, column: 36, }, end: Position { line: 941, column: 43, }, }, }, ), arguments: [ Identifier( Identifier { id: "string", span: Span { start: Position { line: 941, column: 44, }, end: Position { line: 941, column: 50, }, }, }, ), ], }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 941, column: 54, }, end: Position { line: 941, column: 58, }, }, }, ), }, ), }, ), then: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "unsafeDiscardStringContext", span: Span { start: Position { line: 942, column: 8, }, end: Position { line: 942, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "string", span: Span { start: Position { line: 942, column: 35, }, end: Position { line: 942, column: 41, }, }, }, ), ], }, ), else_: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 943, column: 8, }, end: Position { line: 943, column: 11, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "pipe", span: Span { start: Position { line: 943, column: 12, }, end: Position { line: 943, column: 16, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "string", span: Span { start: Position { line: 943, column: 17, }, end: Position { line: 943, column: 23, }, }, }, ), List( List { elements: [ Identifier( Identifier { id: "unsafeDiscardStringContext", span: Span { start: Position { line: 946, column: 5, }, end: Position { line: 946, column: 31, }, }, }, ), Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "elemAt", span: Span { start: Position { line: 948, column: 9, }, end: Position { line: 948, column: 15, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "match", span: Span { start: Position { line: 948, column: 17, }, end: Position { line: 948, column: 22, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "\\.*(.*)", span: Span { start: Position { line: 948, column: 24, }, end: Position { line: 948, column: 32, }, }, }, ), ], span: Span { start: Position { line: 948, column: 23, }, end: Position { line: 948, column: 33, }, }, }, ), Identifier( Identifier { id: "x", span: Span { start: Position { line: 948, column: 34, }, end: Position { line: 948, column: 35, }, }, }, ), ], }, ), Integer( Integer { value: "0", span: Span { start: Position { line: 948, column: 37, }, end: Position { line: 948, column: 38, }, }, }, ), ], }, ), span: Span { start: Position { line: 948, column: 6, }, end: Position { line: 948, column: 38, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "split", span: Span { start: Position { line: 952, column: 6, }, end: Position { line: 952, column: 11, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "[^[:alnum:]+._?=-]+", span: Span { start: Position { line: 952, column: 13, }, end: Position { line: 952, column: 32, }, }, }, ), ], span: Span { start: Position { line: 952, column: 12, }, end: Position { line: 952, column: 33, }, }, }, ), ], }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatMapStrings", span: Span { start: Position { line: 954, column: 6, }, end: Position { line: 954, column: 22, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "s", }, ), body: IfThenElse( IfThenElse { predicate: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 954, column: 30, }, end: Position { line: 954, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isList", span: Span { start: Position { line: 954, column: 34, }, end: Position { line: 954, column: 40, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "s", span: Span { start: Position { line: 954, column: 41, }, end: Position { line: 954, column: 42, }, }, }, ), ], }, ), then: String( String_ { parts: [ Raw( PartRaw { content: "-", span: Span { start: Position { line: 954, column: 49, }, end: Position { line: 954, column: 50, }, }, }, ), ], span: Span { start: Position { line: 954, column: 48, }, end: Position { line: 954, column: 51, }, }, }, ), else_: Identifier( Identifier { id: "s", span: Span { start: Position { line: 954, column: 57, }, end: Position { line: 954, column: 58, }, }, }, ), span: Span { start: Position { line: 954, column: 27, }, end: Position { line: 954, column: 58, }, }, }, ), span: Span { start: Position { line: 954, column: 24, }, end: Position { line: 954, column: 58, }, }, }, ), ], }, ), Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 956, column: 9, }, end: Position { line: 956, column: 18, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 956, column: 20, }, end: Position { line: 956, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "max", span: Span { start: Position { line: 956, column: 24, }, end: Position { line: 956, column: 27, }, }, }, ), ], default: None, }, ), arguments: [ BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 956, column: 29, }, end: Position { line: 956, column: 41, }, }, }, ), arguments: [ Identifier( Identifier { id: "x", span: Span { start: Position { line: 956, column: 42, }, end: Position { line: 956, column: 43, }, }, }, ), ], }, ), operator: Subtraction, right: Integer( Integer { value: "207", span: Span { start: Position { line: 956, column: 46, }, end: Position { line: 956, column: 49, }, }, }, ), }, ), Integer( Integer { value: "0", span: Span { start: Position { line: 956, column: 51, }, end: Position { line: 956, column: 52, }, }, }, ), ], }, ), UnaryOperation( UnaryOperation { operator: Negate, operand: Integer( Integer { value: "1", span: Span { start: Position { line: 956, column: 56, }, end: Position { line: 956, column: 57, }, }, }, ), span: Span { start: Position { line: 956, column: 55, }, end: Position { line: 956, column: 57, }, }, }, ), Identifier( Identifier { id: "x", span: Span { start: Position { line: 956, column: 59, }, end: Position { line: 956, column: 60, }, }, }, ), ], }, ), span: Span { start: Position { line: 956, column: 6, }, end: Position { line: 956, column: 60, }, }, }, ), Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 958, column: 12, }, end: Position { line: 958, column: 24, }, }, }, ), arguments: [ Identifier( Identifier { id: "x", span: Span { start: Position { line: 958, column: 25, }, end: Position { line: 958, column: 26, }, }, }, ), ], }, ), operator: EqualTo, right: Integer( Integer { value: "0", span: Span { start: Position { line: 958, column: 30, }, end: Position { line: 958, column: 31, }, }, }, ), }, ), then: String( String_ { parts: [ Raw( PartRaw { content: "unknown", span: Span { start: Position { line: 958, column: 38, }, end: Position { line: 958, column: 45, }, }, }, ), ], span: Span { start: Position { line: 958, column: 37, }, end: Position { line: 958, column: 46, }, }, }, ), else_: Identifier( Identifier { id: "x", span: Span { start: Position { line: 958, column: 52, }, end: Position { line: 958, column: 53, }, }, }, ), span: Span { start: Position { line: 958, column: 9, }, end: Position { line: 958, column: 53, }, }, }, ), span: Span { start: Position { line: 958, column: 6, }, end: Position { line: 958, column: 53, }, }, }, ), ], span: Span { start: Position { line: 943, column: 24, }, end: Position { line: 959, column: 4, }, }, }, ), ], }, ), span: Span { start: Position { line: 941, column: 3, }, end: Position { line: 959, column: 4, }, }, }, ), span: Span { start: Position { line: 939, column: 3, }, end: Position { line: 959, column: 4, }, }, }, ), span: Span { start: Position { line: 937, column: 3, }, end: Position { line: 959, column: 4, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "levenshtein", span: Span { start: Position { line: 975, column: 3, }, end: Position { line: 975, column: 14, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "a", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "b", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "arr", span: Span { start: Position { line: 977, column: 5, }, end: Position { line: 977, column: 8, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 977, column: 11, }, end: Position { line: 977, column: 14, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "genList", span: Span { start: Position { line: 977, column: 15, }, end: Position { line: 977, column: 22, }, }, }, ), ], default: None, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "i", }, ), body: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 978, column: 7, }, end: Position { line: 978, column: 10, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "genList", span: Span { start: Position { line: 978, column: 11, }, end: Position { line: 978, column: 18, }, }, }, ), ], default: None, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "j", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "dist", span: Span { start: Position { line: 979, column: 9, }, end: Position { line: 979, column: 13, }, }, }, ), arguments: [ Identifier( Identifier { id: "i", span: Span { start: Position { line: 979, column: 14, }, end: Position { line: 979, column: 15, }, }, }, ), Identifier( Identifier { id: "j", span: Span { start: Position { line: 979, column: 16, }, end: Position { line: 979, column: 17, }, }, }, ), ], }, ), span: Span { start: Position { line: 978, column: 20, }, end: Position { line: 979, column: 17, }, }, }, ), BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 980, column: 10, }, end: Position { line: 980, column: 22, }, }, }, ), arguments: [ Identifier( Identifier { id: "b", span: Span { start: Position { line: 980, column: 23, }, end: Position { line: 980, column: 24, }, }, }, ), ], }, ), operator: Addition, right: Integer( Integer { value: "1", span: Span { start: Position { line: 980, column: 27, }, end: Position { line: 980, column: 28, }, }, }, ), }, ), ], }, ), span: Span { start: Position { line: 977, column: 24, }, end: Position { line: 980, column: 29, }, }, }, ), BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 981, column: 8, }, end: Position { line: 981, column: 20, }, }, }, ), arguments: [ Identifier( Identifier { id: "a", span: Span { start: Position { line: 981, column: 21, }, end: Position { line: 981, column: 22, }, }, }, ), ], }, ), operator: Addition, right: Integer( Integer { value: "1", span: Span { start: Position { line: 981, column: 25, }, end: Position { line: 981, column: 26, }, }, }, ), }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "d", span: Span { start: Position { line: 982, column: 5, }, end: Position { line: 982, column: 6, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "y", }, ), body: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 982, column: 15, }, end: Position { line: 982, column: 18, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "elemAt", span: Span { start: Position { line: 982, column: 19, }, end: Position { line: 982, column: 25, }, }, }, ), ], default: None, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 982, column: 27, }, end: Position { line: 982, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "elemAt", span: Span { start: Position { line: 982, column: 31, }, end: Position { line: 982, column: 37, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "arr", span: Span { start: Position { line: 982, column: 38, }, end: Position { line: 982, column: 41, }, }, }, ), Identifier( Identifier { id: "x", span: Span { start: Position { line: 982, column: 42, }, end: Position { line: 982, column: 43, }, }, }, ), ], }, ), Identifier( Identifier { id: "y", span: Span { start: Position { line: 982, column: 45, }, end: Position { line: 982, column: 46, }, }, }, ), ], }, ), span: Span { start: Position { line: 982, column: 12, }, end: Position { line: 982, column: 46, }, }, }, ), span: Span { start: Position { line: 982, column: 9, }, end: Position { line: 982, column: 46, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "dist", span: Span { start: Position { line: 983, column: 5, }, end: Position { line: 983, column: 9, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "i", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "j", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "c", span: Span { start: Position { line: 984, column: 11, }, end: Position { line: 984, column: 12, }, }, }, ), ], to: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 984, column: 18, }, end: Position { line: 984, column: 27, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "i", span: Span { start: Position { line: 984, column: 29, }, end: Position { line: 984, column: 30, }, }, }, ), operator: Subtraction, right: Integer( Integer { value: "1", span: Span { start: Position { line: 984, column: 33, }, end: Position { line: 984, column: 34, }, }, }, ), }, ), Integer( Integer { value: "1", span: Span { start: Position { line: 984, column: 36, }, end: Position { line: 984, column: 37, }, }, }, ), Identifier( Identifier { id: "a", span: Span { start: Position { line: 984, column: 38, }, end: Position { line: 984, column: 39, }, }, }, ), ], }, ), operator: EqualTo, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 984, column: 43, }, end: Position { line: 984, column: 52, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "j", span: Span { start: Position { line: 984, column: 54, }, end: Position { line: 984, column: 55, }, }, }, ), operator: Subtraction, right: Integer( Integer { value: "1", span: Span { start: Position { line: 984, column: 58, }, end: Position { line: 984, column: 59, }, }, }, ), }, ), Integer( Integer { value: "1", span: Span { start: Position { line: 984, column: 61, }, end: Position { line: 984, column: 62, }, }, }, ), Identifier( Identifier { id: "b", span: Span { start: Position { line: 984, column: 63, }, end: Position { line: 984, column: 64, }, }, }, ), ], }, ), }, ), then: Integer( Integer { value: "0", span: Span { start: Position { line: 985, column: 14, }, end: Position { line: 985, column: 15, }, }, }, ), else_: Integer( Integer { value: "1", span: Span { start: Position { line: 985, column: 21, }, end: Position { line: 985, column: 22, }, }, }, ), span: Span { start: Position { line: 984, column: 15, }, end: Position { line: 985, column: 22, }, }, }, ), }, ), ], target: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "j", span: Span { start: Position { line: 987, column: 10, }, end: Position { line: 987, column: 11, }, }, }, ), operator: EqualTo, right: Integer( Integer { value: "0", span: Span { start: Position { line: 987, column: 15, }, end: Position { line: 987, column: 16, }, }, }, ), }, ), then: Identifier( Identifier { id: "i", span: Span { start: Position { line: 987, column: 22, }, end: Position { line: 987, column: 23, }, }, }, ), else_: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "i", span: Span { start: Position { line: 988, column: 15, }, end: Position { line: 988, column: 16, }, }, }, ), operator: EqualTo, right: Integer( Integer { value: "0", span: Span { start: Position { line: 988, column: 20, }, end: Position { line: 988, column: 21, }, }, }, ), }, ), then: Identifier( Identifier { id: "j", span: Span { start: Position { line: 988, column: 27, }, end: Position { line: 988, column: 28, }, }, }, ), else_: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 989, column: 12, }, end: Position { line: 989, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "min", span: Span { start: Position { line: 989, column: 16, }, end: Position { line: 989, column: 19, }, }, }, ), ], default: None, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 990, column: 11, }, end: Position { line: 990, column: 14, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "min", span: Span { start: Position { line: 990, column: 15, }, end: Position { line: 990, column: 18, }, }, }, ), ], default: None, }, ), arguments: [ BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "d", span: Span { start: Position { line: 990, column: 20, }, end: Position { line: 990, column: 21, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "i", span: Span { start: Position { line: 990, column: 23, }, end: Position { line: 990, column: 24, }, }, }, ), operator: Subtraction, right: Integer( Integer { value: "1", span: Span { start: Position { line: 990, column: 27, }, end: Position { line: 990, column: 28, }, }, }, ), }, ), Identifier( Identifier { id: "j", span: Span { start: Position { line: 990, column: 30, }, end: Position { line: 990, column: 31, }, }, }, ), ], }, ), operator: Addition, right: Integer( Integer { value: "1", span: Span { start: Position { line: 990, column: 34, }, end: Position { line: 990, column: 35, }, }, }, ), }, ), BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "d", span: Span { start: Position { line: 990, column: 38, }, end: Position { line: 990, column: 39, }, }, }, ), arguments: [ Identifier( Identifier { id: "i", span: Span { start: Position { line: 990, column: 40, }, end: Position { line: 990, column: 41, }, }, }, ), BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "j", span: Span { start: Position { line: 990, column: 43, }, end: Position { line: 990, column: 44, }, }, }, ), operator: Subtraction, right: Integer( Integer { value: "1", span: Span { start: Position { line: 990, column: 47, }, end: Position { line: 990, column: 48, }, }, }, ), }, ), ], }, ), operator: Addition, right: Integer( Integer { value: "1", span: Span { start: Position { line: 990, column: 52, }, end: Position { line: 990, column: 53, }, }, }, ), }, ), ], }, ), BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "d", span: Span { start: Position { line: 991, column: 11, }, end: Position { line: 991, column: 12, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "i", span: Span { start: Position { line: 991, column: 14, }, end: Position { line: 991, column: 15, }, }, }, ), operator: Subtraction, right: Integer( Integer { value: "1", span: Span { start: Position { line: 991, column: 18, }, end: Position { line: 991, column: 19, }, }, }, ), }, ), BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "j", span: Span { start: Position { line: 991, column: 22, }, end: Position { line: 991, column: 23, }, }, }, ), operator: Subtraction, right: Integer( Integer { value: "1", span: Span { start: Position { line: 991, column: 26, }, end: Position { line: 991, column: 27, }, }, }, ), }, ), ], }, ), operator: Addition, right: Identifier( Identifier { id: "c", span: Span { start: Position { line: 991, column: 31, }, end: Position { line: 991, column: 32, }, }, }, ), }, ), ], }, ), span: Span { start: Position { line: 988, column: 12, }, end: Position { line: 991, column: 34, }, }, }, ), span: Span { start: Position { line: 987, column: 7, }, end: Position { line: 991, column: 34, }, }, }, ), span: Span { start: Position { line: 984, column: 7, }, end: Position { line: 991, column: 34, }, }, }, ), span: Span { start: Position { line: 983, column: 15, }, end: Position { line: 991, column: 34, }, }, }, ), span: Span { start: Position { line: 983, column: 12, }, end: Position { line: 991, column: 34, }, }, }, ), }, ), ], target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "d", span: Span { start: Position { line: 992, column: 6, }, end: Position { line: 992, column: 7, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 992, column: 9, }, end: Position { line: 992, column: 21, }, }, }, ), arguments: [ Identifier( Identifier { id: "a", span: Span { start: Position { line: 992, column: 22, }, end: Position { line: 992, column: 23, }, }, }, ), ], }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 992, column: 26, }, end: Position { line: 992, column: 38, }, }, }, ), arguments: [ Identifier( Identifier { id: "b", span: Span { start: Position { line: 992, column: 39, }, end: Position { line: 992, column: 40, }, }, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 975, column: 23, }, end: Position { line: 992, column: 41, }, }, }, ), span: Span { start: Position { line: 975, column: 20, }, end: Position { line: 992, column: 41, }, }, }, ), span: Span { start: Position { line: 975, column: 17, }, end: Position { line: 992, column: 41, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "commonPrefixLength", span: Span { start: Position { line: 996, column: 3, }, end: Position { line: 996, column: 21, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "a", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "b", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "m", span: Span { start: Position { line: 998, column: 7, }, end: Position { line: 998, column: 8, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 998, column: 11, }, end: Position { line: 998, column: 14, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "min", span: Span { start: Position { line: 998, column: 15, }, end: Position { line: 998, column: 18, }, }, }, ), ], default: None, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 998, column: 20, }, end: Position { line: 998, column: 32, }, }, }, ), arguments: [ Identifier( Identifier { id: "a", span: Span { start: Position { line: 998, column: 33, }, end: Position { line: 998, column: 34, }, }, }, ), ], }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 998, column: 37, }, end: Position { line: 998, column: 49, }, }, }, ), arguments: [ Identifier( Identifier { id: "b", span: Span { start: Position { line: 998, column: 50, }, end: Position { line: 998, column: 51, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "go", span: Span { start: Position { line: 999, column: 7, }, end: Position { line: 999, column: 9, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "i", }, ), body: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "i", span: Span { start: Position { line: 999, column: 18, }, end: Position { line: 999, column: 19, }, }, }, ), operator: GreaterThanOrEqualTo, right: Identifier( Identifier { id: "m", span: Span { start: Position { line: 999, column: 23, }, end: Position { line: 999, column: 24, }, }, }, ), }, ), then: Identifier( Identifier { id: "m", span: Span { start: Position { line: 999, column: 30, }, end: Position { line: 999, column: 31, }, }, }, ), else_: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 999, column: 40, }, end: Position { line: 999, column: 49, }, }, }, ), arguments: [ Identifier( Identifier { id: "i", span: Span { start: Position { line: 999, column: 50, }, end: Position { line: 999, column: 51, }, }, }, ), Integer( Integer { value: "1", span: Span { start: Position { line: 999, column: 52, }, end: Position { line: 999, column: 53, }, }, }, ), Identifier( Identifier { id: "a", span: Span { start: Position { line: 999, column: 54, }, end: Position { line: 999, column: 55, }, }, }, ), ], }, ), operator: EqualTo, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 999, column: 59, }, end: Position { line: 999, column: 68, }, }, }, ), arguments: [ Identifier( Identifier { id: "i", span: Span { start: Position { line: 999, column: 69, }, end: Position { line: 999, column: 70, }, }, }, ), Integer( Integer { value: "1", span: Span { start: Position { line: 999, column: 71, }, end: Position { line: 999, column: 72, }, }, }, ), Identifier( Identifier { id: "b", span: Span { start: Position { line: 999, column: 73, }, end: Position { line: 999, column: 74, }, }, }, ), ], }, ), }, ), then: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "go", span: Span { start: Position { line: 999, column: 80, }, end: Position { line: 999, column: 82, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "i", span: Span { start: Position { line: 999, column: 84, }, end: Position { line: 999, column: 85, }, }, }, ), operator: Addition, right: Integer( Integer { value: "1", span: Span { start: Position { line: 999, column: 88, }, end: Position { line: 999, column: 89, }, }, }, ), }, ), ], }, ), else_: Identifier( Identifier { id: "i", span: Span { start: Position { line: 999, column: 96, }, end: Position { line: 999, column: 97, }, }, }, ), span: Span { start: Position { line: 999, column: 37, }, end: Position { line: 999, column: 97, }, }, }, ), span: Span { start: Position { line: 999, column: 15, }, end: Position { line: 999, column: 97, }, }, }, ), span: Span { start: Position { line: 999, column: 12, }, end: Position { line: 999, column: 97, }, }, }, ), }, ), ], target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "go", span: Span { start: Position { line: 1000, column: 8, }, end: Position { line: 1000, column: 10, }, }, }, ), arguments: [ Integer( Integer { value: "0", span: Span { start: Position { line: 1000, column: 11, }, end: Position { line: 1000, column: 12, }, }, }, ), ], }, ), span: Span { start: Position { line: 997, column: 5, }, end: Position { line: 1000, column: 12, }, }, }, ), span: Span { start: Position { line: 996, column: 27, }, end: Position { line: 1000, column: 12, }, }, }, ), span: Span { start: Position { line: 996, column: 24, }, end: Position { line: 1000, column: 12, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "commonSuffixLength", span: Span { start: Position { line: 1004, column: 3, }, end: Position { line: 1004, column: 21, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "a", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "b", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "m", span: Span { start: Position { line: 1006, column: 7, }, end: Position { line: 1006, column: 8, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 1006, column: 11, }, end: Position { line: 1006, column: 14, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "min", span: Span { start: Position { line: 1006, column: 15, }, end: Position { line: 1006, column: 18, }, }, }, ), ], default: None, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 1006, column: 20, }, end: Position { line: 1006, column: 32, }, }, }, ), arguments: [ Identifier( Identifier { id: "a", span: Span { start: Position { line: 1006, column: 33, }, end: Position { line: 1006, column: 34, }, }, }, ), ], }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 1006, column: 37, }, end: Position { line: 1006, column: 49, }, }, }, ), arguments: [ Identifier( Identifier { id: "b", span: Span { start: Position { line: 1006, column: 50, }, end: Position { line: 1006, column: 51, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "go", span: Span { start: Position { line: 1007, column: 7, }, end: Position { line: 1007, column: 9, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "i", }, ), body: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "i", span: Span { start: Position { line: 1007, column: 18, }, end: Position { line: 1007, column: 19, }, }, }, ), operator: GreaterThanOrEqualTo, right: Identifier( Identifier { id: "m", span: Span { start: Position { line: 1007, column: 23, }, end: Position { line: 1007, column: 24, }, }, }, ), }, ), then: Identifier( Identifier { id: "m", span: Span { start: Position { line: 1007, column: 30, }, end: Position { line: 1007, column: 31, }, }, }, ), else_: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 1007, column: 40, }, end: Position { line: 1007, column: 49, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 1007, column: 51, }, end: Position { line: 1007, column: 63, }, }, }, ), arguments: [ Identifier( Identifier { id: "a", span: Span { start: Position { line: 1007, column: 64, }, end: Position { line: 1007, column: 65, }, }, }, ), ], }, ), operator: Subtraction, right: Identifier( Identifier { id: "i", span: Span { start: Position { line: 1007, column: 68, }, end: Position { line: 1007, column: 69, }, }, }, ), }, ), operator: Subtraction, right: Integer( Integer { value: "1", span: Span { start: Position { line: 1007, column: 72, }, end: Position { line: 1007, column: 73, }, }, }, ), }, ), Integer( Integer { value: "1", span: Span { start: Position { line: 1007, column: 75, }, end: Position { line: 1007, column: 76, }, }, }, ), Identifier( Identifier { id: "a", span: Span { start: Position { line: 1007, column: 77, }, end: Position { line: 1007, column: 78, }, }, }, ), ], }, ), operator: EqualTo, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 1007, column: 82, }, end: Position { line: 1007, column: 91, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 1007, column: 93, }, end: Position { line: 1007, column: 105, }, }, }, ), arguments: [ Identifier( Identifier { id: "b", span: Span { start: Position { line: 1007, column: 106, }, end: Position { line: 1007, column: 107, }, }, }, ), ], }, ), operator: Subtraction, right: Identifier( Identifier { id: "i", span: Span { start: Position { line: 1007, column: 110, }, end: Position { line: 1007, column: 111, }, }, }, ), }, ), operator: Subtraction, right: Integer( Integer { value: "1", span: Span { start: Position { line: 1007, column: 114, }, end: Position { line: 1007, column: 115, }, }, }, ), }, ), Integer( Integer { value: "1", span: Span { start: Position { line: 1007, column: 117, }, end: Position { line: 1007, column: 118, }, }, }, ), Identifier( Identifier { id: "b", span: Span { start: Position { line: 1007, column: 119, }, end: Position { line: 1007, column: 120, }, }, }, ), ], }, ), }, ), then: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "go", span: Span { start: Position { line: 1007, column: 126, }, end: Position { line: 1007, column: 128, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "i", span: Span { start: Position { line: 1007, column: 130, }, end: Position { line: 1007, column: 131, }, }, }, ), operator: Addition, right: Integer( Integer { value: "1", span: Span { start: Position { line: 1007, column: 134, }, end: Position { line: 1007, column: 135, }, }, }, ), }, ), ], }, ), else_: Identifier( Identifier { id: "i", span: Span { start: Position { line: 1007, column: 142, }, end: Position { line: 1007, column: 143, }, }, }, ), span: Span { start: Position { line: 1007, column: 37, }, end: Position { line: 1007, column: 143, }, }, }, ), span: Span { start: Position { line: 1007, column: 15, }, end: Position { line: 1007, column: 143, }, }, }, ), span: Span { start: Position { line: 1007, column: 12, }, end: Position { line: 1007, column: 143, }, }, }, ), }, ), ], target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "go", span: Span { start: Position { line: 1008, column: 8, }, end: Position { line: 1008, column: 10, }, }, }, ), arguments: [ Integer( Integer { value: "0", span: Span { start: Position { line: 1008, column: 11, }, end: Position { line: 1008, column: 12, }, }, }, ), ], }, ), span: Span { start: Position { line: 1005, column: 5, }, end: Position { line: 1008, column: 12, }, }, }, ), span: Span { start: Position { line: 1004, column: 27, }, end: Position { line: 1008, column: 12, }, }, }, ), span: Span { start: Position { line: 1004, column: 24, }, end: Position { line: 1008, column: 12, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "levenshteinAtMost", span: Span { start: Position { line: 1028, column: 3, }, end: Position { line: 1028, column: 20, }, }, }, ), ], to: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "infixDifferAtMost1", span: Span { start: Position { line: 1029, column: 5, }, end: Position { line: 1029, column: 23, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "y", }, ), body: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 1029, column: 32, }, end: Position { line: 1029, column: 44, }, }, }, ), arguments: [ Identifier( Identifier { id: "x", span: Span { start: Position { line: 1029, column: 45, }, end: Position { line: 1029, column: 46, }, }, }, ), ], }, ), operator: LessThanOrEqualTo, right: Integer( Integer { value: "1", span: Span { start: Position { line: 1029, column: 50, }, end: Position { line: 1029, column: 51, }, }, }, ), }, ), operator: LogicalAnd, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 1029, column: 55, }, end: Position { line: 1029, column: 67, }, }, }, ), arguments: [ Identifier( Identifier { id: "y", span: Span { start: Position { line: 1029, column: 68, }, end: Position { line: 1029, column: 69, }, }, }, ), ], }, ), operator: LessThanOrEqualTo, right: Integer( Integer { value: "1", span: Span { start: Position { line: 1029, column: 73, }, end: Position { line: 1029, column: 74, }, }, }, ), }, ), }, ), span: Span { start: Position { line: 1029, column: 29, }, end: Position { line: 1029, column: 74, }, }, }, ), span: Span { start: Position { line: 1029, column: 26, }, end: Position { line: 1029, column: 74, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "infixDifferAtMost2", span: Span { start: Position { line: 1037, column: 5, }, end: Position { line: 1037, column: 23, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "y", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "xlen", span: Span { start: Position { line: 1039, column: 9, }, end: Position { line: 1039, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 1039, column: 16, }, end: Position { line: 1039, column: 28, }, }, }, ), arguments: [ Identifier( Identifier { id: "x", span: Span { start: Position { line: 1039, column: 29, }, end: Position { line: 1039, column: 30, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ylen", span: Span { start: Position { line: 1040, column: 9, }, end: Position { line: 1040, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 1040, column: 16, }, end: Position { line: 1040, column: 28, }, }, }, ), arguments: [ Identifier( Identifier { id: "y", span: Span { start: Position { line: 1040, column: 29, }, end: Position { line: 1040, column: 30, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "diff", span: Span { start: Position { line: 1043, column: 9, }, end: Position { line: 1043, column: 13, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "xlen", span: Span { start: Position { line: 1043, column: 16, }, end: Position { line: 1043, column: 20, }, }, }, ), operator: Subtraction, right: Identifier( Identifier { id: "ylen", span: Span { start: Position { line: 1043, column: 23, }, end: Position { line: 1043, column: 27, }, }, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "xinfix", span: Span { start: Position { line: 1046, column: 9, }, end: Position { line: 1046, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 1046, column: 18, }, end: Position { line: 1046, column: 27, }, }, }, ), arguments: [ Integer( Integer { value: "1", span: Span { start: Position { line: 1046, column: 28, }, end: Position { line: 1046, column: 29, }, }, }, ), BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "xlen", span: Span { start: Position { line: 1046, column: 31, }, end: Position { line: 1046, column: 35, }, }, }, ), operator: Subtraction, right: Integer( Integer { value: "2", span: Span { start: Position { line: 1046, column: 38, }, end: Position { line: 1046, column: 39, }, }, }, ), }, ), Identifier( Identifier { id: "x", span: Span { start: Position { line: 1046, column: 41, }, end: Position { line: 1046, column: 42, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "yinfix", span: Span { start: Position { line: 1047, column: 9, }, end: Position { line: 1047, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 1047, column: 18, }, end: Position { line: 1047, column: 27, }, }, }, ), arguments: [ Integer( Integer { value: "1", span: Span { start: Position { line: 1047, column: 28, }, end: Position { line: 1047, column: 29, }, }, }, ), BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "ylen", span: Span { start: Position { line: 1047, column: 31, }, end: Position { line: 1047, column: 35, }, }, }, ), operator: Subtraction, right: Integer( Integer { value: "2", span: Span { start: Position { line: 1047, column: 38, }, end: Position { line: 1047, column: 39, }, }, }, ), }, ), Identifier( Identifier { id: "y", span: Span { start: Position { line: 1047, column: 41, }, end: Position { line: 1047, column: 42, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "xdelr", span: Span { start: Position { line: 1050, column: 9, }, end: Position { line: 1050, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 1050, column: 17, }, end: Position { line: 1050, column: 26, }, }, }, ), arguments: [ Integer( Integer { value: "0", span: Span { start: Position { line: 1050, column: 27, }, end: Position { line: 1050, column: 28, }, }, }, ), BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "xlen", span: Span { start: Position { line: 1050, column: 30, }, end: Position { line: 1050, column: 34, }, }, }, ), operator: Subtraction, right: Integer( Integer { value: "1", span: Span { start: Position { line: 1050, column: 37, }, end: Position { line: 1050, column: 38, }, }, }, ), }, ), Identifier( Identifier { id: "x", span: Span { start: Position { line: 1050, column: 40, }, end: Position { line: 1050, column: 41, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "xdell", span: Span { start: Position { line: 1051, column: 9, }, end: Position { line: 1051, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 1051, column: 17, }, end: Position { line: 1051, column: 26, }, }, }, ), arguments: [ Integer( Integer { value: "1", span: Span { start: Position { line: 1051, column: 27, }, end: Position { line: 1051, column: 28, }, }, }, ), BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "xlen", span: Span { start: Position { line: 1051, column: 30, }, end: Position { line: 1051, column: 34, }, }, }, ), operator: Subtraction, right: Integer( Integer { value: "1", span: Span { start: Position { line: 1051, column: 37, }, end: Position { line: 1051, column: 38, }, }, }, ), }, ), Identifier( Identifier { id: "x", span: Span { start: Position { line: 1051, column: 40, }, end: Position { line: 1051, column: 41, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ydelr", span: Span { start: Position { line: 1052, column: 9, }, end: Position { line: 1052, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 1052, column: 17, }, end: Position { line: 1052, column: 26, }, }, }, ), arguments: [ Integer( Integer { value: "0", span: Span { start: Position { line: 1052, column: 27, }, end: Position { line: 1052, column: 28, }, }, }, ), BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "ylen", span: Span { start: Position { line: 1052, column: 30, }, end: Position { line: 1052, column: 34, }, }, }, ), operator: Subtraction, right: Integer( Integer { value: "1", span: Span { start: Position { line: 1052, column: 37, }, end: Position { line: 1052, column: 38, }, }, }, ), }, ), Identifier( Identifier { id: "y", span: Span { start: Position { line: 1052, column: 40, }, end: Position { line: 1052, column: 41, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ydell", span: Span { start: Position { line: 1053, column: 9, }, end: Position { line: 1053, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 1053, column: 17, }, end: Position { line: 1053, column: 26, }, }, }, ), arguments: [ Integer( Integer { value: "1", span: Span { start: Position { line: 1053, column: 27, }, end: Position { line: 1053, column: 28, }, }, }, ), BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "ylen", span: Span { start: Position { line: 1053, column: 30, }, end: Position { line: 1053, column: 34, }, }, }, ), operator: Subtraction, right: Integer( Integer { value: "1", span: Span { start: Position { line: 1053, column: 37, }, end: Position { line: 1053, column: 38, }, }, }, ), }, ), Identifier( Identifier { id: "y", span: Span { start: Position { line: 1053, column: 40, }, end: Position { line: 1053, column: 41, }, }, }, ), ], }, ), }, ), ], target: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "diff", span: Span { start: Position { line: 1058, column: 12, }, end: Position { line: 1058, column: 16, }, }, }, ), operator: EqualTo, right: Integer( Integer { value: "2", span: Span { start: Position { line: 1058, column: 20, }, end: Position { line: 1058, column: 21, }, }, }, ), }, ), then: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "xinfix", span: Span { start: Position { line: 1058, column: 27, }, end: Position { line: 1058, column: 33, }, }, }, ), operator: EqualTo, right: Identifier( Identifier { id: "y", span: Span { start: Position { line: 1058, column: 37, }, end: Position { line: 1058, column: 38, }, }, }, ), }, ), else_: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "diff", span: Span { start: Position { line: 1062, column: 17, }, end: Position { line: 1062, column: 21, }, }, }, ), operator: EqualTo, right: Integer( Integer { value: "1", span: Span { start: Position { line: 1062, column: 25, }, end: Position { line: 1062, column: 26, }, }, }, ), }, ), then: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "xinfix", span: Span { start: Position { line: 1062, column: 32, }, end: Position { line: 1062, column: 38, }, }, }, ), operator: EqualTo, right: Identifier( Identifier { id: "ydelr", span: Span { start: Position { line: 1062, column: 42, }, end: Position { line: 1062, column: 47, }, }, }, ), }, ), operator: LogicalOr, right: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "xinfix", span: Span { start: Position { line: 1062, column: 51, }, end: Position { line: 1062, column: 57, }, }, }, ), operator: EqualTo, right: Identifier( Identifier { id: "ydell", span: Span { start: Position { line: 1062, column: 61, }, end: Position { line: 1062, column: 66, }, }, }, ), }, ), }, ), else_: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "xinfix", span: Span { start: Position { line: 1067, column: 14, }, end: Position { line: 1067, column: 20, }, }, }, ), operator: EqualTo, right: Identifier( Identifier { id: "yinfix", span: Span { start: Position { line: 1067, column: 24, }, end: Position { line: 1067, column: 30, }, }, }, ), }, ), operator: LogicalOr, right: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "xdelr", span: Span { start: Position { line: 1067, column: 34, }, end: Position { line: 1067, column: 39, }, }, }, ), operator: EqualTo, right: Identifier( Identifier { id: "ydell", span: Span { start: Position { line: 1067, column: 43, }, end: Position { line: 1067, column: 48, }, }, }, ), }, ), }, ), operator: LogicalOr, right: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "xdell", span: Span { start: Position { line: 1067, column: 52, }, end: Position { line: 1067, column: 57, }, }, }, ), operator: EqualTo, right: Identifier( Identifier { id: "ydelr", span: Span { start: Position { line: 1067, column: 61, }, end: Position { line: 1067, column: 66, }, }, }, ), }, ), }, ), span: Span { start: Position { line: 1062, column: 14, }, end: Position { line: 1067, column: 66, }, }, }, ), span: Span { start: Position { line: 1058, column: 9, }, end: Position { line: 1067, column: 66, }, }, }, ), span: Span { start: Position { line: 1038, column: 7, }, end: Position { line: 1067, column: 66, }, }, }, ), span: Span { start: Position { line: 1037, column: 29, }, end: Position { line: 1067, column: 66, }, }, }, ), span: Span { start: Position { line: 1037, column: 26, }, end: Position { line: 1067, column: 66, }, }, }, ), }, ), ], target: Function( Function { head: Simple( FunctionHeadSimple { identifier: "k", }, ), body: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "k", span: Span { start: Position { line: 1069, column: 14, }, end: Position { line: 1069, column: 15, }, }, }, ), operator: LessThanOrEqualTo, right: Integer( Integer { value: "0", span: Span { start: Position { line: 1069, column: 19, }, end: Position { line: 1069, column: 20, }, }, }, ), }, ), then: Function( Function { head: Simple( FunctionHeadSimple { identifier: "a", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "b", }, ), body: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "a", span: Span { start: Position { line: 1069, column: 32, }, end: Position { line: 1069, column: 33, }, }, }, ), operator: EqualTo, right: Identifier( Identifier { id: "b", span: Span { start: Position { line: 1069, column: 37, }, end: Position { line: 1069, column: 38, }, }, }, ), }, ), span: Span { start: Position { line: 1069, column: 29, }, end: Position { line: 1069, column: 38, }, }, }, ), span: Span { start: Position { line: 1069, column: 26, }, end: Position { line: 1069, column: 38, }, }, }, ), else_: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "f", span: Span { start: Position { line: 1070, column: 11, }, end: Position { line: 1070, column: 12, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "a", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "b", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "alen", span: Span { start: Position { line: 1072, column: 11, }, end: Position { line: 1072, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 1072, column: 18, }, end: Position { line: 1072, column: 30, }, }, }, ), arguments: [ Identifier( Identifier { id: "a", span: Span { start: Position { line: 1072, column: 31, }, end: Position { line: 1072, column: 32, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "blen", span: Span { start: Position { line: 1073, column: 11, }, end: Position { line: 1073, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 1073, column: 18, }, end: Position { line: 1073, column: 30, }, }, }, ), arguments: [ Identifier( Identifier { id: "b", span: Span { start: Position { line: 1073, column: 31, }, end: Position { line: 1073, column: 32, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "prelen", span: Span { start: Position { line: 1074, column: 11, }, end: Position { line: 1074, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "commonPrefixLength", span: Span { start: Position { line: 1074, column: 20, }, end: Position { line: 1074, column: 38, }, }, }, ), arguments: [ Identifier( Identifier { id: "a", span: Span { start: Position { line: 1074, column: 39, }, end: Position { line: 1074, column: 40, }, }, }, ), Identifier( Identifier { id: "b", span: Span { start: Position { line: 1074, column: 41, }, end: Position { line: 1074, column: 42, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "suflen", span: Span { start: Position { line: 1075, column: 11, }, end: Position { line: 1075, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "commonSuffixLength", span: Span { start: Position { line: 1075, column: 20, }, end: Position { line: 1075, column: 38, }, }, }, ), arguments: [ Identifier( Identifier { id: "a", span: Span { start: Position { line: 1075, column: 39, }, end: Position { line: 1075, column: 40, }, }, }, ), Identifier( Identifier { id: "b", span: Span { start: Position { line: 1075, column: 41, }, end: Position { line: 1075, column: 42, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "presuflen", span: Span { start: Position { line: 1076, column: 11, }, end: Position { line: 1076, column: 20, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "prelen", span: Span { start: Position { line: 1076, column: 23, }, end: Position { line: 1076, column: 29, }, }, }, ), operator: Addition, right: Identifier( Identifier { id: "suflen", span: Span { start: Position { line: 1076, column: 32, }, end: Position { line: 1076, column: 38, }, }, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ainfix", span: Span { start: Position { line: 1077, column: 11, }, end: Position { line: 1077, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 1077, column: 20, }, end: Position { line: 1077, column: 29, }, }, }, ), arguments: [ Identifier( Identifier { id: "prelen", span: Span { start: Position { line: 1077, column: 30, }, end: Position { line: 1077, column: 36, }, }, }, ), BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "alen", span: Span { start: Position { line: 1077, column: 38, }, end: Position { line: 1077, column: 42, }, }, }, ), operator: Subtraction, right: Identifier( Identifier { id: "presuflen", span: Span { start: Position { line: 1077, column: 45, }, end: Position { line: 1077, column: 54, }, }, }, ), }, ), Identifier( Identifier { id: "a", span: Span { start: Position { line: 1077, column: 56, }, end: Position { line: 1077, column: 57, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "binfix", span: Span { start: Position { line: 1078, column: 11, }, end: Position { line: 1078, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 1078, column: 20, }, end: Position { line: 1078, column: 29, }, }, }, ), arguments: [ Identifier( Identifier { id: "prelen", span: Span { start: Position { line: 1078, column: 30, }, end: Position { line: 1078, column: 36, }, }, }, ), BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "blen", span: Span { start: Position { line: 1078, column: 38, }, end: Position { line: 1078, column: 42, }, }, }, ), operator: Subtraction, right: Identifier( Identifier { id: "presuflen", span: Span { start: Position { line: 1078, column: 45, }, end: Position { line: 1078, column: 54, }, }, }, ), }, ), Identifier( Identifier { id: "b", span: Span { start: Position { line: 1078, column: 56, }, end: Position { line: 1078, column: 57, }, }, }, ), ], }, ), }, ), ], target: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "alen", span: Span { start: Position { line: 1081, column: 12, }, end: Position { line: 1081, column: 16, }, }, }, ), operator: LessThan, right: Identifier( Identifier { id: "blen", span: Span { start: Position { line: 1081, column: 19, }, end: Position { line: 1081, column: 23, }, }, }, ), }, ), then: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "f", span: Span { start: Position { line: 1081, column: 29, }, end: Position { line: 1081, column: 30, }, }, }, ), arguments: [ Identifier( Identifier { id: "b", span: Span { start: Position { line: 1081, column: 31, }, end: Position { line: 1081, column: 32, }, }, }, ), Identifier( Identifier { id: "a", span: Span { start: Position { line: 1081, column: 33, }, end: Position { line: 1081, column: 34, }, }, }, ), ], }, ), else_: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "alen", span: Span { start: Position { line: 1083, column: 17, }, end: Position { line: 1083, column: 21, }, }, }, ), operator: Subtraction, right: Identifier( Identifier { id: "blen", span: Span { start: Position { line: 1083, column: 24, }, end: Position { line: 1083, column: 28, }, }, }, ), }, ), operator: GreaterThan, right: Identifier( Identifier { id: "k", span: Span { start: Position { line: 1083, column: 31, }, end: Position { line: 1083, column: 32, }, }, }, ), }, ), then: Identifier( Identifier { id: "false", span: Span { start: Position { line: 1083, column: 38, }, end: Position { line: 1083, column: 43, }, }, }, ), else_: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "k", span: Span { start: Position { line: 1084, column: 17, }, end: Position { line: 1084, column: 18, }, }, }, ), operator: EqualTo, right: Integer( Integer { value: "1", span: Span { start: Position { line: 1084, column: 22, }, end: Position { line: 1084, column: 23, }, }, }, ), }, ), then: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "infixDifferAtMost1", span: Span { start: Position { line: 1084, column: 29, }, end: Position { line: 1084, column: 47, }, }, }, ), arguments: [ Identifier( Identifier { id: "ainfix", span: Span { start: Position { line: 1084, column: 48, }, end: Position { line: 1084, column: 54, }, }, }, ), Identifier( Identifier { id: "binfix", span: Span { start: Position { line: 1084, column: 55, }, end: Position { line: 1084, column: 61, }, }, }, ), ], }, ), else_: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "k", span: Span { start: Position { line: 1085, column: 17, }, end: Position { line: 1085, column: 18, }, }, }, ), operator: EqualTo, right: Integer( Integer { value: "2", span: Span { start: Position { line: 1085, column: 22, }, end: Position { line: 1085, column: 23, }, }, }, ), }, ), then: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "infixDifferAtMost2", span: Span { start: Position { line: 1085, column: 29, }, end: Position { line: 1085, column: 47, }, }, }, ), arguments: [ Identifier( Identifier { id: "ainfix", span: Span { start: Position { line: 1085, column: 48, }, end: Position { line: 1085, column: 54, }, }, }, ), Identifier( Identifier { id: "binfix", span: Span { start: Position { line: 1085, column: 55, }, end: Position { line: 1085, column: 61, }, }, }, ), ], }, ), else_: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "levenshtein", span: Span { start: Position { line: 1086, column: 14, }, end: Position { line: 1086, column: 25, }, }, }, ), arguments: [ Identifier( Identifier { id: "ainfix", span: Span { start: Position { line: 1086, column: 26, }, end: Position { line: 1086, column: 32, }, }, }, ), Identifier( Identifier { id: "binfix", span: Span { start: Position { line: 1086, column: 33, }, end: Position { line: 1086, column: 39, }, }, }, ), ], }, ), operator: LessThanOrEqualTo, right: Identifier( Identifier { id: "k", span: Span { start: Position { line: 1086, column: 43, }, end: Position { line: 1086, column: 44, }, }, }, ), }, ), span: Span { start: Position { line: 1085, column: 14, }, end: Position { line: 1086, column: 44, }, }, }, ), span: Span { start: Position { line: 1084, column: 14, }, end: Position { line: 1086, column: 44, }, }, }, ), span: Span { start: Position { line: 1083, column: 14, }, end: Position { line: 1086, column: 44, }, }, }, ), span: Span { start: Position { line: 1081, column: 9, }, end: Position { line: 1086, column: 44, }, }, }, ), span: Span { start: Position { line: 1071, column: 9, }, end: Position { line: 1086, column: 44, }, }, }, ), span: Span { start: Position { line: 1070, column: 18, }, end: Position { line: 1086, column: 44, }, }, }, ), span: Span { start: Position { line: 1070, column: 15, }, end: Position { line: 1086, column: 44, }, }, }, ), }, ), ], target: Identifier( Identifier { id: "f", span: Span { start: Position { line: 1087, column: 10, }, end: Position { line: 1087, column: 11, }, }, }, ), span: Span { start: Position { line: 1070, column: 7, }, end: Position { line: 1087, column: 11, }, }, }, ), span: Span { start: Position { line: 1069, column: 11, }, end: Position { line: 1087, column: 11, }, }, }, ), span: Span { start: Position { line: 1069, column: 8, }, end: Position { line: 1087, column: 11, }, }, }, ), span: Span { start: Position { line: 1028, column: 23, }, end: Position { line: 1087, column: 11, }, }, }, ), }, ), ], span: Span { start: Position { line: 9, column: 1, }, end: Position { line: 1088, column: 2, }, }, }, ), span: Span { start: Position { line: 3, column: 1, }, end: Position { line: 1088, column: 2, }, }, }, ), span: Span { start: Position { line: 2, column: 1, }, end: Position { line: 1088, column: 2, }, }, }, )