(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: 65
                            stdin_parts: [('(let* ((x 2)\n') ('       (y x))\n') ('      y)\n')]
                          )
                        ]
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [55 66]
              )
            }
          spids: [54]
        )
      ]
      spids: [54]
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 2'))} 
      {(DQ (${ VSub_Name value))} {(DQ ('let* reading 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: 102
                            stdin_parts: [('(let* ((x 2))\n') ('      x\n') ('      (* 5 x))\n')]
                          )
                        ]
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [92 103]
              )
            }
          spids: [91]
        )
      ]
      spids: [91]
    )
    (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)})
  ]
)