(CommandList
  children: [
    (C {(.)} 
      {
        (BracedVarSub
          token: <VSub_Name BASH_SOURCE>
          suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')})
          spids: [6 11]
        ) (/test.sh)
      }
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:value)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (SimpleCommand
                        words: [{(../lishp.sh)}]
                        redirects: [
                          (HereDoc
                            op: <Redir_DLess '<<'>
                            fd: 16777215
                            here_begin: {(EOF)}
                            here_end_span_id: 28
                            stdin_parts: [('(let ((x 2))\n') ('     x)\n')]
                          )
                        ]
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [19 29]
              )
            }
          spids: [18]
        )
      ]
      spids: [18]
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 2'))} 
      {(DQ (${ VSub_Name value))} {(DQ ('Basic let'))}
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:value)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (SimpleCommand
                        words: [{(../lishp.sh)}]
                        redirects: [
                          (HereDoc
                            op: <Redir_DLess '<<'>
                            fd: 16777215
                            here_begin: {(EOF)}
                            here_end_span_id: 64
                            stdin_parts: [('(let ((x (+ 1 3)))\n') ('     x)\n')]
                          )
                        ]
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [55 65]
              )
            }
          spids: [54]
        )
      ]
      spids: [54]
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 4'))} 
      {(DQ (${ VSub_Name value))} {(DQ ('let with expression'))}
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:value)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (SimpleCommand
                        words: [{(../lishp.sh)}]
                        redirects: [
                          (HereDoc
                            op: <Redir_DLess '<<'>
                            fd: 16777215
                            here_begin: {(EOF)}
                            here_end_span_id: 101
                            stdin_parts: [('(let ((x 2)\n') ('      (y x))\n') ('     y)\n')]
                          )
                        ]
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [91 102]
              )
            }
          spids: [90]
        )
      ]
      spids: [90]
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ (1))} {(DQ ($ VSub_QMark '$?'))} 
      {(DQ ('let failing to read previous values'))}
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:value)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (SimpleCommand
                        words: [{(../lishp.sh)}]
                        redirects: [
                          (HereDoc
                            op: <Redir_DLess '<<'>
                            fd: 16777215
                            here_begin: {(EOF)}
                            here_end_span_id: 136
                            stdin_parts: [('(let ((x 2))\n') ('     x\n') ('     (* 5 2))\n')]
                          )
                        ]
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [126 137]
              )
            }
          spids: [125]
        )
      ]
      spids: [125]
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 10'))} 
      {(DQ (${ VSub_Name value))} {(DQ ('let returning last value'))}
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (report)})
  ]
)