---
source: full-moon/tests/pass_cases.rs
expression: ast.nodes()
---
stmts:
  - - TypeDeclaration:
        type_token:
          leading_trivia:
            - start_position:
                bytes: 0
                line: 1
                character: 1
              end_position:
                bytes: 9
                line: 1
                character: 10
              token_type:
                type: SingleLineComment
                comment: "!strict"
            - start_position:
                bytes: 9
                line: 1
                character: 10
              end_position:
                bytes: 10
                line: 1
                character: 10
              token_type:
                type: Whitespace
                characters: "\n"
          token:
            start_position:
              bytes: 10
              line: 2
              character: 1
            end_position:
              bytes: 14
              line: 2
              character: 5
            token_type:
              type: Identifier
              identifier: type
          trailing_trivia:
            - start_position:
                bytes: 14
                line: 2
                character: 5
              end_position:
                bytes: 15
                line: 2
                character: 6
              token_type:
                type: Whitespace
                characters: " "
        base:
          leading_trivia: []
          token:
            start_position:
              bytes: 15
              line: 2
              character: 6
            end_position:
              bytes: 18
              line: 2
              character: 9
            token_type:
              type: Identifier
              identifier: Foo
          trailing_trivia: []
        generics:
          arrows:
            tokens:
              - leading_trivia: []
                token:
                  start_position:
                    bytes: 18
                    line: 2
                    character: 9
                  end_position:
                    bytes: 19
                    line: 2
                    character: 10
                  token_type:
                    type: Symbol
                    symbol: "<"
                trailing_trivia: []
              - leading_trivia: []
                token:
                  start_position:
                    bytes: 29
                    line: 2
                    character: 20
                  end_position:
                    bytes: 30
                    line: 2
                    character: 21
                  token_type:
                    type: Symbol
                    symbol: ">"
                trailing_trivia:
                  - start_position:
                      bytes: 30
                      line: 2
                      character: 21
                    end_position:
                      bytes: 31
                      line: 2
                      character: 22
                    token_type:
                      type: Whitespace
                      characters: " "
          generics:
            pairs:
              - Punctuated:
                  - parameter:
                      Variadic:
                        name:
                          leading_trivia: []
                          token:
                            start_position:
                              bytes: 19
                              line: 2
                              character: 10
                            end_position:
                              bytes: 20
                              line: 2
                              character: 11
                            token_type:
                              type: Identifier
                              identifier: T
                          trailing_trivia: []
                        ellipsis:
                          leading_trivia: []
                          token:
                            start_position:
                              bytes: 20
                              line: 2
                              character: 11
                            end_position:
                              bytes: 23
                              line: 2
                              character: 14
                            token_type:
                              type: Symbol
                              symbol: "..."
                          trailing_trivia: []
                    default: ~
                  - leading_trivia: []
                    token:
                      start_position:
                        bytes: 23
                        line: 2
                        character: 14
                      end_position:
                        bytes: 24
                        line: 2
                        character: 15
                      token_type:
                        type: Symbol
                        symbol: ","
                    trailing_trivia:
                      - start_position:
                          bytes: 24
                          line: 2
                          character: 15
                        end_position:
                          bytes: 25
                          line: 2
                          character: 16
                        token_type:
                          type: Whitespace
                          characters: " "
              - End:
                  parameter:
                    Variadic:
                      name:
                        leading_trivia: []
                        token:
                          start_position:
                            bytes: 25
                            line: 2
                            character: 16
                          end_position:
                            bytes: 26
                            line: 2
                            character: 17
                          token_type:
                            type: Identifier
                            identifier: U
                        trailing_trivia: []
                      ellipsis:
                        leading_trivia: []
                        token:
                          start_position:
                            bytes: 26
                            line: 2
                            character: 17
                          end_position:
                            bytes: 29
                            line: 2
                            character: 20
                          token_type:
                            type: Symbol
                            symbol: "..."
                        trailing_trivia: []
                  default: ~
        equal_token:
          leading_trivia: []
          token:
            start_position:
              bytes: 31
              line: 2
              character: 22
            end_position:
              bytes: 32
              line: 2
              character: 23
            token_type:
              type: Symbol
              symbol: "="
          trailing_trivia:
            - start_position:
                bytes: 32
                line: 2
                character: 23
              end_position:
                bytes: 33
                line: 2
                character: 24
              token_type:
                type: Whitespace
                characters: " "
        declare_as:
          Callback:
            generics: ~
            parentheses:
              tokens:
                - leading_trivia: []
                  token:
                    start_position:
                      bytes: 33
                      line: 2
                      character: 24
                    end_position:
                      bytes: 34
                      line: 2
                      character: 25
                    token_type:
                      type: Symbol
                      symbol: (
                  trailing_trivia: []
                - leading_trivia: []
                  token:
                    start_position:
                      bytes: 38
                      line: 2
                      character: 29
                    end_position:
                      bytes: 39
                      line: 2
                      character: 30
                    token_type:
                      type: Symbol
                      symbol: )
                  trailing_trivia:
                    - start_position:
                        bytes: 39
                        line: 2
                        character: 30
                      end_position:
                        bytes: 40
                        line: 2
                        character: 31
                      token_type:
                        type: Whitespace
                        characters: " "
            arguments:
              pairs:
                - End:
                    name: ~
                    type_info:
                      GenericPack:
                        name:
                          leading_trivia: []
                          token:
                            start_position:
                              bytes: 34
                              line: 2
                              character: 25
                            end_position:
                              bytes: 35
                              line: 2
                              character: 26
                            token_type:
                              type: Identifier
                              identifier: U
                          trailing_trivia: []
                        ellipsis:
                          leading_trivia: []
                          token:
                            start_position:
                              bytes: 35
                              line: 2
                              character: 26
                            end_position:
                              bytes: 38
                              line: 2
                              character: 29
                            token_type:
                              type: Symbol
                              symbol: "..."
                          trailing_trivia: []
            arrow:
              leading_trivia: []
              token:
                start_position:
                  bytes: 40
                  line: 2
                  character: 31
                end_position:
                  bytes: 42
                  line: 2
                  character: 33
                token_type:
                  type: Symbol
                  symbol: "->"
              trailing_trivia:
                - start_position:
                    bytes: 42
                    line: 2
                    character: 33
                  end_position:
                    bytes: 43
                    line: 2
                    character: 34
                  token_type:
                    type: Whitespace
                    characters: " "
            return_type:
              GenericPack:
                name:
                  leading_trivia: []
                  token:
                    start_position:
                      bytes: 43
                      line: 2
                      character: 34
                    end_position:
                      bytes: 44
                      line: 2
                      character: 35
                    token_type:
                      type: Identifier
                      identifier: T
                  trailing_trivia: []
                ellipsis:
                  leading_trivia: []
                  token:
                    start_position:
                      bytes: 44
                      line: 2
                      character: 35
                    end_position:
                      bytes: 47
                      line: 2
                      character: 38
                    token_type:
                      type: Symbol
                      symbol: "..."
                  trailing_trivia:
                    - start_position:
                        bytes: 47
                        line: 2
                        character: 38
                      end_position:
                        bytes: 48
                        line: 2
                        character: 38
                      token_type:
                        type: Whitespace
                        characters: "\n"
    - ~
  - - TypeDeclaration:
        type_token:
          leading_trivia: []
          token:
            start_position:
              bytes: 48
              line: 3
              character: 1
            end_position:
              bytes: 52
              line: 3
              character: 5
            token_type:
              type: Identifier
              identifier: type
          trailing_trivia:
            - start_position:
                bytes: 52
                line: 3
                character: 5
              end_position:
                bytes: 53
                line: 3
                character: 6
              token_type:
                type: Whitespace
                characters: " "
        base:
          leading_trivia: []
          token:
            start_position:
              bytes: 53
              line: 3
              character: 6
            end_position:
              bytes: 56
              line: 3
              character: 9
            token_type:
              type: Identifier
              identifier: Bar
          trailing_trivia: []
        generics:
          arrows:
            tokens:
              - leading_trivia: []
                token:
                  start_position:
                    bytes: 56
                    line: 3
                    character: 9
                  end_position:
                    bytes: 57
                    line: 3
                    character: 10
                  token_type:
                    type: Symbol
                    symbol: "<"
                trailing_trivia: []
              - leading_trivia: []
                token:
                  start_position:
                    bytes: 64
                    line: 3
                    character: 17
                  end_position:
                    bytes: 65
                    line: 3
                    character: 18
                  token_type:
                    type: Symbol
                    symbol: ">"
                trailing_trivia:
                  - start_position:
                      bytes: 65
                      line: 3
                      character: 18
                    end_position:
                      bytes: 66
                      line: 3
                      character: 19
                    token_type:
                      type: Whitespace
                      characters: " "
          generics:
            pairs:
              - Punctuated:
                  - parameter:
                      Name:
                        leading_trivia: []
                        token:
                          start_position:
                            bytes: 57
                            line: 3
                            character: 10
                          end_position:
                            bytes: 58
                            line: 3
                            character: 11
                          token_type:
                            type: Identifier
                            identifier: U
                        trailing_trivia: []
                    default: ~
                  - leading_trivia: []
                    token:
                      start_position:
                        bytes: 58
                        line: 3
                        character: 11
                      end_position:
                        bytes: 59
                        line: 3
                        character: 12
                      token_type:
                        type: Symbol
                        symbol: ","
                    trailing_trivia:
                      - start_position:
                          bytes: 59
                          line: 3
                          character: 12
                        end_position:
                          bytes: 60
                          line: 3
                          character: 13
                        token_type:
                          type: Whitespace
                          characters: " "
              - End:
                  parameter:
                    Variadic:
                      name:
                        leading_trivia: []
                        token:
                          start_position:
                            bytes: 60
                            line: 3
                            character: 13
                          end_position:
                            bytes: 61
                            line: 3
                            character: 14
                          token_type:
                            type: Identifier
                            identifier: T
                        trailing_trivia: []
                      ellipsis:
                        leading_trivia: []
                        token:
                          start_position:
                            bytes: 61
                            line: 3
                            character: 14
                          end_position:
                            bytes: 64
                            line: 3
                            character: 17
                          token_type:
                            type: Symbol
                            symbol: "..."
                        trailing_trivia: []
                  default: ~
        equal_token:
          leading_trivia: []
          token:
            start_position:
              bytes: 66
              line: 3
              character: 19
            end_position:
              bytes: 67
              line: 3
              character: 20
            token_type:
              type: Symbol
              symbol: "="
          trailing_trivia:
            - start_position:
                bytes: 67
                line: 3
                character: 20
              end_position:
                bytes: 68
                line: 3
                character: 21
              token_type:
                type: Whitespace
                characters: " "
        declare_as:
          Basic:
            leading_trivia: []
            token:
              start_position:
                bytes: 68
                line: 3
                character: 21
              end_position:
                bytes: 71
                line: 3
                character: 24
              token_type:
                type: Symbol
                symbol: nil
            trailing_trivia:
              - start_position:
                  bytes: 71
                  line: 3
                  character: 24
                end_position:
                  bytes: 72
                  line: 3
                  character: 24
                token_type:
                  type: Whitespace
                  characters: "\n"
    - ~
  - - TypeDeclaration:
        type_token:
          leading_trivia: []
          token:
            start_position:
              bytes: 72
              line: 4
              character: 1
            end_position:
              bytes: 76
              line: 4
              character: 5
            token_type:
              type: Identifier
              identifier: type
          trailing_trivia:
            - start_position:
                bytes: 76
                line: 4
                character: 5
              end_position:
                bytes: 77
                line: 4
                character: 6
              token_type:
                type: Whitespace
                characters: " "
        base:
          leading_trivia: []
          token:
            start_position:
              bytes: 77
              line: 4
              character: 6
            end_position:
              bytes: 85
              line: 4
              character: 14
            token_type:
              type: Identifier
              identifier: Function
          trailing_trivia: []
        generics:
          arrows:
            tokens:
              - leading_trivia: []
                token:
                  start_position:
                    bytes: 85
                    line: 4
                    character: 14
                  end_position:
                    bytes: 86
                    line: 4
                    character: 15
                  token_type:
                    type: Symbol
                    symbol: "<"
                trailing_trivia: []
              - leading_trivia: []
                token:
                  start_position:
                    bytes: 118
                    line: 4
                    character: 47
                  end_position:
                    bytes: 119
                    line: 4
                    character: 48
                  token_type:
                    type: Symbol
                    symbol: ">"
                trailing_trivia:
                  - start_position:
                      bytes: 119
                      line: 4
                      character: 48
                    end_position:
                      bytes: 120
                      line: 4
                      character: 49
                    token_type:
                      type: Whitespace
                      characters: " "
          generics:
            pairs:
              - Punctuated:
                  - parameter:
                      Variadic:
                        name:
                          leading_trivia: []
                          token:
                            start_position:
                              bytes: 86
                              line: 4
                              character: 15
                            end_position:
                              bytes: 90
                              line: 4
                              character: 19
                            token_type:
                              type: Identifier
                              identifier: Args
                          trailing_trivia: []
                        ellipsis:
                          leading_trivia: []
                          token:
                            start_position:
                              bytes: 90
                              line: 4
                              character: 19
                            end_position:
                              bytes: 93
                              line: 4
                              character: 22
                            token_type:
                              type: Symbol
                              symbol: "..."
                          trailing_trivia:
                            - start_position:
                                bytes: 93
                                line: 4
                                character: 22
                              end_position:
                                bytes: 94
                                line: 4
                                character: 23
                              token_type:
                                type: Whitespace
                                characters: " "
                    default:
                      - leading_trivia: []
                        token:
                          start_position:
                            bytes: 94
                            line: 4
                            character: 23
                          end_position:
                            bytes: 95
                            line: 4
                            character: 24
                          token_type:
                            type: Symbol
                            symbol: "="
                        trailing_trivia:
                          - start_position:
                              bytes: 95
                              line: 4
                              character: 24
                            end_position:
                              bytes: 96
                              line: 4
                              character: 25
                            token_type:
                              type: Whitespace
                              characters: " "
                      - Variadic:
                          ellipsis:
                            leading_trivia: []
                            token:
                              start_position:
                                bytes: 96
                                line: 4
                                character: 25
                              end_position:
                                bytes: 99
                                line: 4
                                character: 28
                              token_type:
                                type: Symbol
                                symbol: "..."
                            trailing_trivia: []
                          type_info:
                            Basic:
                              leading_trivia: []
                              token:
                                start_position:
                                  bytes: 99
                                  line: 4
                                  character: 28
                                end_position:
                                  bytes: 102
                                  line: 4
                                  character: 31
                                token_type:
                                  type: Identifier
                                  identifier: any
                              trailing_trivia: []
                  - leading_trivia: []
                    token:
                      start_position:
                        bytes: 102
                        line: 4
                        character: 31
                      end_position:
                        bytes: 103
                        line: 4
                        character: 32
                      token_type:
                        type: Symbol
                        symbol: ","
                    trailing_trivia:
                      - start_position:
                          bytes: 103
                          line: 4
                          character: 32
                        end_position:
                          bytes: 104
                          line: 4
                          character: 33
                        token_type:
                          type: Whitespace
                          characters: " "
              - End:
                  parameter:
                    Variadic:
                      name:
                        leading_trivia: []
                        token:
                          start_position:
                            bytes: 104
                            line: 4
                            character: 33
                          end_position:
                            bytes: 110
                            line: 4
                            character: 39
                          token_type:
                            type: Identifier
                            identifier: Return
                        trailing_trivia: []
                      ellipsis:
                        leading_trivia: []
                        token:
                          start_position:
                            bytes: 110
                            line: 4
                            character: 39
                          end_position:
                            bytes: 113
                            line: 4
                            character: 42
                          token_type:
                            type: Symbol
                            symbol: "..."
                        trailing_trivia:
                          - start_position:
                              bytes: 113
                              line: 4
                              character: 42
                            end_position:
                              bytes: 114
                              line: 4
                              character: 43
                            token_type:
                              type: Whitespace
                              characters: " "
                  default:
                    - leading_trivia: []
                      token:
                        start_position:
                          bytes: 114
                          line: 4
                          character: 43
                        end_position:
                          bytes: 115
                          line: 4
                          character: 44
                        token_type:
                          type: Symbol
                          symbol: "="
                      trailing_trivia:
                        - start_position:
                            bytes: 115
                            line: 4
                            character: 44
                          end_position:
                            bytes: 116
                            line: 4
                            character: 45
                          token_type:
                            type: Whitespace
                            characters: " "
                    - Tuple:
                        parentheses:
                          tokens:
                            - leading_trivia: []
                              token:
                                start_position:
                                  bytes: 116
                                  line: 4
                                  character: 45
                                end_position:
                                  bytes: 117
                                  line: 4
                                  character: 46
                                token_type:
                                  type: Symbol
                                  symbol: (
                              trailing_trivia: []
                            - leading_trivia: []
                              token:
                                start_position:
                                  bytes: 117
                                  line: 4
                                  character: 46
                                end_position:
                                  bytes: 118
                                  line: 4
                                  character: 47
                                token_type:
                                  type: Symbol
                                  symbol: )
                              trailing_trivia: []
                        types:
                          pairs: []
        equal_token:
          leading_trivia: []
          token:
            start_position:
              bytes: 120
              line: 4
              character: 49
            end_position:
              bytes: 121
              line: 4
              character: 50
            token_type:
              type: Symbol
              symbol: "="
          trailing_trivia:
            - start_position:
                bytes: 121
                line: 4
                character: 50
              end_position:
                bytes: 122
                line: 4
                character: 51
              token_type:
                type: Whitespace
                characters: " "
        declare_as:
          Callback:
            generics: ~
            parentheses:
              tokens:
                - leading_trivia: []
                  token:
                    start_position:
                      bytes: 122
                      line: 4
                      character: 51
                    end_position:
                      bytes: 123
                      line: 4
                      character: 52
                    token_type:
                      type: Symbol
                      symbol: (
                  trailing_trivia: []
                - leading_trivia: []
                  token:
                    start_position:
                      bytes: 130
                      line: 4
                      character: 59
                    end_position:
                      bytes: 131
                      line: 4
                      character: 60
                    token_type:
                      type: Symbol
                      symbol: )
                  trailing_trivia:
                    - start_position:
                        bytes: 131
                        line: 4
                        character: 60
                      end_position:
                        bytes: 132
                        line: 4
                        character: 61
                      token_type:
                        type: Whitespace
                        characters: " "
            arguments:
              pairs:
                - End:
                    name: ~
                    type_info:
                      GenericPack:
                        name:
                          leading_trivia: []
                          token:
                            start_position:
                              bytes: 123
                              line: 4
                              character: 52
                            end_position:
                              bytes: 127
                              line: 4
                              character: 56
                            token_type:
                              type: Identifier
                              identifier: Args
                          trailing_trivia: []
                        ellipsis:
                          leading_trivia: []
                          token:
                            start_position:
                              bytes: 127
                              line: 4
                              character: 56
                            end_position:
                              bytes: 130
                              line: 4
                              character: 59
                            token_type:
                              type: Symbol
                              symbol: "..."
                          trailing_trivia: []
            arrow:
              leading_trivia: []
              token:
                start_position:
                  bytes: 132
                  line: 4
                  character: 61
                end_position:
                  bytes: 134
                  line: 4
                  character: 63
                token_type:
                  type: Symbol
                  symbol: "->"
              trailing_trivia:
                - start_position:
                    bytes: 134
                    line: 4
                    character: 63
                  end_position:
                    bytes: 135
                    line: 4
                    character: 64
                  token_type:
                    type: Whitespace
                    characters: " "
            return_type:
              GenericPack:
                name:
                  leading_trivia: []
                  token:
                    start_position:
                      bytes: 135
                      line: 4
                      character: 64
                    end_position:
                      bytes: 141
                      line: 4
                      character: 70
                    token_type:
                      type: Identifier
                      identifier: Return
                  trailing_trivia: []
                ellipsis:
                  leading_trivia: []
                  token:
                    start_position:
                      bytes: 141
                      line: 4
                      character: 70
                    end_position:
                      bytes: 144
                      line: 4
                      character: 73
                    token_type:
                      type: Symbol
                      symbol: "..."
                  trailing_trivia:
                    - start_position:
                        bytes: 144
                        line: 4
                        character: 73
                      end_position:
                        bytes: 145
                        line: 4
                        character: 73
                      token_type:
                        type: Whitespace
                        characters: "\n"
    - ~
  - - TypeDeclaration:
        type_token:
          leading_trivia: []
          token:
            start_position:
              bytes: 145
              line: 5
              character: 1
            end_position:
              bytes: 149
              line: 5
              character: 5
            token_type:
              type: Identifier
              identifier: type
          trailing_trivia:
            - start_position:
                bytes: 149
                line: 5
                character: 5
              end_position:
                bytes: 150
                line: 5
                character: 6
              token_type:
                type: Whitespace
                characters: " "
        base:
          leading_trivia: []
          token:
            start_position:
              bytes: 150
              line: 5
              character: 6
            end_position:
              bytes: 153
              line: 5
              character: 9
            token_type:
              type: Identifier
              identifier: Baz
          trailing_trivia: []
        generics:
          arrows:
            tokens:
              - leading_trivia: []
                token:
                  start_position:
                    bytes: 153
                    line: 5
                    character: 9
                  end_position:
                    bytes: 154
                    line: 5
                    character: 10
                  token_type:
                    type: Symbol
                    symbol: "<"
                trailing_trivia: []
              - leading_trivia: []
                token:
                  start_position:
                    bytes: 189
                    line: 5
                    character: 45
                  end_position:
                    bytes: 190
                    line: 5
                    character: 46
                  token_type:
                    type: Symbol
                    symbol: ">"
                trailing_trivia:
                  - start_position:
                      bytes: 190
                      line: 5
                      character: 46
                    end_position:
                      bytes: 191
                      line: 5
                      character: 47
                    token_type:
                      type: Whitespace
                      characters: " "
          generics:
            pairs:
              - Punctuated:
                  - parameter:
                      Name:
                        leading_trivia: []
                        token:
                          start_position:
                            bytes: 154
                            line: 5
                            character: 10
                          end_position:
                            bytes: 155
                            line: 5
                            character: 11
                          token_type:
                            type: Identifier
                            identifier: U
                        trailing_trivia:
                          - start_position:
                              bytes: 155
                              line: 5
                              character: 11
                            end_position:
                              bytes: 156
                              line: 5
                              character: 12
                            token_type:
                              type: Whitespace
                              characters: " "
                    default:
                      - leading_trivia: []
                        token:
                          start_position:
                            bytes: 156
                            line: 5
                            character: 12
                          end_position:
                            bytes: 157
                            line: 5
                            character: 13
                          token_type:
                            type: Symbol
                            symbol: "="
                        trailing_trivia:
                          - start_position:
                              bytes: 157
                              line: 5
                              character: 13
                            end_position:
                              bytes: 158
                              line: 5
                              character: 14
                            token_type:
                              type: Whitespace
                              characters: " "
                      - Basic:
                          leading_trivia: []
                          token:
                            start_position:
                              bytes: 158
                              line: 5
                              character: 14
                            end_position:
                              bytes: 164
                              line: 5
                              character: 20
                            token_type:
                              type: Identifier
                              identifier: string
                          trailing_trivia: []
                  - leading_trivia: []
                    token:
                      start_position:
                        bytes: 164
                        line: 5
                        character: 20
                      end_position:
                        bytes: 165
                        line: 5
                        character: 21
                      token_type:
                        type: Symbol
                        symbol: ","
                    trailing_trivia:
                      - start_position:
                          bytes: 165
                          line: 5
                          character: 21
                        end_position:
                          bytes: 166
                          line: 5
                          character: 22
                        token_type:
                          type: Whitespace
                          characters: " "
              - End:
                  parameter:
                    Variadic:
                      name:
                        leading_trivia: []
                        token:
                          start_position:
                            bytes: 166
                            line: 5
                            character: 22
                          end_position:
                            bytes: 167
                            line: 5
                            character: 23
                          token_type:
                            type: Identifier
                            identifier: T
                        trailing_trivia: []
                      ellipsis:
                        leading_trivia: []
                        token:
                          start_position:
                            bytes: 167
                            line: 5
                            character: 23
                          end_position:
                            bytes: 170
                            line: 5
                            character: 26
                          token_type:
                            type: Symbol
                            symbol: "..."
                        trailing_trivia:
                          - start_position:
                              bytes: 170
                              line: 5
                              character: 26
                            end_position:
                              bytes: 171
                              line: 5
                              character: 27
                            token_type:
                              type: Whitespace
                              characters: " "
                  default:
                    - leading_trivia: []
                      token:
                        start_position:
                          bytes: 171
                          line: 5
                          character: 27
                        end_position:
                          bytes: 172
                          line: 5
                          character: 28
                        token_type:
                          type: Symbol
                          symbol: "="
                      trailing_trivia:
                        - start_position:
                            bytes: 172
                            line: 5
                            character: 28
                          end_position:
                            bytes: 173
                            line: 5
                            character: 29
                          token_type:
                            type: Whitespace
                            characters: " "
                    - Tuple:
                        parentheses:
                          tokens:
                            - leading_trivia: []
                              token:
                                start_position:
                                  bytes: 173
                                  line: 5
                                  character: 29
                                end_position:
                                  bytes: 174
                                  line: 5
                                  character: 30
                                token_type:
                                  type: Symbol
                                  symbol: (
                              trailing_trivia: []
                            - leading_trivia: []
                              token:
                                start_position:
                                  bytes: 188
                                  line: 5
                                  character: 44
                                end_position:
                                  bytes: 189
                                  line: 5
                                  character: 45
                                token_type:
                                  type: Symbol
                                  symbol: )
                              trailing_trivia: []
                        types:
                          pairs:
                            - Punctuated:
                                - Basic:
                                    leading_trivia: []
                                    token:
                                      start_position:
                                        bytes: 174
                                        line: 5
                                        character: 30
                                      end_position:
                                        bytes: 180
                                        line: 5
                                        character: 36
                                      token_type:
                                        type: Identifier
                                        identifier: string
                                    trailing_trivia: []
                                - leading_trivia: []
                                  token:
                                    start_position:
                                      bytes: 180
                                      line: 5
                                      character: 36
                                    end_position:
                                      bytes: 181
                                      line: 5
                                      character: 37
                                    token_type:
                                      type: Symbol
                                      symbol: ","
                                  trailing_trivia:
                                    - start_position:
                                        bytes: 181
                                        line: 5
                                        character: 37
                                      end_position:
                                        bytes: 182
                                        line: 5
                                        character: 38
                                      token_type:
                                        type: Whitespace
                                        characters: " "
                            - End:
                                Basic:
                                  leading_trivia: []
                                  token:
                                    start_position:
                                      bytes: 182
                                      line: 5
                                      character: 38
                                    end_position:
                                      bytes: 188
                                      line: 5
                                      character: 44
                                    token_type:
                                      type: Identifier
                                      identifier: number
                                  trailing_trivia: []
        equal_token:
          leading_trivia: []
          token:
            start_position:
              bytes: 191
              line: 5
              character: 47
            end_position:
              bytes: 192
              line: 5
              character: 48
            token_type:
              type: Symbol
              symbol: "="
          trailing_trivia:
            - start_position:
                bytes: 192
                line: 5
                character: 48
              end_position:
                bytes: 193
                line: 5
                character: 49
              token_type:
                type: Whitespace
                characters: " "
        declare_as:
          Basic:
            leading_trivia: []
            token:
              start_position:
                bytes: 193
                line: 5
                character: 49
              end_position:
                bytes: 196
                line: 5
                character: 52
              token_type:
                type: Symbol
                symbol: nil
            trailing_trivia:
              - start_position:
                  bytes: 196
                  line: 5
                  character: 52
                end_position:
                  bytes: 197
                  line: 5
                  character: 52
                token_type:
                  type: Whitespace
                  characters: "\n"
    - ~
  - - TypeDeclaration:
        type_token:
          leading_trivia: []
          token:
            start_position:
              bytes: 197
              line: 6
              character: 1
            end_position:
              bytes: 201
              line: 6
              character: 5
            token_type:
              type: Identifier
              identifier: type
          trailing_trivia:
            - start_position:
                bytes: 201
                line: 6
                character: 5
              end_position:
                bytes: 202
                line: 6
                character: 6
              token_type:
                type: Whitespace
                characters: " "
        base:
          leading_trivia: []
          token:
            start_position:
              bytes: 202
              line: 6
              character: 6
            end_position:
              bytes: 209
              line: 6
              character: 13
            token_type:
              type: Identifier
              identifier: Indexed
          trailing_trivia: []
        generics:
          arrows:
            tokens:
              - leading_trivia: []
                token:
                  start_position:
                    bytes: 209
                    line: 6
                    character: 13
                  end_position:
                    bytes: 210
                    line: 6
                    character: 14
                  token_type:
                    type: Symbol
                    symbol: "<"
                trailing_trivia: []
              - leading_trivia: []
                token:
                  start_position:
                    bytes: 214
                    line: 6
                    character: 18
                  end_position:
                    bytes: 215
                    line: 6
                    character: 19
                  token_type:
                    type: Symbol
                    symbol: ">"
                trailing_trivia:
                  - start_position:
                      bytes: 215
                      line: 6
                      character: 19
                    end_position:
                      bytes: 216
                      line: 6
                      character: 20
                    token_type:
                      type: Whitespace
                      characters: " "
          generics:
            pairs:
              - End:
                  parameter:
                    Variadic:
                      name:
                        leading_trivia: []
                        token:
                          start_position:
                            bytes: 210
                            line: 6
                            character: 14
                          end_position:
                            bytes: 211
                            line: 6
                            character: 15
                          token_type:
                            type: Identifier
                            identifier: T
                        trailing_trivia: []
                      ellipsis:
                        leading_trivia: []
                        token:
                          start_position:
                            bytes: 211
                            line: 6
                            character: 15
                          end_position:
                            bytes: 214
                            line: 6
                            character: 18
                          token_type:
                            type: Symbol
                            symbol: "..."
                        trailing_trivia: []
                  default: ~
        equal_token:
          leading_trivia: []
          token:
            start_position:
              bytes: 216
              line: 6
              character: 20
            end_position:
              bytes: 217
              line: 6
              character: 21
            token_type:
              type: Symbol
              symbol: "="
          trailing_trivia:
            - start_position:
                bytes: 217
                line: 6
                character: 21
              end_position:
                bytes: 218
                line: 6
                character: 22
              token_type:
                type: Whitespace
                characters: " "
        declare_as:
          Module:
            module:
              leading_trivia: []
              token:
                start_position:
                  bytes: 218
                  line: 6
                  character: 22
                end_position:
                  bytes: 224
                  line: 6
                  character: 28
                token_type:
                  type: Identifier
                  identifier: module
              trailing_trivia: []
            punctuation:
              leading_trivia: []
              token:
                start_position:
                  bytes: 224
                  line: 6
                  character: 28
                end_position:
                  bytes: 225
                  line: 6
                  character: 29
                token_type:
                  type: Symbol
                  symbol: "."
              trailing_trivia: []
            type_info:
              Generic:
                base:
                  leading_trivia: []
                  token:
                    start_position:
                      bytes: 225
                      line: 6
                      character: 29
                    end_position:
                      bytes: 232
                      line: 6
                      character: 36
                    token_type:
                      type: Identifier
                      identifier: Indexed
                  trailing_trivia: []
                arrows:
                  tokens:
                    - leading_trivia: []
                      token:
                        start_position:
                          bytes: 232
                          line: 6
                          character: 36
                        end_position:
                          bytes: 233
                          line: 6
                          character: 37
                        token_type:
                          type: Symbol
                          symbol: "<"
                      trailing_trivia: []
                    - leading_trivia: []
                      token:
                        start_position:
                          bytes: 237
                          line: 6
                          character: 41
                        end_position:
                          bytes: 238
                          line: 6
                          character: 42
                        token_type:
                          type: Symbol
                          symbol: ">"
                      trailing_trivia:
                        - start_position:
                            bytes: 238
                            line: 6
                            character: 42
                          end_position:
                            bytes: 239
                            line: 6
                            character: 42
                          token_type:
                            type: Whitespace
                            characters: "\n"
                generics:
                  pairs:
                    - End:
                        GenericPack:
                          name:
                            leading_trivia: []
                            token:
                              start_position:
                                bytes: 233
                                line: 6
                                character: 37
                              end_position:
                                bytes: 234
                                line: 6
                                character: 38
                              token_type:
                                type: Identifier
                                identifier: T
                            trailing_trivia: []
                          ellipsis:
                            leading_trivia: []
                            token:
                              start_position:
                                bytes: 234
                                line: 6
                                character: 38
                              end_position:
                                bytes: 237
                                line: 6
                                character: 41
                              token_type:
                                type: Symbol
                                symbol: "..."
                            trailing_trivia: []
    - ~

