(CommandList
  children: [
    (FuncDef
      name: source_bad_syntax
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {(_tmp/bad-syntax.sh)}
                  spids: [38]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {(DQ ('if foo; echo ls; fi\n'))}
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [41]
                )
              ]
            )
            (C {(.)} {(_tmp/bad-syntax.sh)})
          ]
          spids: [33]
        )
      spids: [29 32]
    )
    (FuncDef
      name: eval_bad_syntax
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:code)
                  op: Equal
                  rhs: {(SQ <'if foo; echo ls; fi'>)}
                  spids: [78]
                )
              ]
              spids: [76]
            )
            (C {(eval)} {(DQ ('echo --\n') ('        ') ($ VSub_Name '$code'))})
          ]
          spids: [73]
        )
      spids: [69 72]
    )
    (FuncDef
      name: no_such_command
      body: 
        (BraceGroup
          children: [
            (C {(set)} {(-o)} {(errexit)})
            (C {(ZZZZZ)})
            (C {(echo)} {(SQ <'SHOULD NOT GET HERE'>)})
          ]
          spids: [109]
        )
      spids: [105 108]
    )
    (FuncDef
      name: no_such_command_commandsub
      body: 
        (BraceGroup
          children: [
            (C {(set)} {(-o)} {(errexit)})
            (C {(echo)} 
              {
                (CommandSubPart
                  command_list: (CommandList children:[(C {(ZZZZZ)})])
                  left_token: <Left_CommandSub '$('>
                  spids: [148 150]
                )
              }
            )
            (C {(echo)} {(SQ <'SHOULD NOT GET HERE'>)})
          ]
          spids: [136]
        )
      spids: [132 135]
    )
    (FuncDef
      name: no_such_command_heredoc
      body: 
        (BraceGroup
          children: [
            (C {(set)} {(-o)} {(errexit)})
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: 
                    {
                      (DQ ('one\n') 
                        (CommandSubPart
                          command_list: (CommandList children:[(C {(ZZZZZ)})])
                          left_token: <Left_CommandSub '$('>
                          spids: [195 197]
                        ) ('\n') ('three\n')
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [191]
                )
              ]
            )
            (C {(echo)} {(SQ <'SHOULD NOT GET HERE'>)})
          ]
          spids: [166]
        )
      spids: [162 165]
    )
    (FuncDef
      name: failed_command
      body: 
        (BraceGroup
          children: [
            (C {(set)} {(-o)} {(errexit)})
            (C {(false)})
            (C {(echo)} {(SQ <'SHOULD NOT GET HERE'>)})
          ]
          spids: [215]
        )
      spids: [211 214]
    )
    (FuncDef
      name: pipefail
      body: 
        (BraceGroup
          children: [
            (Pipeline children:[(C {(false)}) (C {(wc)} {(-l)})] negated:F)
            (C {(set)} {(-o)} {(errexit)})
            (C {(set)} {(-o)} {(pipefail)})
            (Pipeline children:[(C {(false)}) (C {(wc)} {(-l)})] negated:F)
            (C {(echo)} {(SQ <'SHOULD NOT GET HERE'>)})
          ]
          spids: [242]
        )
      spids: [238 241]
    )
    (FuncDef
      name: pipefail_func
      body: 
        (BraceGroup
          children: [
            (C {(set)} {(-o)} {(errexit)} {(-o)} {(pipefail)})
            (FuncDef
              name: f
              body: 
                (BraceGroup
                  children: [(C {(cat)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(42)})]
                  spids: [310]
                )
              spids: [306 309]
            )
            (Pipeline children:[(C {(echo)} {(hi)}) (C {(f)}) (C {(wc)})] negated:F)
            (C {(echo)} {(SQ <'SHOULD NOT GET HERE'>)})
          ]
          spids: [292]
        )
      spids: [288 291]
    )
    (FuncDef
      name: pipefail_group
      body: 
        (BraceGroup
          children: [
            (C {(set)} {(-o)} {(errexit)} {(-o)} {(pipefail)})
            (Pipeline
              children: [
                (C {(echo)} {(hi)})
                (BraceGroup
                  children: [
                    (Sentence child:(C {(cat)}) terminator:<Op_Semi ';'>)
                    (Sentence
                      child: (C {(sh)} {(-c)} {(SQ <'exit 42'>)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [385]
                )
                (C {(wc)})
              ]
              negated: F
            )
            (C {(echo)} {(SQ <'SHOULD NOT GET HERE'>)})
          ]
          spids: [365]
        )
      spids: [361 364]
    )
    (FuncDef
      name: pipefail_subshell
      body: 
        (BraceGroup
          children: [
            (C {(set)} {(-o)} {(errexit)} {(-o)} {(pipefail)})
            (Pipeline
              children: [
                (C {(echo)} {(hi)})
                (Subshell
                  child: 
                    (CommandList
                      children: [
                        (Sentence child:(C {(cat)}) terminator:<Op_Semi ';'>)
                        (C {(sh)} {(-c)} {(SQ <'exit 42'>)})
                      ]
                    )
                  spids: [443 454]
                )
                (C {(wc)})
              ]
              negated: F
            )
            (C {(echo)} {(SQ <'SHOULD NOT GET HERE'>)})
          ]
          spids: [423]
        )
      spids: [419 422]
    )
    (FuncDef
      name: pipefail_while
      body: 
        (BraceGroup
          children: [
            (C {(set)} {(-o)} {(errexit)} {(-o)} {(pipefail)})
            (Pipeline
              children: [
                (C {(seq)} {(3)})
                (While
                  cond: [(Sentence child:(C {(true)}) terminator:<Op_Semi ';'>)]
                  body: 
                    (DoGroup
                      children: [
                        (C {(read)} {(line)})
                        (C {(echo)} {(X)} {($ VSub_Name '$line')} {(X)})
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (Sentence
                                  child: 
                                    (C {(test)} {(DQ ($ VSub_Name '$line'))} {(Lit_Other '=')} {(2)})
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              action: [(C {(sh)} {(-c)} {(SQ <'exit 42'>)})]
                              spids: [16777215 533]
                            )
                          ]
                          spids: [16777215 545]
                        )
                      ]
                      spids: [503 548]
                    )
                )
                (C {(wc)})
              ]
              negated: F
            )
            (C {(echo)} {(SQ <'SHOULD NOT GET HERE'>)})
          ]
          spids: [478]
        )
      spids: [474 477]
    )
    (FuncDef
      name: pipefail_multiple
      body: 
        (BraceGroup
          children: [
            (C {(set)} {(-o)} {(errexit)} {(-o)} {(pipefail)})
            (Pipeline
              children: [
                (BraceGroup
                  children: [
                    (Sentence
                      child: (C {(echo)} {(SQ <four>)})
                      terminator: <Op_Semi ';'>
                    )
                    (Sentence
                      child: (C {(sh)} {(-c)} {(SQ <'exit 4'>)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [586]
                )
                (BraceGroup
                  children: [
                    (Sentence
                      child: (C {(echo)} {(SQ <five>)})
                      terminator: <Op_Semi ';'>
                    )
                    (Sentence
                      child: (C {(sh)} {(-c)} {(SQ <'exit 5'>)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [609]
                )
                (BraceGroup
                  children: [
                    (Sentence
                      child: (C {(echo)} {(SQ <six>)})
                      terminator: <Op_Semi ';'>
                    )
                    (Sentence
                      child: (C {(sh)} {(-c)} {(SQ <'exit 6'>)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [632]
                )
              ]
              negated: F
            )
          ]
          spids: [572]
        )
      spids: [568 571]
    )
    (FuncDef
      name: control_flow
      body: 
        (BraceGroup
          children: [
            (ControlFlow token:<ControlFlow_Break break>)
            (ControlFlow token:<ControlFlow_Continue continue>)
            (C {(echo)} {(SQ <'SHOULD NOT GET HERE'>)})
          ]
          spids: [662]
        )
      spids: [658 661]
    )
    (FuncDef
      name: nounset
      body: 
        (BraceGroup
          children: [
            (C {(set)} {(-o)} {(nounset)})
            (C {(echo)} {($ VSub_Name '$x')})
            (C {(echo)} {(SQ <'SHOULD NOT GET HERE'>)})
          ]
          spids: [695]
        )
      spids: [691 694]
    )
    (FuncDef
      name: nounset_arith
      body: 
        (BraceGroup
          children: [
            (C {(set)} {(-o)} {(nounset)})
            (C {(echo)} {(ArithSubPart anode:(ArithVarRef name:x) spids:[746 751])})
            (C {(echo)} {(SQ <'SHOULD NOT GET HERE'>)})
          ]
          spids: [734]
        )
      spids: [730 733]
    )
    (FuncDef
      name: divzero
      body: 
        (BraceGroup
          children: [
            (C {(echo)} 
              {
                (ArithSubPart
                  anode: 
                    (ArithBinary
                      op_id: Arith_Slash
                      left: (ArithWord w:{(Lit_Digits 1)})
                      right: (ArithWord w:{(Lit_Digits 0)})
                    )
                  spids: [773 782]
                )
              }
            )
            (C {(echo)} {(SQ <'SHOULD NOT GET HERE'>)})
          ]
          spids: [768]
        )
      spids: [764 767]
    )
    (FuncDef
      name: divzero_var
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:zero) op:Equal rhs:{(0)} spids:[804])]
              spids: [802]
            )
            (C {(echo)} 
              {
                (ArithSubPart
                  anode: 
                    (ArithBinary
                      op_id: Arith_Slash
                      left: (ArithWord w:{(Lit_Digits 1)})
                      right: (ArithVarRef name:zero)
                    )
                  spids: [810 819]
                )
              }
            )
            (C {(echo)} {(SQ <'SHOULD NOT GET HERE'>)})
          ]
          spids: [799]
        )
      spids: [795 798]
    )
    (FuncDef
      name: string_to_int_arith
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:x) op:Equal rhs:{(SQ <ZZZ>)} spids:[844])]
              spids: [842]
            )
            (C {(echo)} 
              {
                (ArithSubPart
                  anode: 
                    (ArithBinary
                      op_id: Arith_Plus
                      left: (ArithVarRef name:x)
                      right: (ArithWord w:{(Lit_Digits 5)})
                    )
                  spids: [852 861]
                )
              }
            )
            (C {(set)} {(-o)} {(strict-arith)})
            (C {(echo)} 
              {
                (ArithSubPart
                  anode: 
                    (ArithBinary
                      op_id: Arith_Plus
                      left: (ArithVarRef name:x)
                      right: (ArithWord w:{(Lit_Digits 5)})
                    )
                  spids: [875 884]
                )
              }
            )
            (C {(echo)} {(SQ <'SHOULD NOT GET HERE'>)})
          ]
          spids: [839]
        )
      spids: [835 838]
    )
    (FuncDef
      name: string_to_hex
      body: 
        (BraceGroup
          children: [
            (C {(echo)} 
              {
                (ArithSubPart
                  anode: 
                    (ArithBinary
                      op_id: Arith_Plus
                      left: (ArithWord w:{(Lit_Digits 0) (Lit_ArithVarLike xGG)})
                      right: (ArithWord w:{(Lit_Digits 1)})
                    )
                  spids: [909 919]
                )
              }
            )
            (C {(echo)} {(SQ <'SHOULD NOT GET HERE'>)})
          ]
          spids: [904]
        )
      spids: [900 903]
    )
    (FuncDef
      name: string_to_octal
      body: 
        (BraceGroup
          children: [
            (C {(echo)} 
              {
                (ArithSubPart
                  anode: 
                    (ArithBinary
                      op_id: Arith_Plus
                      left: (ArithWord w:{(Lit_Digits 018)})
                      right: (ArithWord w:{(Lit_Digits 1)})
                    )
                  spids: [944 953]
                )
              }
            )
            (C {(echo)} {(SQ <'SHOULD NOT GET HERE'>)})
          ]
          spids: [939]
        )
      spids: [935 938]
    )
    (FuncDef
      name: string_to_intbase
      body: 
        (BraceGroup
          children: [
            (C {(echo)} 
              {
                (ArithSubPart
                  anode: (ArithWord w:{(Lit_Digits 16) (Lit_Pound '#') (Lit_ArithVarLike GG)})
                  spids: [978 985]
                )
              }
            )
            (C {(echo)} {(SQ <'SHOULD NOT GET HERE'>)})
          ]
          spids: [973]
        )
      spids: [969 972]
    )
    (FuncDef
      name: string_to_int_bool
      body: 
        (BraceGroup
          children: [
            (DBracket expr:(BoolBinary op_id:BoolBinary_eq left:{(a)} right:{(0)}))
            (C {(set)} {(-o)} {(strict-arith)})
            (DBracket expr:(BoolBinary op_id:BoolBinary_eq left:{(a)} right:{(0)}))
            (C {(echo)} {(SQ <'SHOULD NOT GET HERE'>)})
          ]
          spids: [1015]
        )
      spids: [1011 1014]
    )
    (FuncDef
      name: _run_test
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:t)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [1077]
                )
              ]
              spids: [1075]
            )
            (C {(echo)} {(DQ (--------))})
            (C {(echo)} {(DQ ('    CASE: ') ($ VSub_Name '$t'))})
            (Subshell child:(C {($ VSub_Name '$t')}) spids:[1101 1105])
            (C {(echo)} {(DQ ('    STATUS: ') ($ VSub_QMark '$?'))})
            (C {(echo)})
          ]
          spids: [1072]
        )
      spids: [1068 1071]
    )
    (FuncDef
      name: all
      body: 
        (BraceGroup
          children: [
            (C {(_run_test)} {(control_flow)})
            (ForEach
              iter_name: t
              iter_words: [
                {(no_such_command)}
                {(no_such_command_commandsub)}
                {(no_such_command_heredoc)}
                {(failed_command)}
                {(pipefail)}
                {(pipefail_group)}
                {(pipefail_subshell)}
                {(pipefail_func)}
                {(pipefail_while)}
                {(nonexistent)}
                {(nounset)}
                {(nounset_arith)}
                {(divzero)}
                {(divzero_var)}
                {(string_to_int_arith)}
                {(string_to_hex)}
                {(string_to_octal)}
                {(string_to_intbase)}
                {(string_to_int_bool)}
              ]
              do_arg_iter: F
              body: (DoGroup children:[(C {(_run_test)} {($ VSub_Name '$t')})] spids:[1198 1207])
              spids: [1144 1196]
            )
          ]
          spids: [1125]
        )
      spids: [1121 1124]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)