(command.CommandList
  children: [
    (C {(Id.KW_Set set)} {(-o)} {(nounset)})
    (C {(Id.KW_Set set)} {(-o)} {(pipefail)})
    (C {(Id.KW_Set set)} {(-o)} {(errexit)})
    (command.ShFunction
      name: count-procs
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(Id.Lit_VarLike 'sh=') ($ Id.VSub_Number '$1')})
            (C {(local)} {(Id.Lit_VarLike 'code=') ($ Id.VSub_Number '$2')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:code)
                  op: assign_op.Equal
                  rhs: 
                    {(SQ (Token id:Id.Lit_Chars val:'echo "[pid-of-sh $$]";' span_id:71)) 
                      (DQ (' ') ($ Id.VSub_DollarName '$code'))
                    }
                  spids: [69]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Pipeline
                  children: [
                    (command.Simple
                      words: [
                        {(strace)}
                        {(-e)}
                        {(SQ (Token id:Id.Lit_Chars val:'trace=fork,execve' span_id:84))}
                        {(-e)}
                        {(SQ (Token id:Id.Lit_Chars val:'signal=none' span_id:90))}
                        {(-e)}
                        {(SQ (Token id:Id.Lit_Chars val:'verbose=none' span_id:96))}
                        {(-ff)}
                        {(--)}
                        {($ Id.VSub_DollarName '$sh')}
                        {(-c)}
                        {(DQ ($ Id.VSub_DollarName '$code'))}
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:113)
                          fd: 2
                          arg_word: {(1)}
                        )
                      ]
                    )
                    (C {(fgrep)} {(SQ (Token id:Id.Lit_Chars val:'[pid' span_id:121))})
                  ]
                  negated: F
                )
                (C {(true)})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: test-many
      body: 
        (command.BraceGroup
          children: [
            (command.ForEach
              iter_name: code
              iter_words: [{(DQ ($ Id.VSub_At '$@'))}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {(echo)})
                    (C {(echo)})
                    (C {(echo)} {(DQ ('--- ') ($ Id.VSub_DollarName '$code') (' ---'))})
                    (C {(echo)})
                    (command.ForEach
                      iter_name: sh
                      iter_words: [{(dash)} {(bash)} {(mksh)} {(zsh)}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (C {(echo)})
                            (C {(echo)})
                            (C {(echo)} {(DQ ('--- ') ($ Id.VSub_DollarName '$sh') (' ---'))})
                            (C {(echo)})
                            (C {(count-procs)} {($ Id.VSub_DollarName '$sh')} 
                              {(DQ ($ Id.VSub_DollarName '$code'))}
                            )
                          ]
                        )
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: t1
      body: 
        (command.BraceGroup
          children: [
            (C {(test-many)} {(SQ (Token id:Id.Lit_Chars val:'echo hi' span_id:236))} 
              {(SQ (Token id:Id.Lit_Chars val:'/bin/echo one; /bin/echo two' span_id:242))} {(SQ (Token id:Id.Lit_Chars val:'{ /bin/echo one; /bin/echo two; }' span_id:248))} 
              {(SQ (Token id:Id.Lit_Chars val:'{ echo one; echo two; } | wc -l' span_id:254))} {(SQ (Token id:Id.Lit_Chars val:'( echo one; echo two ) | wc -l' span_id:260))}
            )
          ]
        )
    )
    (C {(DQ ($ Id.VSub_At '$@'))})
  ]
)