Function(
 Function {
  head: Simple(
   FunctionHeadSimple {
    identifier: "f",
   },
  ),
  body: 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: "intToBits",
              span: Span {
               start: Position {
                line: 8,
                column: 5,
               },
               end: Position {
                line: 8,
                column: 14,
               },
              },
             },
            ),
           ],
           to: Function(
            Function {
             head: Simple(
              FunctionHeadSimple {
               identifier: "x",
              },
             ),
             body: IfThenElse(
              IfThenElse {
               predicate: BinaryOperation(
                BinaryOperation {
                 left: BinaryOperation(
                  BinaryOperation {
                   left: Identifier(
                    Identifier {
                     id: "x",
                     span: Span {
                      start: Position {
                       line: 9,
                       column: 10,
                      },
                      end: Position {
                       line: 9,
                       column: 11,
                      },
                     },
                    },
                   ),
                   operator: EqualTo,
                   right: Integer(
                    Integer {
                     value: "0",
                     span: Span {
                      start: Position {
                       line: 9,
                       column: 15,
                      },
                      end: Position {
                       line: 9,
                       column: 16,
                      },
                     },
                    },
                   ),
                  },
                 ),
                 operator: LogicalOr,
                 right: BinaryOperation(
                  BinaryOperation {
                   left: Identifier(
                    Identifier {
                     id: "x",
                     span: Span {
                      start: Position {
                       line: 9,
                       column: 20,
                      },
                      end: Position {
                       line: 9,
                       column: 21,
                      },
                     },
                    },
                   ),
                   operator: EqualTo,
                   right: UnaryOperation(
                    UnaryOperation {
                     operator: Negate,
                     operand: Integer(
                      Integer {
                       value: "1",
                       span: Span {
                        start: Position {
                         line: 9,
                         column: 26,
                        },
                        end: Position {
                         line: 9,
                         column: 27,
                        },
                       },
                      },
                     ),
                     span: Span {
                      start: Position {
                       line: 9,
                       column: 25,
                      },
                      end: Position {
                       line: 9,
                       column: 27,
                      },
                     },
                    },
                   ),
                  },
                 ),
                },
               ),
               then: List(
                List {
                 elements: [],
                 span: Span {
                  start: Position {
                   line: 10,
                   column: 9,
                  },
                  end: Position {
                   line: 10,
                   column: 11,
                  },
                 },
                },
               ),
               else_: LetIn(
                LetIn {
                 bindings: [
                  KeyValue(
                   BindingKeyValue {
                    from: [
                     Raw(
                      PartRaw {
                       content: "headbit",
                       span: Span {
                        start: Position {
                         line: 13,
                         column: 11,
                        },
                        end: Position {
                         line: 13,
                         column: 18,
                        },
                       },
                      },
                     ),
                    ],
                    to: IfThenElse(
                     IfThenElse {
                      predicate: BinaryOperation(
                       BinaryOperation {
                        left: BinaryOperation(
                         BinaryOperation {
                          left: BinaryOperation(
                           BinaryOperation {
                            left: Identifier(
                             Identifier {
                              id: "x",
                              span: Span {
                               start: Position {
                                line: 13,
                                column: 26,
                               },
                               end: Position {
                                line: 13,
                                column: 27,
                               },
                              },
                             },
                            ),
                            operator: Division,
                            right: Integer(
                             Integer {
                              value: "2",
                              span: Span {
                               start: Position {
                                line: 13,
                                column: 30,
                               },
                               end: Position {
                                line: 13,
                                column: 31,
                               },
                              },
                             },
                            ),
                           },
                          ),
                          operator: Multiplication,
                          right: Integer(
                           Integer {
                            value: "2",
                            span: Span {
                             start: Position {
                              line: 13,
                              column: 35,
                             },
                             end: Position {
                              line: 13,
                              column: 36,
                             },
                            },
                           },
                          ),
                         },
                        ),
                        operator: NotEqualTo,
                        right: Identifier(
                         Identifier {
                          id: "x",
                          span: Span {
                           start: Position {
                            line: 13,
                            column: 40,
                           },
                           end: Position {
                            line: 13,
                            column: 41,
                           },
                          },
                         },
                        ),
                       },
                      ),
                      then: Integer(
                       Integer {
                        value: "1",
                        span: Span {
                         start: Position {
                          line: 13,
                          column: 47,
                         },
                         end: Position {
                          line: 13,
                          column: 48,
                         },
                        },
                       },
                      ),
                      else_: Integer(
                       Integer {
                        value: "0",
                        span: Span {
                         start: Position {
                          line: 13,
                          column: 54,
                         },
                         end: Position {
                          line: 13,
                          column: 55,
                         },
                        },
                       },
                      ),
                      span: Span {
                       start: Position {
                        line: 13,
                        column: 22,
                       },
                       end: Position {
                        line: 13,
                        column: 55,
                       },
                      },
                     },
                    ),
                   },
                  ),
                  KeyValue(
                   BindingKeyValue {
                    from: [
                     Raw(
                      PartRaw {
                       content: "tailbits",
                       span: Span {
                        start: Position {
                         line: 14,
                         column: 11,
                        },
                        end: Position {
                         line: 14,
                         column: 19,
                        },
                       },
                      },
                     ),
                    ],
                    to: IfThenElse(
                     IfThenElse {
                      predicate: BinaryOperation(
                       BinaryOperation {
                        left: Identifier(
                         Identifier {
                          id: "x",
                          span: Span {
                           start: Position {
                            line: 14,
                            column: 25,
                           },
                           end: Position {
                            line: 14,
                            column: 26,
                           },
                          },
                         },
                        ),
                        operator: LessThan,
                        right: Integer(
                         Integer {
                          value: "0",
                          span: Span {
                           start: Position {
                            line: 14,
                            column: 29,
                           },
                           end: Position {
                            line: 14,
                            column: 30,
                           },
                          },
                         },
                        ),
                       },
                      ),
                      then: BinaryOperation(
                       BinaryOperation {
                        left: BinaryOperation(
                         BinaryOperation {
                          left: BinaryOperation(
                           BinaryOperation {
                            left: Identifier(
                             Identifier {
                              id: "x",
                              span: Span {
                               start: Position {
                                line: 14,
                                column: 38,
                               },
                               end: Position {
                                line: 14,
                                column: 39,
                               },
                              },
                             },
                            ),
                            operator: Addition,
                            right: Integer(
                             Integer {
                              value: "1",
                              span: Span {
                               start: Position {
                                line: 14,
                                column: 42,
                               },
                               end: Position {
                                line: 14,
                                column: 43,
                               },
                              },
                             },
                            ),
                           },
                          ),
                          operator: Division,
                          right: Integer(
                           Integer {
                            value: "2",
                            span: Span {
                             start: Position {
                              line: 14,
                              column: 47,
                             },
                             end: Position {
                              line: 14,
                              column: 48,
                             },
                            },
                           },
                          ),
                         },
                        ),
                        operator: Subtraction,
                        right: Integer(
                         Integer {
                          value: "1",
                          span: Span {
                           start: Position {
                            line: 14,
                            column: 52,
                           },
                           end: Position {
                            line: 14,
                            column: 53,
                           },
                          },
                         },
                        ),
                       },
                      ),
                      else_: BinaryOperation(
                       BinaryOperation {
                        left: Identifier(
                         Identifier {
                          id: "x",
                          span: Span {
                           start: Position {
                            line: 14,
                            column: 59,
                           },
                           end: Position {
                            line: 14,
                            column: 60,
                           },
                          },
                         },
                        ),
                        operator: Division,
                        right: Integer(
                         Integer {
                          value: "2",
                          span: Span {
                           start: Position {
                            line: 14,
                            column: 63,
                           },
                           end: Position {
                            line: 14,
                            column: 64,
                           },
                          },
                         },
                        ),
                       },
                      ),
                      span: Span {
                       start: Position {
                        line: 14,
                        column: 22,
                       },
                       end: Position {
                        line: 14,
                        column: 64,
                       },
                      },
                     },
                    ),
                   },
                  ),
                 ],
                 target: BinaryOperation(
                  BinaryOperation {
                   left: List(
                    List {
                     elements: [
                      Identifier(
                       Identifier {
                        id: "headbit",
                        span: Span {
                         start: Position {
                          line: 16,
                          column: 12,
                         },
                         end: Position {
                          line: 16,
                          column: 19,
                         },
                        },
                       },
                      ),
                     ],
                     span: Span {
                      start: Position {
                       line: 16,
                       column: 11,
                      },
                      end: Position {
                       line: 16,
                       column: 20,
                      },
                     },
                    },
                   ),
                   operator: Concatenation,
                   right: FunctionApplication(
                    FunctionApplication {
                     function: Identifier(
                      Identifier {
                       id: "intToBits",
                       span: Span {
                        start: Position {
                         line: 16,
                         column: 25,
                        },
                        end: Position {
                         line: 16,
                         column: 34,
                        },
                       },
                      },
                     ),
                     arguments: [
                      Identifier(
                       Identifier {
                        id: "tailbits",
                        span: Span {
                         start: Position {
                          line: 16,
                          column: 35,
                         },
                         end: Position {
                          line: 16,
                          column: 43,
                         },
                        },
                       },
                      ),
                     ],
                    },
                   ),
                  },
                 ),
                 span: Span {
                  start: Position {
                   line: 12,
                   column: 9,
                  },
                  end: Position {
                   line: 16,
                   column: 44,
                  },
                 },
                },
               ),
               span: Span {
                start: Position {
                 line: 9,
                 column: 7,
                },
                end: Position {
                 line: 16,
                 column: 44,
                },
               },
              },
             ),
             span: Span {
              start: Position {
               line: 8,
               column: 17,
              },
              end: Position {
               line: 16,
               column: 44,
              },
             },
            },
           ),
          },
         ),
         KeyValue(
          BindingKeyValue {
           from: [
            Raw(
             PartRaw {
              content: "bitsToInt",
              span: Span {
               start: Position {
                line: 20,
                column: 5,
               },
               end: Position {
                line: 20,
                column: 14,
               },
              },
             },
            ),
           ],
           to: Function(
            Function {
             head: Simple(
              FunctionHeadSimple {
               identifier: "l",
              },
             ),
             body: Function(
              Function {
               head: Simple(
                FunctionHeadSimple {
                 identifier: "signum",
                },
               ),
               body: IfThenElse(
                IfThenElse {
                 predicate: BinaryOperation(
                  BinaryOperation {
                   left: Identifier(
                    Identifier {
                     id: "l",
                     span: Span {
                      start: Position {
                       line: 21,
                       column: 10,
                      },
                      end: Position {
                       line: 21,
                       column: 11,
                      },
                     },
                    },
                   ),
                   operator: EqualTo,
                   right: List(
                    List {
                     elements: [],
                     span: Span {
                      start: Position {
                       line: 21,
                       column: 15,
                      },
                      end: Position {
                       line: 21,
                       column: 17,
                      },
                     },
                    },
                   ),
                  },
                 ),
                 then: IfThenElse(
                  IfThenElse {
                   predicate: BinaryOperation(
                    BinaryOperation {
                     left: Identifier(
                      Identifier {
                       id: "signum",
                       span: Span {
                        start: Position {
                         line: 22,
                         column: 13,
                        },
                        end: Position {
                         line: 22,
                         column: 19,
                        },
                       },
                      },
                     ),
                     operator: EqualTo,
                     right: Integer(
                      Integer {
                       value: "0",
                       span: Span {
                        start: Position {
                         line: 22,
                         column: 23,
                        },
                        end: Position {
                         line: 22,
                         column: 24,
                        },
                       },
                      },
                     ),
                    },
                   ),
                   then: Integer(
                    Integer {
                     value: "0",
                     span: Span {
                      start: Position {
                       line: 22,
                       column: 30,
                      },
                      end: Position {
                       line: 22,
                       column: 31,
                      },
                     },
                    },
                   ),
                   else_: UnaryOperation(
                    UnaryOperation {
                     operator: Negate,
                     operand: Integer(
                      Integer {
                       value: "1",
                       span: Span {
                        start: Position {
                         line: 22,
                         column: 38,
                        },
                        end: Position {
                         line: 22,
                         column: 39,
                        },
                       },
                      },
                     ),
                     span: Span {
                      start: Position {
                       line: 22,
                       column: 37,
                      },
                      end: Position {
                       line: 22,
                       column: 39,
                      },
                     },
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 22,
                     column: 10,
                    },
                    end: Position {
                     line: 22,
                     column: 39,
                    },
                   },
                  },
                 ),
                 else_: BinaryOperation(
                  BinaryOperation {
                   left: FunctionApplication(
                    FunctionApplication {
                     function: PropertyAccess(
                      PropertyAccess {
                       expression: Identifier(
                        Identifier {
                         id: "builtins",
                         span: Span {
                          start: Position {
                           line: 24,
                           column: 10,
                          },
                          end: Position {
                           line: 24,
                           column: 18,
                          },
                         },
                        },
                       ),
                       attribute_path: [
                        Raw(
                         PartRaw {
                          content: "head",
                          span: Span {
                           start: Position {
                            line: 24,
                            column: 19,
                           },
                           end: Position {
                            line: 24,
                            column: 23,
                           },
                          },
                         },
                        ),
                       ],
                       default: None,
                      },
                     ),
                     arguments: [
                      Identifier(
                       Identifier {
                        id: "l",
                        span: Span {
                         start: Position {
                          line: 24,
                          column: 24,
                         },
                         end: Position {
                          line: 24,
                          column: 25,
                         },
                        },
                       },
                      ),
                     ],
                    },
                   ),
                   operator: Addition,
                   right: BinaryOperation(
                    BinaryOperation {
                     left: Integer(
                      Integer {
                       value: "2",
                       span: Span {
                        start: Position {
                         line: 24,
                         column: 30,
                        },
                        end: Position {
                         line: 24,
                         column: 31,
                        },
                       },
                      },
                     ),
                     operator: Multiplication,
                     right: FunctionApplication(
                      FunctionApplication {
                       function: Identifier(
                        Identifier {
                         id: "bitsToInt",
                         span: Span {
                          start: Position {
                           line: 24,
                           column: 35,
                          },
                          end: Position {
                           line: 24,
                           column: 44,
                          },
                         },
                        },
                       ),
                       arguments: [
                        FunctionApplication(
                         FunctionApplication {
                          function: PropertyAccess(
                           PropertyAccess {
                            expression: Identifier(
                             Identifier {
                              id: "builtins",
                              span: Span {
                               start: Position {
                                line: 24,
                                column: 46,
                               },
                               end: Position {
                                line: 24,
                                column: 54,
                               },
                              },
                             },
                            ),
                            attribute_path: [
                             Raw(
                              PartRaw {
                               content: "tail",
                               span: Span {
                                start: Position {
                                 line: 24,
                                 column: 55,
                                },
                                end: Position {
                                 line: 24,
                                 column: 59,
                                },
                               },
                              },
                             ),
                            ],
                            default: None,
                           },
                          ),
                          arguments: [
                           Identifier(
                            Identifier {
                             id: "l",
                             span: Span {
                              start: Position {
                               line: 24,
                               column: 60,
                              },
                              end: Position {
                               line: 24,
                               column: 61,
                              },
                             },
                            },
                           ),
                          ],
                         },
                        ),
                        Identifier(
                         Identifier {
                          id: "signum",
                          span: Span {
                           start: Position {
                            line: 24,
                            column: 63,
                           },
                           end: Position {
                            line: 24,
                            column: 69,
                           },
                          },
                         },
                        ),
                       ],
                      },
                     ),
                    },
                   ),
                  },
                 ),
                 span: Span {
                  start: Position {
                   line: 21,
                   column: 7,
                  },
                  end: Position {
                   line: 24,
                   column: 71,
                  },
                 },
                },
               ),
               span: Span {
                start: Position {
                 line: 20,
                 column: 20,
                },
                end: Position {
                 line: 24,
                 column: 71,
                },
               },
              },
             ),
             span: Span {
              start: Position {
               line: 20,
               column: 17,
              },
              end: Position {
               line: 24,
               column: 71,
              },
             },
            },
           ),
          },
         ),
         KeyValue(
          BindingKeyValue {
           from: [
            Raw(
             PartRaw {
              content: "xsignum",
              span: Span {
               start: Position {
                line: 26,
                column: 5,
               },
               end: Position {
                line: 26,
                column: 12,
               },
              },
             },
            ),
           ],
           to: IfThenElse(
            IfThenElse {
             predicate: BinaryOperation(
              BinaryOperation {
               left: Identifier(
                Identifier {
                 id: "x",
                 span: Span {
                  start: Position {
                   line: 26,
                   column: 18,
                  },
                  end: Position {
                   line: 26,
                   column: 19,
                  },
                 },
                },
               ),
               operator: LessThan,
               right: Integer(
                Integer {
                 value: "0",
                 span: Span {
                  start: Position {
                   line: 26,
                   column: 22,
                  },
                  end: Position {
                   line: 26,
                   column: 23,
                  },
                 },
                },
               ),
              },
             ),
             then: Integer(
              Integer {
               value: "1",
               span: Span {
                start: Position {
                 line: 26,
                 column: 29,
                },
                end: Position {
                 line: 26,
                 column: 30,
                },
               },
              },
             ),
             else_: Integer(
              Integer {
               value: "0",
               span: Span {
                start: Position {
                 line: 26,
                 column: 36,
                },
                end: Position {
                 line: 26,
                 column: 37,
                },
               },
              },
             ),
             span: Span {
              start: Position {
               line: 26,
               column: 15,
              },
              end: Position {
               line: 26,
               column: 37,
              },
             },
            },
           ),
          },
         ),
         KeyValue(
          BindingKeyValue {
           from: [
            Raw(
             PartRaw {
              content: "ysignum",
              span: Span {
               start: Position {
                line: 27,
                column: 5,
               },
               end: Position {
                line: 27,
                column: 12,
               },
              },
             },
            ),
           ],
           to: IfThenElse(
            IfThenElse {
             predicate: BinaryOperation(
              BinaryOperation {
               left: Identifier(
                Identifier {
                 id: "y",
                 span: Span {
                  start: Position {
                   line: 27,
                   column: 18,
                  },
                  end: Position {
                   line: 27,
                   column: 19,
                  },
                 },
                },
               ),
               operator: LessThan,
               right: Integer(
                Integer {
                 value: "0",
                 span: Span {
                  start: Position {
                   line: 27,
                   column: 22,
                  },
                  end: Position {
                   line: 27,
                   column: 23,
                  },
                 },
                },
               ),
              },
             ),
             then: Integer(
              Integer {
               value: "1",
               span: Span {
                start: Position {
                 line: 27,
                 column: 29,
                },
                end: Position {
                 line: 27,
                 column: 30,
                },
               },
              },
             ),
             else_: Integer(
              Integer {
               value: "0",
               span: Span {
                start: Position {
                 line: 27,
                 column: 36,
                },
                end: Position {
                 line: 27,
                 column: 37,
                },
               },
              },
             ),
             span: Span {
              start: Position {
               line: 27,
               column: 15,
              },
              end: Position {
               line: 27,
               column: 37,
              },
             },
            },
           ),
          },
         ),
         KeyValue(
          BindingKeyValue {
           from: [
            Raw(
             PartRaw {
              content: "zipListsWith'",
              span: Span {
               start: Position {
                line: 28,
                column: 5,
               },
               end: Position {
                line: 28,
                column: 18,
               },
              },
             },
            ),
           ],
           to: Function(
            Function {
             head: Simple(
              FunctionHeadSimple {
               identifier: "fst",
              },
             ),
             body: Function(
              Function {
               head: Simple(
                FunctionHeadSimple {
                 identifier: "snd",
                },
               ),
               body: IfThenElse(
                IfThenElse {
                 predicate: BinaryOperation(
                  BinaryOperation {
                   left: BinaryOperation(
                    BinaryOperation {
                     left: Identifier(
                      Identifier {
                       id: "fst",
                       span: Span {
                        start: Position {
                         line: 29,
                         column: 10,
                        },
                        end: Position {
                         line: 29,
                         column: 13,
                        },
                       },
                      },
                     ),
                     operator: EqualTo,
                     right: List(
                      List {
                       elements: [],
                       span: Span {
                        start: Position {
                         line: 29,
                         column: 15,
                        },
                        end: Position {
                         line: 29,
                         column: 17,
                        },
                       },
                      },
                     ),
                    },
                   ),
                   operator: LogicalAnd,
                   right: BinaryOperation(
                    BinaryOperation {
                     left: Identifier(
                      Identifier {
                       id: "snd",
                       span: Span {
                        start: Position {
                         line: 29,
                         column: 21,
                        },
                        end: Position {
                         line: 29,
                         column: 24,
                        },
                       },
                      },
                     ),
                     operator: EqualTo,
                     right: List(
                      List {
                       elements: [],
                       span: Span {
                        start: Position {
                         line: 29,
                         column: 26,
                        },
                        end: Position {
                         line: 29,
                         column: 28,
                        },
                       },
                      },
                     ),
                    },
                   ),
                  },
                 ),
                 then: List(
                  List {
                   elements: [],
                   span: Span {
                    start: Position {
                     line: 30,
                     column: 9,
                    },
                    end: Position {
                     line: 30,
                     column: 11,
                    },
                   },
                  },
                 ),
                 else_: IfThenElse(
                  IfThenElse {
                   predicate: BinaryOperation(
                    BinaryOperation {
                     left: Identifier(
                      Identifier {
                       id: "fst",
                       span: Span {
                        start: Position {
                         line: 31,
                         column: 15,
                        },
                        end: Position {
                         line: 31,
                         column: 18,
                        },
                       },
                      },
                     ),
                     operator: EqualTo,
                     right: List(
                      List {
                       elements: [],
                       span: Span {
                        start: Position {
                         line: 31,
                         column: 20,
                        },
                        end: Position {
                         line: 31,
                         column: 22,
                        },
                       },
                      },
                     ),
                    },
                   ),
                   then: BinaryOperation(
                    BinaryOperation {
                     left: List(
                      List {
                       elements: [
                        FunctionApplication(
                         FunctionApplication {
                          function: Identifier(
                           Identifier {
                            id: "f",
                            span: Span {
                             start: Position {
                              line: 32,
                              column: 11,
                             },
                             end: Position {
                              line: 32,
                              column: 12,
                             },
                            },
                           },
                          ),
                          arguments: [
                           Identifier(
                            Identifier {
                             id: "xsignum",
                             span: Span {
                              start: Position {
                               line: 32,
                               column: 13,
                              },
                              end: Position {
                               line: 32,
                               column: 20,
                              },
                             },
                            },
                           ),
                           FunctionApplication(
                            FunctionApplication {
                             function: PropertyAccess(
                              PropertyAccess {
                               expression: Identifier(
                                Identifier {
                                 id: "builtins",
                                 span: Span {
                                  start: Position {
                                   line: 32,
                                   column: 34,
                                  },
                                  end: Position {
                                   line: 32,
                                   column: 42,
                                  },
                                 },
                                },
                               ),
                               attribute_path: [
                                Raw(
                                 PartRaw {
                                  content: "head",
                                  span: Span {
                                   start: Position {
                                    line: 32,
                                    column: 43,
                                   },
                                   end: Position {
                                    line: 32,
                                    column: 47,
                                   },
                                  },
                                 },
                                ),
                               ],
                               default: None,
                              },
                             ),
                             arguments: [
                              Identifier(
                               Identifier {
                                id: "snd",
                                span: Span {
                                 start: Position {
                                  line: 32,
                                  column: 48,
                                 },
                                 end: Position {
                                  line: 32,
                                  column: 51,
                                 },
                                },
                               },
                              ),
                             ],
                            },
                           ),
                          ],
                         },
                        ),
                       ],
                       span: Span {
                        start: Position {
                         line: 32,
                         column: 9,
                        },
                        end: Position {
                         line: 32,
                         column: 54,
                        },
                       },
                      },
                     ),
                     operator: Concatenation,
                     right: FunctionApplication(
                      FunctionApplication {
                       function: Identifier(
                        Identifier {
                         id: "zipListsWith'",
                         span: Span {
                          start: Position {
                           line: 32,
                           column: 59,
                          },
                          end: Position {
                           line: 32,
                           column: 72,
                          },
                         },
                        },
                       ),
                       arguments: [
                        List(
                         List {
                          elements: [],
                          span: Span {
                           start: Position {
                            line: 32,
                            column: 73,
                           },
                           end: Position {
                            line: 32,
                            column: 75,
                           },
                          },
                         },
                        ),
                        FunctionApplication(
                         FunctionApplication {
                          function: PropertyAccess(
                           PropertyAccess {
                            expression: Identifier(
                             Identifier {
                              id: "builtins",
                              span: Span {
                               start: Position {
                                line: 32,
                                column: 94,
                               },
                               end: Position {
                                line: 32,
                                column: 102,
                               },
                              },
                             },
                            ),
                            attribute_path: [
                             Raw(
                              PartRaw {
                               content: "tail",
                               span: Span {
                                start: Position {
                                 line: 32,
                                 column: 103,
                                },
                                end: Position {
                                 line: 32,
                                 column: 107,
                                },
                               },
                              },
                             ),
                            ],
                            default: None,
                           },
                          ),
                          arguments: [
                           Identifier(
                            Identifier {
                             id: "snd",
                             span: Span {
                              start: Position {
                               line: 32,
                               column: 108,
                              },
                              end: Position {
                               line: 32,
                               column: 111,
                              },
                             },
                            },
                           ),
                          ],
                         },
                        ),
                       ],
                      },
                     ),
                    },
                   ),
                   else_: IfThenElse(
                    IfThenElse {
                     predicate: BinaryOperation(
                      BinaryOperation {
                       left: Identifier(
                        Identifier {
                         id: "snd",
                         span: Span {
                          start: Position {
                           line: 33,
                           column: 15,
                          },
                          end: Position {
                           line: 33,
                           column: 18,
                          },
                         },
                        },
                       ),
                       operator: EqualTo,
                       right: List(
                        List {
                         elements: [],
                         span: Span {
                          start: Position {
                           line: 33,
                           column: 20,
                          },
                          end: Position {
                           line: 33,
                           column: 22,
                          },
                         },
                        },
                       ),
                      },
                     ),
                     then: BinaryOperation(
                      BinaryOperation {
                       left: List(
                        List {
                         elements: [
                          FunctionApplication(
                           FunctionApplication {
                            function: Identifier(
                             Identifier {
                              id: "f",
                              span: Span {
                               start: Position {
                                line: 34,
                                column: 11,
                               },
                               end: Position {
                                line: 34,
                                column: 12,
                               },
                              },
                             },
                            ),
                            arguments: [
                             FunctionApplication(
                              FunctionApplication {
                               function: PropertyAccess(
                                PropertyAccess {
                                 expression: Identifier(
                                  Identifier {
                                   id: "builtins",
                                   span: Span {
                                    start: Position {
                                     line: 34,
                                     column: 14,
                                    },
                                    end: Position {
                                     line: 34,
                                     column: 22,
                                    },
                                   },
                                  },
                                 ),
                                 attribute_path: [
                                  Raw(
                                   PartRaw {
                                    content: "head",
                                    span: Span {
                                     start: Position {
                                      line: 34,
                                      column: 23,
                                     },
                                     end: Position {
                                      line: 34,
                                      column: 27,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 default: None,
                                },
                               ),
                               arguments: [
                                Identifier(
                                 Identifier {
                                  id: "fst",
                                  span: Span {
                                   start: Position {
                                    line: 34,
                                    column: 28,
                                   },
                                   end: Position {
                                    line: 34,
                                    column: 31,
                                   },
                                  },
                                 },
                                ),
                               ],
                              },
                             ),
                             Identifier(
                              Identifier {
                               id: "ysignum",
                               span: Span {
                                start: Position {
                                 line: 34,
                                 column: 33,
                                },
                                end: Position {
                                 line: 34,
                                 column: 40,
                                },
                               },
                              },
                             ),
                            ],
                           },
                          ),
                         ],
                         span: Span {
                          start: Position {
                           line: 34,
                           column: 9,
                          },
                          end: Position {
                           line: 34,
                           column: 54,
                          },
                         },
                        },
                       ),
                       operator: Concatenation,
                       right: FunctionApplication(
                        FunctionApplication {
                         function: Identifier(
                          Identifier {
                           id: "zipListsWith'",
                           span: Span {
                            start: Position {
                             line: 34,
                             column: 59,
                            },
                            end: Position {
                             line: 34,
                             column: 72,
                            },
                           },
                          },
                         ),
                         arguments: [
                          FunctionApplication(
                           FunctionApplication {
                            function: PropertyAccess(
                             PropertyAccess {
                              expression: Identifier(
                               Identifier {
                                id: "builtins",
                                span: Span {
                                 start: Position {
                                  line: 34,
                                  column: 74,
                                 },
                                 end: Position {
                                  line: 34,
                                  column: 82,
                                 },
                                },
                               },
                              ),
                              attribute_path: [
                               Raw(
                                PartRaw {
                                 content: "tail",
                                 span: Span {
                                  start: Position {
                                   line: 34,
                                   column: 83,
                                  },
                                  end: Position {
                                   line: 34,
                                   column: 87,
                                  },
                                 },
                                },
                               ),
                              ],
                              default: None,
                             },
                            ),
                            arguments: [
                             Identifier(
                              Identifier {
                               id: "fst",
                               span: Span {
                                start: Position {
                                 line: 34,
                                 column: 88,
                                },
                                end: Position {
                                 line: 34,
                                 column: 91,
                                },
                               },
                              },
                             ),
                            ],
                           },
                          ),
                          List(
                           List {
                            elements: [],
                            span: Span {
                             start: Position {
                              line: 34,
                              column: 93,
                             },
                             end: Position {
                              line: 34,
                              column: 95,
                             },
                            },
                           },
                          ),
                         ],
                        },
                       ),
                      },
                     ),
                     else_: BinaryOperation(
                      BinaryOperation {
                       left: List(
                        List {
                         elements: [
                          FunctionApplication(
                           FunctionApplication {
                            function: Identifier(
                             Identifier {
                              id: "f",
                              span: Span {
                               start: Position {
                                line: 36,
                                column: 11,
                               },
                               end: Position {
                                line: 36,
                                column: 12,
                               },
                              },
                             },
                            ),
                            arguments: [
                             FunctionApplication(
                              FunctionApplication {
                               function: PropertyAccess(
                                PropertyAccess {
                                 expression: Identifier(
                                  Identifier {
                                   id: "builtins",
                                   span: Span {
                                    start: Position {
                                     line: 36,
                                     column: 14,
                                    },
                                    end: Position {
                                     line: 36,
                                     column: 22,
                                    },
                                   },
                                  },
                                 ),
                                 attribute_path: [
                                  Raw(
                                   PartRaw {
                                    content: "head",
                                    span: Span {
                                     start: Position {
                                      line: 36,
                                      column: 23,
                                     },
                                     end: Position {
                                      line: 36,
                                      column: 27,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 default: None,
                                },
                               ),
                               arguments: [
                                Identifier(
                                 Identifier {
                                  id: "fst",
                                  span: Span {
                                   start: Position {
                                    line: 36,
                                    column: 28,
                                   },
                                   end: Position {
                                    line: 36,
                                    column: 31,
                                   },
                                  },
                                 },
                                ),
                               ],
                              },
                             ),
                             FunctionApplication(
                              FunctionApplication {
                               function: PropertyAccess(
                                PropertyAccess {
                                 expression: Identifier(
                                  Identifier {
                                   id: "builtins",
                                   span: Span {
                                    start: Position {
                                     line: 36,
                                     column: 34,
                                    },
                                    end: Position {
                                     line: 36,
                                     column: 42,
                                    },
                                   },
                                  },
                                 ),
                                 attribute_path: [
                                  Raw(
                                   PartRaw {
                                    content: "head",
                                    span: Span {
                                     start: Position {
                                      line: 36,
                                      column: 43,
                                     },
                                     end: Position {
                                      line: 36,
                                      column: 47,
                                     },
                                    },
                                   },
                                  ),
                                 ],
                                 default: None,
                                },
                               ),
                               arguments: [
                                Identifier(
                                 Identifier {
                                  id: "snd",
                                  span: Span {
                                   start: Position {
                                    line: 36,
                                    column: 48,
                                   },
                                   end: Position {
                                    line: 36,
                                    column: 51,
                                   },
                                  },
                                 },
                                ),
                               ],
                              },
                             ),
                            ],
                           },
                          ),
                         ],
                         span: Span {
                          start: Position {
                           line: 36,
                           column: 9,
                          },
                          end: Position {
                           line: 36,
                           column: 54,
                          },
                         },
                        },
                       ),
                       operator: Concatenation,
                       right: FunctionApplication(
                        FunctionApplication {
                         function: Identifier(
                          Identifier {
                           id: "zipListsWith'",
                           span: Span {
                            start: Position {
                             line: 36,
                             column: 59,
                            },
                            end: Position {
                             line: 36,
                             column: 72,
                            },
                           },
                          },
                         ),
                         arguments: [
                          FunctionApplication(
                           FunctionApplication {
                            function: PropertyAccess(
                             PropertyAccess {
                              expression: Identifier(
                               Identifier {
                                id: "builtins",
                                span: Span {
                                 start: Position {
                                  line: 36,
                                  column: 74,
                                 },
                                 end: Position {
                                  line: 36,
                                  column: 82,
                                 },
                                },
                               },
                              ),
                              attribute_path: [
                               Raw(
                                PartRaw {
                                 content: "tail",
                                 span: Span {
                                  start: Position {
                                   line: 36,
                                   column: 83,
                                  },
                                  end: Position {
                                   line: 36,
                                   column: 87,
                                  },
                                 },
                                },
                               ),
                              ],
                              default: None,
                             },
                            ),
                            arguments: [
                             Identifier(
                              Identifier {
                               id: "fst",
                               span: Span {
                                start: Position {
                                 line: 36,
                                 column: 88,
                                },
                                end: Position {
                                 line: 36,
                                 column: 91,
                                },
                               },
                              },
                             ),
                            ],
                           },
                          ),
                          FunctionApplication(
                           FunctionApplication {
                            function: PropertyAccess(
                             PropertyAccess {
                              expression: Identifier(
                               Identifier {
                                id: "builtins",
                                span: Span {
                                 start: Position {
                                  line: 36,
                                  column: 94,
                                 },
                                 end: Position {
                                  line: 36,
                                  column: 102,
                                 },
                                },
                               },
                              ),
                              attribute_path: [
                               Raw(
                                PartRaw {
                                 content: "tail",
                                 span: Span {
                                  start: Position {
                                   line: 36,
                                   column: 103,
                                  },
                                  end: Position {
                                   line: 36,
                                   column: 107,
                                  },
                                 },
                                },
                               ),
                              ],
                              default: None,
                             },
                            ),
                            arguments: [
                             Identifier(
                              Identifier {
                               id: "snd",
                               span: Span {
                                start: Position {
                                 line: 36,
                                 column: 108,
                                },
                                end: Position {
                                 line: 36,
                                 column: 111,
                                },
                               },
                              },
                             ),
                            ],
                           },
                          ),
                         ],
                        },
                       ),
                      },
                     ),
                     span: Span {
                      start: Position {
                       line: 33,
                       column: 12,
                      },
                      end: Position {
                       line: 36,
                       column: 113,
                      },
                     },
                    },
                   ),
                   span: Span {
                    start: Position {
                     line: 31,
                     column: 12,
                    },
                    end: Position {
                     line: 36,
                     column: 113,
                    },
                   },
                  },
                 ),
                 span: Span {
                  start: Position {
                   line: 29,
                   column: 7,
                  },
                  end: Position {
                   line: 36,
                   column: 113,
                  },
                 },
                },
               ),
               span: Span {
                start: Position {
                 line: 28,
                 column: 26,
                },
                end: Position {
                 line: 36,
                 column: 113,
                },
               },
              },
             ),
             span: Span {
              start: Position {
               line: 28,
               column: 21,
              },
              end: Position {
               line: 36,
               column: 113,
              },
             },
            },
           ),
          },
         ),
        ],
        target: Assert(
         Assert {
          expression: BinaryOperation(
           BinaryOperation {
            left: FunctionApplication(
             FunctionApplication {
              function: PropertyAccess(
               PropertyAccess {
                expression: Identifier(
                 Identifier {
                  id: "builtins",
                  span: Span {
                   start: Position {
                    line: 38,
                    column: 13,
                   },
                   end: Position {
                    line: 38,
                    column: 21,
                   },
                  },
                 },
                ),
                attribute_path: [
                 Raw(
                  PartRaw {
                   content: "isInt",
                   span: Span {
                    start: Position {
                     line: 38,
                     column: 22,
                    },
                    end: Position {
                     line: 38,
                     column: 27,
                    },
                   },
                  },
                 ),
                ],
                default: None,
               },
              ),
              arguments: [
               Identifier(
                Identifier {
                 id: "x",
                 span: Span {
                  start: Position {
                   line: 38,
                   column: 28,
                  },
                  end: Position {
                   line: 38,
                   column: 29,
                  },
                 },
                },
               ),
              ],
             },
            ),
            operator: LogicalAnd,
            right: FunctionApplication(
             FunctionApplication {
              function: PropertyAccess(
               PropertyAccess {
                expression: Identifier(
                 Identifier {
                  id: "builtins",
                  span: Span {
                   start: Position {
                    line: 38,
                    column: 35,
                   },
                   end: Position {
                    line: 38,
                    column: 43,
                   },
                  },
                 },
                ),
                attribute_path: [
                 Raw(
                  PartRaw {
                   content: "isInt",
                   span: Span {
                    start: Position {
                     line: 38,
                     column: 44,
                    },
                    end: Position {
                     line: 38,
                     column: 49,
                    },
                   },
                  },
                 ),
                ],
                default: None,
               },
              ),
              arguments: [
               Identifier(
                Identifier {
                 id: "y",
                 span: Span {
                  start: Position {
                   line: 38,
                   column: 50,
                  },
                  end: Position {
                   line: 38,
                   column: 51,
                  },
                 },
                },
               ),
              ],
             },
            ),
           },
          ),
          target: FunctionApplication(
           FunctionApplication {
            function: Identifier(
             Identifier {
              id: "bitsToInt",
              span: Span {
               start: Position {
                line: 39,
                column: 5,
               },
               end: Position {
                line: 39,
                column: 14,
               },
              },
             },
            ),
            arguments: [
             FunctionApplication(
              FunctionApplication {
               function: Identifier(
                Identifier {
                 id: "zipListsWith'",
                 span: Span {
                  start: Position {
                   line: 39,
                   column: 16,
                  },
                  end: Position {
                   line: 39,
                   column: 29,
                  },
                 },
                },
               ),
               arguments: [
                FunctionApplication(
                 FunctionApplication {
                  function: Identifier(
                   Identifier {
                    id: "intToBits",
                    span: Span {
                     start: Position {
                      line: 39,
                      column: 31,
                     },
                     end: Position {
                      line: 39,
                      column: 40,
                     },
                    },
                   },
                  ),
                  arguments: [
                   Identifier(
                    Identifier {
                     id: "x",
                     span: Span {
                      start: Position {
                       line: 39,
                       column: 41,
                      },
                      end: Position {
                       line: 39,
                       column: 42,
                      },
                     },
                    },
                   ),
                  ],
                 },
                ),
                FunctionApplication(
                 FunctionApplication {
                  function: Identifier(
                   Identifier {
                    id: "intToBits",
                    span: Span {
                     start: Position {
                      line: 39,
                      column: 45,
                     },
                     end: Position {
                      line: 39,
                      column: 54,
                     },
                    },
                   },
                  ),
                  arguments: [
                   Identifier(
                    Identifier {
                     id: "y",
                     span: Span {
                      start: Position {
                       line: 39,
                       column: 55,
                      },
                      end: Position {
                       line: 39,
                       column: 56,
                      },
                     },
                    },
                   ),
                  ],
                 },
                ),
               ],
              },
             ),
             FunctionApplication(
              FunctionApplication {
               function: Identifier(
                Identifier {
                 id: "f",
                 span: Span {
                  start: Position {
                   line: 39,
                   column: 60,
                  },
                  end: Position {
                   line: 39,
                   column: 61,
                  },
                 },
                },
               ),
               arguments: [
                Identifier(
                 Identifier {
                  id: "xsignum",
                  span: Span {
                   start: Position {
                    line: 39,
                    column: 62,
                   },
                   end: Position {
                    line: 39,
                    column: 69,
                   },
                  },
                 },
                ),
                Identifier(
                 Identifier {
                  id: "ysignum",
                  span: Span {
                   start: Position {
                    line: 39,
                    column: 70,
                   },
                   end: Position {
                    line: 39,
                    column: 77,
                   },
                  },
                 },
                ),
               ],
              },
             ),
            ],
           },
          ),
          span: Span {
           start: Position {
            line: 38,
            column: 5,
           },
           end: Position {
            line: 39,
            column: 78,
           },
          },
         },
        ),
        span: Span {
         start: Position {
          line: 6,
          column: 3,
         },
         end: Position {
          line: 39,
          column: 78,
         },
        },
       },
      ),
      span: Span {
       start: Position {
        line: 5,
        column: 7,
       },
       end: Position {
        line: 39,
        column: 78,
       },
      },
     },
    ),
    span: Span {
     start: Position {
      line: 5,
      column: 4,
     },
     end: Position {
      line: 39,
      column: 78,
     },
    },
   },
  ),
  span: Span {
   start: Position {
    line: 5,
    column: 1,
   },
   end: Position {
    line: 39,
    column: 78,
   },
  },
 },
)